Catégories
Liens
La Raspberry Pi est un mini-ordinateur très pratique mais il ne possède pas de “temps”. Pour économiser ils n'ont pas installé d'horloge. Si, pour une installation artistique par exemple, on veut allumer ou éteindre notre programme il faut bien savoir à quelle heure .. C'est pourquoi on peut ajouter un petit module qui va enregistrer le temps et le garder en mémoire le temps de décharger la pile (~ 9 ans!). Ce type de module peut aussi être utilisé avec une Arduino.
Sur cette page un comparatif des modules : Offrez une horloge temps réel (RTC) à votre Raspberry Pi
Sources de documentation :
D'abord il faut mettre sa Raspberry à jour en la branchant à Internet pour installer les paquets nécessaires. Ouvrez un terminal.
sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade
Installer ces paquets pour gérer l'I2C (tous ne sont peut-être pas utiles, à vérifier)
sudo apt-get install python-smbus python3-smbus python-dev python3-dev i2c-tools
Ce type de module d'horloge communique en I2C, il faut donc configurer ce moyen de communication sur la Raspberry
sudo raspi-config
Sélectionnez “8 Advanced Options” et “A7 I2C - Enable/Disable automatic loading”. Répondez “Yes” à toutes les questions, sortez et redémarrez la Raspberry.
Activer les protocoles I2C et le SPI sur la Raspbian Wheezy en éditant le fichier “/etc/modprobe.d/raspi-blacklist.conf”. Si le fichier n'existe pas, alors vous pouvez sauter cette étape :
sudo nano /etc/modprobe.d/raspi-blacklist.conf
Commenter ces lignes en ajoutant un “#”
#blacklist spi-bcm2708 #blacklist i2c-bcm2708
Save your changes and exit the nano editor.
Pour les versions récentes de Raspberry (3.18 kernel ou plus) vous devez éditer le fichier “/boot/config.txt”. Pour connaître le numéro du kernel, tapez “uname -a” dans un terminal.
sudo nano /boot/config.txt
Ajoutez ces lignes à la fin du fichier et sauvez le fichier Ctl-x, Ctl-o :
dtparam=i2c1=on dtparam=i2c_arm=on
Démarrer la communication I2C automatiquement en éditant le fichier “/etc/modules” :
sudo nano /etc/modules
Ajoutez ces lignes à la fin et sauver.
i2c-bcm2708 i2c-dev
Pour éviter d'utiliser i2c-tools en tant qu'administrateur root, vous pouvez ajouter “pi” au groupe I2C :
sudo adduser pi i2c
Redémarrez
sudo reboot
Quand la Raspberry va redémarrer, elle supportera dorénavant l'I2C et SMBus Python.
Pour le moment rien de bien compliqué, on pourrait même difficilement faire plus simple, c’est un avantage du bus I²C qui communique sur 2 fils (hors alimentation):
Si vous n’avez pas de pile bouton de 3V sous la main (ce qui est mon cas lors de ce tuto), connectez également 2 piles de 1.5V entre les bornes BAT et GND du module RTC. Sinon, installez la pile bouton dans son logement.
On va utiliser la commande i2cdetect, qui permet de voir la liste des périphériques I²C reliés au Pi. La commande est différente si vous utiliser un Raspberry Pi Rev 1 ou Rev 2 (l’adresse du bus I²C est différente), donc choisissez la bonne :
sudo i2cdetect -y 0 (pour la Rev 1) sudo i2cdetect -y 1 (pour la Rev 2) i2cdetect
Si comme sur cette capture, vous voyez votre RTC avec l’ID #68 (il est probable qu’à la place de ‘UU’, soit indiqué ’68’, c’est parfaitement normal), tout est correctement cablé et configuré. Dans le cas contraire, il faudra reprendre depuis le début et vérifier chaque étape.
Maintenant que notre RTC est correctement câblée et que notre système est prêt à utiliser le bus I²C, nous pouvons passer à la configuration du module. Commençons par lancer le module logiciel RTC :
sudo modprobe rtc-ds1307
On va maintenant activer le module DS1307 dans le module logiciel I²C. Encore une fois, la commande dépend de la version de Raspberry Pi. Ouvrons un bash en tant que root :
sudo bash echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device (pour la Rev 1) echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device (pour la Rev 2) exit
Nous allons vérifier l’heure de la RTC. En effet, si c’est la première fois que le circuit est utilisé (ou si la pile vient d’être changée), il devrait indiquer le 1er Janvier 2000, et il faudra le mettre à l’heure.
sudo hwclock -r
Donnez le bon temps et écrire dans le module
date -s "20 OCT 2016 19:20:20" sudo hwclock -w (pour écrire) sudo hwclock -r (pour lire)
Nous allons maintenant rajouter le module logiciel RTC au fichier /etc/modules, afin qu’il soit chargé au démarrage de la machine.
sudo nano /etc/modules
Ajouter à la fin du fichier la ligne :
rtc-ds1307
Il faut maintenant créer le périphérique DS1307 au démarrage en modifiant le fichier /etc/rc.local :
sudo nano /etc/rc.local
Ajouter, avant la ligne « exit 0 » : pour la Rev 1 :
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device sudo hwclock -s
pour la Rev 2 :
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device sudo hwclock -s
Vous pouvez également y rajouter un hwclock -r pour vérifier visuellement l’heure du module RTC au démarrage… C’est terminé, désormais votre Raspberry Pi sera constamment à l’heure, qu’il soit connecté à internet ou pas !