RaspberryPI - DS3231
Posted on dim. 27 mars 2016 in Projets
Présentation du projet
Il n'y a pas de module rtc sur raspberry pi. Cela peut être gênant si l'on a pas de réseau.
Le module utilisé :
- Alimentation 3,3V ou en 5V
- Pour Raspberry PI et Arduino
- Base de RTC DS3231
DS3231 semble compatible au niveau des registres de date et d'heure au DS1307. C'est pour cela que j'utilise ce module comme on le voit partout sur l'Internet.
Mais en regardant dans /lib/modules/xxx/kernel/drivers/rtc il y a un module rtc-ds3232.ko. A la lecture de la datasheet il semble que les registres sont les même que pour le DS3231.
Datasheet
Pré-requis
- un raspberry PI 2B
- un bloc alimentation de 5V 2A
- une carte microSD 8 Go
- un module DS3231
Réalisation du projet
Préparation
Le module est en place sur le raspberry.
Si cela n'a pas déjà été fait installation des outils nécessaires pour l'I2C
sudo apt-get install i2c-tools ntpdate
je vous propose aussi
sudo apt-get install libi2c-dev python-smbus python3-smbus
Configuration
Exécuter l'outil raspi-config
sudo raspi-config
aller dans le menu (9) Advanced Options -> (A7) I2C -> enabled -> oui
Ouvrir le fichier /etc/modules
sudo nano /etc/modules
s'assurer que i2c-dev est enregistré et ajouter ligne suivante rtc-ds1307.
Réglage du fuseau horaire, et on restera en heure UTC
sudo timedatectl set-timezone Europe/Paris
sudo timedatectl set-local-rtc 0
Si vous avez accès au réseau, mettre à l'heure le raspberry
sudo ntpd -q
sinon
sudo date --set 14:20:00
sudo date --set 2016-03-27
on enregistre l'heure et la date dans le mémoire du module
sudo hwclock -w
fichiers pour boot
on crée le fichier suivant
sudo nano /usr/local/bin/ds3231.sh
dans lequel on met
#!/bin/sh -e
#ds3231.sh
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
hwclock -s
puis on donne le droit d'exécution
sudo chmod +x ds1367.sh
on crée le fichier suivant
sudo nano /etc/systemd/system/ds3231.service
qui se compose de
[Unit]
Description=RTC hardware
After=tlp-init.service
[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/etc/local/ds3231.sh
[Install]
WantedBy=multi-user.target
On test
sudo systemctl start ds3231.service
si pas de message d'erreur, on peut demander le demarrage au boot avec
sudo systemctl enable ds3231.service