RTC DS1307 Modul am Raspberry Pi – Die richtige Uhrzeit ohne Internet

Raspi Gpio Rtc1 – RTC DS1307 Modul am Raspberry Pi – Die richtige Uhrzeit ohne Internet

Normalerweise holt sich der Raspberry Pi die aktuelle Uhrzeit beim Start über das Netzwerk (NTP). Wenn jedoch kein Internet zur Verfügung steht – zum Beispiel in einem autonomen Sensor-Projekt oder einer Offline-Installation – bleibt die Systemuhr nach dem Einschalten falsch. Die Lösung: ein RTC-Modul (Real Time Clock). Das DS1307-Modul hat einen eigenen Quarz und eine Knopfzelle, läuft also unabhängig weiter, auch wenn der Pi ausgeschaltet ist.

Tipp: Wer die Zeit über GPS beziehen möchte, findet dazu unseren Artikel: Raspberry Pi Uhrzeit über GPS beziehen.

DS1307 -2 DS1307

Benötigte Hardware

DS1307 vs. DS3231: Der DS1307 ist günstig, geht aber temperaturabhängig einige Sekunden vor oder nach. Wer sekundengenaue Zeit braucht, greift besser zum DS3231 – der ist temperaturkompensiert und deutlich genauer. Die Einrichtung beider Module ist identisch, nur der dtoverlay-Name unterscheidet sich (siehe unten).

Das RTC-Modul verkabeln

Bevor ihr das Modul anschließt: Auf manchen DS1307-Modulen müssen die Widerstände R2 und R3 entfernt werden. Diese Pull-up-Widerstände könnten sonst zu Konflikten mit den internen Pull-ups des Raspberry Pi führen und ihn im schlimmsten Fall beschädigen. Entlötet sie daher vorsichtig.

RTC-Resistors

Verbindet das RTC-Modul mit dem abgeschalteten Raspberry Pi wie folgt:

Raspberry Pi GPIO-Pin RTC-Modul Pin (P1)
Pin 2 (5V) VCC
Pin 3 (SDA) SDA
Pin 5 (SCL) SCL
Pin 6 (GND) GND

RasPi-GPIO-RTC

I2C aktivieren per raspi-config

I2C muss aktiviert sein, damit der Pi mit dem RTC-Modul kommunizieren kann. Den einfachsten Weg bietet raspi-config:

Navigiert zu 3 Interface Options → I5 I2C, bestätigt mit Yes und startet neu:

Nach dem Neustart prüft ihr, ob das RTC-Modul erkannt wird:

Der DS1307 sollte unter Adresse 68 erscheinen:

RTC in /boot/firmware/config.txt eintragen

Damit der Raspberry Pi das DS1307-Modul automatisch beim Start einbindet, fügen wir ein Device Tree Overlay in die Konfigurationsdatei ein. Seit Raspberry Pi OS Bookworm lautet der Pfad /boot/firmware/config.txt:

Fügt am Ende der Datei folgende Zeile hinzu:

Für den DS3231 lautet die Zeile entsprechend:

Speichert mit STRG+X, Y, Enter und startet neu:

Hinweis: Der früher verwendete Hack mit /etc/rc.local (manuelles echo ds1307 0x68 > /sys/class/i2c-adapter/...) ist unter Bookworm nicht mehr nötig. Das dtoverlay erledigt das vollautomatisch beim Systemstart.

fake-hwclock deaktivieren

Raspberry Pi OS installiert standardmäßig fake-hwclock, der beim Herunterfahren die letzte Systemzeit auf der SD-Karte speichert und beim nächsten Start wiederherstellt. Mit einem echten RTC-Modul brauchen wir das nicht mehr – im Gegenteil, es kann die Zeit der Hardware-Uhr überschreiben. Entfernt es daher:

Uhr testen und stellen

Nach dem Neustart lest ihr die aktuelle Zeit der RTC aus:

Beim ersten Mal wird die Uhr wahrscheinlich falsch gehen (oft Januar 2000). Prüft zuerst die Systemzeit:

Wenn der Pi Internetzugang hat, ist die Systemzeit durch NTP bereits korrekt. Schreibt sie nun in das RTC-Modul:

Zur Kontrolle lest ihr nochmal aus:

Ab sofort liest der Raspberry Pi beim Start automatisch die Zeit aus dem RTC-Modul – auch ohne Internetverbindung.

Zeitzone einstellen

Falls die Zeitzone noch nicht korrekt eingestellt ist, erledigt ihr das am einfachsten über raspi-config:

Navigiert zu 5 Localisation Options → L2 Timezone und wählt eure Zeitzone (z.B. Europe/Berlin). Alternativ direkt per Kommandozeile:

Den aktuellen Status (Systemzeit, RTC-Zeit, NTP-Status) prüft ihr mit:

Damit ist eure RTC vollständig eingerichtet – der Pi kennt jetzt auch ohne Internet immer die korrekte Uhrzeit.

Ähnliche Beiträge