Realtime Clock (RTC DS3231) 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 (DS3231) 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.

 

 

Was wird benötigt?

Das Modul hat bereits aufgelötete Steckbrücken, so dass es einfach nur auf die GPIO-Schnittstelle des Raspberry gesteckt werden kann. Sehr praktisch, da keinerlei Lötarbeiten notwendig werden. Aber dafür gibt es einen kleinen Haken: Der kleine gelbe Knopf ist kein Hochleistungskondensator oder gar ein Akku, sondern nur eine einfache CR2032H Knopfzelle. Diese hat eine maximale Lebensdauer von rund einem Jahr. Spätestens wenn die Uhr nachgeht sollte man sich über Ersatz Gedanken machen. Leider ist dieser Typ nur schwer im Handel zu bekommen, aber mit die CR2032 in einer größeren Bauform gibt es für wenige Cents im Handel. Diese haben dann auch eine höhere Kapazität und dadurch eine erheblich längere Lebensdauer.
Alternative: Realtime Clock (RTC DS1307)

Software installieren und konfigurieren

Nachdem das DS3231 Modul auf den Raspberry gesteckt wurde, 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 i2c-dev
#blacklist i2c-bcm2708

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

sudo vi /etc/modules
i2c-bcm2708
i2c-dev

Testing

Manuelles Laden der Module

modprobe i2c_bcm2708
modprobe i2c_dev

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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Die RTC wurde als unter der Adresse 0x68h gefunden.

Wir binden die Uhr in das System ein

echo ds3231 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 ds3231 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s

1 Kommentar

  1. Stefan Hauser

    Schöne Anleitung.
    Was muss ich denn machen, wenn ich herausfinden will ob eine gültige Zeit eines ntp-Servers vorliegt, oder ob der Raspi längere Zeit stromlos war und die Netzwerkverbindung ausgefallen ist?

    Antworten

Schreibe einen Kommentar zu Stefan Hauser Antworten abbrechen

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

 
x