Schlagwort-Archiv: hwclock

DS1307 RTC am Raspberry Pi

Heute will ich euch zeigen, wie man das Real-Time-Clock-Module „Tiny RTC – DS1307“ am Raspberry Pi betreiben kann. Raspberry Pi hat keine RTC und holt sich die aktuelle Uhrzeit über das Internet via ntp. Damit die Uhrzeit auch ohne Internet zur Verfügung steht, ist das Modul eine kostengünstige Lösung.

Als erstes wird i2c-tools benötigt:

apt-get install i2c-tools

Ich benutze lieber vim und nicht nano. Wer also lieber nano als Editor nimmt, muss vim durch nano ersetzen.

Raspberry hat in der neuen Version keine raspi-blacklist.conf mehr.

cd /etc/modprobe.d/

Liegt keine raspi-blacklist.conf im Verzeichnis, solltet ihr raspi-config verwenden.

raspi-config

Im Fenster auf „advance options“ gehen und da:

A6 SPI Enable/Disable automatic loading │
A7 I2C Enable/Disable automatic loading

beide Module aktivieren. Jetzt noch neustarten!

Wer die raspi-blacklist.conf noch hat, geht so vor:

vim /etc/modprobe.d/raspi-blacklist.conf

sucht diese Zeilen:
#blacklist spi-bcm2708
#blacklist i2c-bcm2708

und entfernt die „#“ am Anfang, so sollten die Zeilen aussehen:

blacklist spi-bcm2708
blacklist i2c-bcm2708

Damit die Module bei jedem Neustart wieder geladen werden, muss man die /etc/modules anpassen.
vim /etc/modules

Meine config sieht nun so aus:

/etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

snd-bcm2835
spi-bcm2708
i2c-bcm2708
i2c-dev
rtc-ds1307

Um die Module zu aktivieren, müsst Ihr Raspberry Pi neu starten:

sudo reboot

Nach dem Neustart muss die RTC getestet werden:

i2cdetect -y 1

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

Jetzt setzen wir erstmal die richtige Zeitzone:
sudo raspi-config
“Internationalization Options” -> “Time Zone”

Es sollte diese Meldung kommen:
Current default time zone: 'Europe/Berlin'
Local time is now: Thu Aug 27 15:53:11 CEST 2014.
Universal Time is now: Thu Aug 27 13:53:11 UTC 2014.

Die RTC bei jedem Neustart verwenden:

vim /etc/rc.local

Sucht nach der Zeile „exit 0“ am Schluss und ändert das so ab:
#RTC
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s
#RTC END

exit 0

Die RTC Zeit einstellen:
Gebt erstmal date ein, für die aktuelle Systemzeit.

root@home:/home/pi# date
Thu Aug 27 16:13:23 CEST 2014

Nun hwclock -r um die Zeit von der RTC zu lesen:

root@home:/home/pi# hwclock -r
Thu 27 Aug 2014 16:13:29 CEST -0.676218 seconds

Stimmt die Zeit nicht, gebt hwclock -w ein.

sollte der Fehler „Cannot access the Hardware Clock“ kommen:

root@home:/home/pi# hwclock -r
hwclock: Cannot access the Hardware Clock via any known method.
hwclock: Use the --debug option to see the details of our search for an access method.

Startet mal neu und gebt sudo bash ein und echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
Dann sollte der Befehl hwclock -r funktionieren.