RTC (Raspi)
La Raspberry-Pi n'a pas d'horloge temps réel. Pour se mettre à l'heure, elle utilise le protocole Ntp, mais on peut aussi lui greffer un module externe.
Module RTC
Le module RTC DS1338 de Maxim-Dallas contient un quartz à 32,768 KHz, un support de pile (CR2032) et une interface i2c. Il est compatible avec le DS1307 (qui fonctionne entre 5V et 7V), et fonctionne avec une une tension de 3,3V donc compatible avec ce que peut fournir la raspi.
La raspi sera le maitre et le module sera l'esclave.
Câblage
La raspi possède les broches i2c dans son GPIO, et le module externe peut être alimenté en 3,3V. On connecte donc :
- SDA sur la broche 3 (GPIO 2 - SDA)
- SCL sur la broche 5 (GPIO 3 - SCL)
- Vcc sur la broche 1 (3V3)
- Gnd sur la broche 9 (Gnd)
La broche SQW fournit un signal d'horloge carré n'est pas utilisé ici.
Noyau Unix
Sous Unix, il faudra installer les modules i2c et i2c-dev (voir i2c#Unix). Ensuite, pour la partie RTC, rtc_ds1307.
On trouve le bus et l'esclave avec i2cdetect, puis on renseigne le système avec le bon i2c- et 0x:
sudo modprobe rtc_ds1307
sudo bash -c `echo "ds1307 0x68" > /sys/class/i2c-adapter/i2c-0/new_device `
dmesg | tail
[ 22.748166] rtc-ds1307 0-0068: rtc core: registred ds1307 as rtc0
[ 22.748216] rtc-ds1307 0-0068: 56 bytes nvram
[ 22.748276] i2c i2c-0: new_device: Instantiated device ds1307 at 0x68
On se retrouve avec un accès a la rtc externe par /dev/rtc0.
Mise à l'heure
On utilise hwclock pour mettre à l'heure le matériel.
sudo hwclock --set --date="31/12/2014 13:59:42"
sudo hwclock -r
On peut ensuite
- sudo hwclock --systohc : copie l'heure système vers la rtc
- sudo hwclock --hctosys : copie l'heure de la rtc sur le système.