Realtime Clock (RTC DS1307) am Raspberry Pi betreiben

Eine Echtzeituhr (Realtime Clock – RTC) misst die physikalische Uhrzeit mittels eines Quarzes, der den Takt der Uhr vorgibt. Ein entsprechender Chip (DS1307) berechnet daraus die aktuelle Uhrzeit. Der Rechner zu Hause oder ein Server, der ständig mit dem Internet verbunden ist, synchronisieren die Uhrzeit i.d.R. via ntp. Steht jedoch kein Netzwerk zur Verfügung so muss man zu einer RTC greifen, wenn man die aktuelle Uhrzeit benötigt. Dieses Modul hat eine 3,6V Lithium Ion Batterie verbaut, die das Modul aus bei ausgeschaltetem Raspberry Pi mit Strom versorgt.

 

 

Was wird benötigt?

Vorbereitungen am Modul

Damit das Modul am Raspberry Pi funktioniert, müssen zwei Pull-Up Widerstände (R2 und R3 – gelb markiert) mit Hilfe des Lötkolbens entlötet (entfernt) werden. Zusätzlich sollte gleich noch eine Stiftleiste eingelötet werden, damit das Modul zum Beispiel auf einem Breadboard genutzt oder per Steckbrücken verbunden werden kann.

RTC_DS1307

Tiny RTC I2C Modul DS1307

GPIO-Belegung:

RPI GPIO   | RTC P1 
-------------------
Pin 2 5V   |   VCC  
Pin 3 SDA  |   SDA  
Pin 5 SCL  |   SCL  
Pin 6 GND  |   GND  

Software installieren und konfigurieren

Nachdem der Raspberry mit dem DS1307 verkabelt ist, sollte dieser als erstes aktualisiert

sudo apt-get update
sudo apt-get upgrade

und der I2C-Treiber über

sudo raspi-config

aktiviert werden. Hier unter „Advanced Options“ den Punkt „I2C“ aufrufen und alle Punkte aktivieren. Danach muss der Raspberry neu gestartet werden, was auch gemacht werden sollte, damit die entsprechenden Treiber auch zur Verfügung stehen.

Ist der Raspberry wieder da, kann das Paket i2c-tools installiert werden

sudo apt-get install i2c-tools

Ältere Distributionen haben noch eine aktive Blacklist für SPI und I2C. Diese sollte bereinigt werden indem die folgenden Zeilen auskommentiert werden:

sudo vi /etc/modprobe.d/raspi-blacklist.conf
#blacklist spi-bcm2708
#blacklist i2c-bcm2708

Als nächstes wird festgelegt, welche Module beim Starten automatisch geladen werden sollen:

sudo vi /etc/modules
snd-bcm2835
spi-bcm2708
i2c-bcm2708
i2c-dev
rtc-ds1307

Testing

Manuelles Laden der Module

modprobe i2c_bcm2708
modprobe i2c_dev
modprobe rtc-ds1307

Mittels des Befehls

i2cdetect -y 1

kann geprüft werden, ob die RTC am I2C-Bus angezeigt wird.

Die Ausgabe sollte so aussehen:
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Die RTC wurde als unter der Adresse 68 gefunden. Unter der Adresse 50 ist ein weiterer Speicher verbaut, der aber keine Relevanz hat.

Wir binden die Uhr in das System ein

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device

und sollten durch Eingabe von

hwclock -r

folgende Ausgabe bekommen:

Wed 08 Jul 2015 14:23:15 UTC  -0.641564 seconds

Rebootsicher machen

Damit auch nach dem nächsten Systemstart die Uhr wieder eingebunden wird, muss in der Datei

sudo vi /etc/rc.local

folgendes vor „exit 0“ hinzugefügt werden:

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

 
x