Seit Erscheinen desWikipedia-EintragRaspberry 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 meinerinterner LinkOregon 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

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