RTC anschließen und konfigurieren

Aus MedDoser Wiki
Wechseln zu: Navigation, Suche

Damit das RaspberryPi auch nach längerer Zeit im ausgeschalteten Zustand die korrekte Systemzeit anzeigt, muss es beim Booten entweder eine Internetverbindung haben und über das NTP-Protokoll die lokale Zeit aktualisieren, oder man schließt ein RTC-Modul (Real-Time-Clock) an.

Es existieren verschiedene Modelle auf dem Markt. Für das vorliegende RaspberryPi Model 3 B scheint folgender Artikel von AZ-Delivery gut geeignet zu sein:

DS3231 RTC Real Time Clock 

Das Modul besitzt sechs Pins, vier davon müssen mit den GPIO-Pins des Raspberry verbunden werden.

Folgendes Diagramm zeigt die Belegung der Pins eines Raspberry 3 Model B (Quelle):

Raspberry-pi-15b.jpg

Da es sich um das DS3231-Modul handelt, muss der VCC-Pin an einen 3.3V-Ausgang angeschlossen werden.

Dieser Blogeintrag erklärt das Vorgehen genauer. Befolgt man alle Anweisungen darin, ist man fast am Ziel.

In unserem Fall baute das Raspberry jedoch keine dauerhafte Verbindung zum RTC-Modul auf. Zu Testzwecken lief lief der Befehl

sudo hwclock -D -r

zum Abfragen der Zeit aus dem RTC-Modul sporadisch ins Leere.

Damit das automatische Starten der Software (Definiert in der Datei /etc/rc.local) auch bei einer negativen Antwort auf den Synchronisationsbefehl noch funktioniert, hilft folgender Workaround:

Durch das Einbauen einer While-Schleife vor dem Aufruf der eigentlichen Anwendung MedDoser wartet das Boot-Skript mit der weiteren Ausführung so lange, bis die lokale Systemzeit korrekt vom RTC-Modul gelesen wurde. Der Befehl hwclock -s sorgt dafür, dass die Zeit des RTC-Moduls mit der lokalen Systemzeit überschrieben (synchronisiert) wird:

while ! hwclock -s
do
   echo "Failed to sync RTC to local time."
done
   echo "Successfully synced RTC to local time"

Der im obigen Blogbeitrag empfohlene Befehl

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

funktioniert in unserem Szenario nicht und kann daher aus der Datei /etc/rc.local auskommentiert bzw. entfernt werden.

Es ist wichtig, dass einmalig die korrekte Systemzeit (z.B. bei bestehender Internetverbindung) auf das RTC-Modul geschrieben wird. Ob die lokale Systemzeit richtig ist, kann mit folgendem Befehl überprüft werden:

date

Das Schreiben der lokalen Zeit auf das RTC-Modul geschieht mit folgendem Befehl:

sudo hwclock -w