Seit Erscheinen desRaspberry Pi bin ich von den Möglichkeiten des kleinen Linux-Rechners begeistert und denke über Einsatzmöglichkeiten nach. Eine Projekt-Idee die ich im Internet gefunden habe, ist der Anschluss meinerOregon Wetterstation am USB-Port des RasPi. Nach Installation des weewx-Paketes ist mir bewußt geworden, dass der Raspberry mangels RTC-Bausteins keine eigene Uhrzeit hat.
Auch hier bietet die Internetsuche Abhilfe: ein kleiner I²C-Baustein mit einem DS1307-IC liefert Knopfzellen-gepuffert das aktuelle Datum und die aktuelle Uhrzeit.
RTC-Modul für den Raspberry Pi Foto: Harry Kellner
Die Realtime Clock (RTC DS1307) für den Raspberry Pi gibt es günstig im Online-Handel oder bei Auktionsplattformen. Normalerweise wird die aktuelle Uhrzeit über das Internet mit einem ntp-Dienst synchronisiert. Wenn jedoch kein Netzwerk zur Verfügung steht und der RasPi dennoch die aktuelle Uhrzeit benötigt, kommt ein RTC-Modul zum Einsatz. Das RTC-Modul hat einen eigenen Quarz, der den Takt der Uhr vorgibt, und eine 3,6V Knopfzelle (Typ LIR2032), die den Baustein puffert. Dadurch läuft dieses Modul und somit auch die Uhrzeit weiter, auch wenn der Raspberry Pi ausgeschaltet ist.
Benötigt wird ein Raspberry Pi Modell A oder B, ein Tiny RTC-Modul (I²C RTC DS1307), vier Verbindungskabel, ein Lötkolben, sowie etwas Werkzeug. Hier meine kleine Anleitung, basierend auf diversen Informationen im Internet und der eigenen Umbauerfahrung.
Schritt 1: Hardware
Damit das RTC-Modul am Raspberry Pi funktioniert, müssen vorher zwei SMD-Widerstände (R2 und R3) entfernt werden. Um das Modul auch auf einem Steckbrett (Breadboard) nutzen zu können, kann auch noch eine zusätzliche Stiftleiste angelötet werden.
Wichtig! Diese Widerstände müssen entfernt werden, da sonst der Raspberry Pi beschädigt werden könnte.
Für die Verkabelung sind die folgenden vier Verbindungen herzustellen:
---------------------------
RPI GPIO RTC
---------------------------
Pin 2 5V VCC
Pin 3 SDA SDA
Pin 5 SCL SCL
Pin 6 GND GND
---------------------------
Schritt 2: Software
Wie bei fast allen Erweiterungen am Raspberry Pi wird als erstes das System mit folgenden Befehlen aktualisiert:
sudo apt-get update sudo apt-get upgrade
WICHTIG: Als erstes wird das Paket "i2c-tools" installiert und man braucht sudo-Rechte für die weiteren Schritte.
sudo apt-get install i2c-tools sudo bash cd
Nun mit einem Editor die Datei "raspi-blacklist.conf" editieren um den I²C-Bus zu aktivieren:
nano /etc/modprobe.d/raspi-blacklist.conf
Die Zeilen "blacklist spi-bcm2708" und "blacklist i2c-bcm2708" werden mit "#" auskommentiert.
# blacklist spi and i2c by default (many users don't need them) #blacklist spi-bcm2708 #blacklist i2c-bcm2708
Jetzt wird festgelegt, welche Module beim Starten automatisch geladen werden sollen.
nano /etc/modules
Dort werden folgende Module eingetragen:
snd-bcm2835 spi-bcm2708 i2c-bcm2708 i2c-dev rtc-ds1307
Schritt 3: Testen
Es werden folgende Module geladen:
modprobe i2c_bcm2708 modprobe i2c_dev modprobe rtc-ds1307
Jetzt wird überprüft, ob das RTC-Modul am I²C-Bus angezeigt wird. Bei Eingabe von
i2cdetect -y 1
sollte folgendes angezeigt werden:
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: -- -- -- -- -- -- -- --
Das Modul wurde unter der Adresse 68 gefunden. Unter der Adresse 50 verbirgt sich ein nichtflüchtiger Speicher, der ebenfalls auf dem Modul verbaut ist.
Falls der I²C-Bus nicht funktioniert, ggf. über
sudo raspi-config
in den Menüpunkten "8 Advanced Options / A6 SPI" und "8 Advanced Options / A7 I2C" den SPI- und I²C-Bus aktivieren.
Nun wird die Verbindung zur Uhr getestet. Wenn das klappt, sollten mit diesen drei Befehlen jeweils Sekunden, Minuten und Stunden anzeigt werden:
i2cget -y 1 0x68 0
i2cget -y 1 0x68 1
i2cget -y 1 0x68 2
Schritt 4: Uhrenmodul in das System einbinden und mit "hwclock" aufrufen
Jetzt die Uhr in das System einbinden und testen.
sudo bash echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
Mit dem "hwclock"-Befehl kann die Zeit des RTC-Moduls ausgelesen werden
hwclock -r
und liefert als Ergebnis z.B.
Mi 05 Feb 2014 22:18:00 CET -0.552310 seconds
Falls die Uhrzeit nicht korrekt ist, kann mit dem "date"-Befehl die Systemzeit angezeigt und bei Bedarf mit
date -s '02/05/2014 22:18:00'
gesetzt werden. Danach die Systemzeit mit
hwclock -w
übernehmen und erneut überprüfen.
hwclock -r
Schritt 5: RTC Uhrzeit dauerhaft einbinden
Mit einem Editor die Datei "rc.local" anpassen.
sudo nano /etc/rc.local
Vor der Zeile
exit 0
ist Folgendes einzufügen:
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device sudo hwclock -s
Der Befehl
hwclock -s
setzt die RTC-Zeit als Systemzeit.
Nach einem Neustart mit Reboot des RasPi kann die Uhr mit
sudo hwclock -r
abgefragt werden und ab sofort sollte die Systemzeit immer aktuell sein.
Mi 05 Feb 2014 22:20:00 CET -0.145317 seconds
Quellen:
https://www.forum-raspberrypi.de/Thread-tutorial-realtime-clock-rtc-ds1307-am-raspberry-pi-betreiben