Auf Ebay habe ich ein günstiges (1,80€ inkl. Versand) RealTimeClock Modul gefunden.
In diesem Tutorial möchte ich euch zeigen wie ihr dieses Modul mit dem Raspberry Pi betreibt.
RTC Modul
Warum eine RTC?
Eine Echtzeituhr (realtimeclock) misst die physikalische Uhrzeit. Eine RTC hat einen Quarz der den Takt der Uhr vorgibt. Ein Chip (hier DS1307) berechnet daraus sie aktuelle Uhrzeit.
Normalerweise wird die aktuelle Uhrzeit über das Internet via ntp synchronisiert. Wenn jedoch kein Netzwerk zur Verfügung steht und man eine aktuelle Uhrzeit benötigt greift man zu einer RTC.
Dieses Modul hat eine 3,6V Lithium Ion Batterie verbaut. Dadurch läuft dieses Modul, und somit auch die Uhrzeit, weiter wenn der Raspberry Pi ausgeschaltet ist.
Was wird benötigt?
- Raspberry Pi Modell A oder B
- Tiny RTC Modul (I2C RTC DS1307) Ebay(sehr lange Lieferzeiten) DS1307 wirklich Zeit Modul Arduino (Affiliate-Link) oder Big Bargain Arduino DS1307 AT24C32 (Affiliate-Link)
- SD-Karte mit aktuellen Raspbian installiert
- einen Lötkolben sowie Hilfsmittel
Kommen wir nun zu der Anleitung:
Schritt 1: Widerstände des RTC Moduls entlöten und anschließen.
Damit das Modul mit dem Raspberry Pi funktioniert müssen zwei PullUp Widerstände (R2 und R3) entfernt werden.
Diese entlöten wir mit Hilfe des Lötkolbens. Zusätzlich kann man noch eine Stiftleiste verlöten, damit man das Modul zum Beispiel auf einem Steckbrett/Breadboard nutzten kann.
Wichtig! Die Widerstände müssen entlötet werden, da die 5V den Raspberry Pi schwer beschädigen könnten.
angepasstest Modul (R2 und R3 ausgelötet sowie Stiftleiste hinzugefügt)
Nun könnt ihr das Modul an den ausgeschalteten Raspberry Pi anschließen.
#--------------------#
| RPI GPIO | RTC P1 |
|-----------|--------|
|Pin 2 5V | VCC |
|Pin 3 SDA | SDA |
|Pin 5 SCL | SCL |
|Pin 6 GND | GND |
#--------------------#
Verkabelung
Schritt 2: Software konfigurieren.
Unter Umständen kann es nötig sein "Expand filesystem" auszuführen!
Den Raspberry Pi nach Überprüfung der Verkabelung starten.
Als erstes aktualisieren wir das System mit folgenden Befehlen:
WICHTIG: Als nächstes installieren wir das Paket "i2c-tools" und holen wir uns sudo Rechte für die nächsten Schritte:
Nun aktivieren wir I²C
nun kommentieren wir "spi-bcm2708" und "i2c-bcm2708" aus. So sollte eure Datei nun aussehen:
# blacklist spi and i2c by default (many users don't need them)
#blacklist spi-bcm2708
#blacklist i2c-bcm2708
Als nächstes legen wir fest, welche Module beim starten automatisch geladen werden sollen.
Dort tragen wir folgende Module ein:
Schritt 3: Testen
Wir laden folgende Module:
Jetzt schauen wir ob die RTC am i2c Bus angezeigt wird.
dazu geben wir folgenden Befehl ein:
Für die Rev 1 gebt ihr "i2cdetect -y 0" ein.
Ihr solltet folgendes sehen:
root@raspberrypi:~# i2cdetect -y 0
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: -- -- -- -- -- -- -- --
Die Uhr wurde als unter der Adresse 68 gefunden. Unter der Adresse 50 verbirgt sich ein nichtflüchtiger Speicher, der ebenfalls auf dem Modul verbaut ist. Dieser interessiert uns aber nicht weiter.
Nun testen wir die Verbindung zur Uhr:
Wenn das klappt sollte er euch die Sekunden, Minuten und Stunden wie folgt anzeigen
root@raspberrypi:~# i2cget -y 1 0x68 0
0x38
root@raspberrypi:~# i2cget -y 1 0x68 1
0x16
root@raspberrypi:~# i2cget -y 1 0x68 2
0x16
Schritt 4: Uhr in das System einbinden und mit hwclock testen
- echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device für Rev 1
Mit dem Befehl "hwclock -r" können wir nun die Zeit der RTC auslesen.
Falls die Uhrzeit nicht korrekt ist, könnt ihr mit dem Befehl "date" die Systemzeit anzeigen lassen und bei Bedarf mit "hwclock -w" die RTC Zeit auf die System zeit setzten. Mit "hwclock -r" könnt ihr es überprüfen.
Am besten studiert ihr die manpage zu hwclock.
Schritt 5: RTC Uhrzeit dauerhaft einbinden
Ihr fügt vor exit 0 folgendes ein:
- hwclock -s setzt die RTC Zeit als Systemzeit
- echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device für Rev 1
Nach einem Neustart "reboot" testet ihr die Uhr mit "sudo hwclock -r"
Ab sofort sollte eure Systemzeit immer aktuell sein. Natürlich rate ich euch die korrekte Zeitzone einzustellen. Im Moment ist diese noch auf "UTC" eingestellt. über "sudo raspi-config" könnt ihr diese auf die korrekte Zeitzone einstellen.