Module RTC ds1307 :
Un problème récurrent des utilisateurs de Raspberry Pi est que celui ci ne possède pas d’horloge interne.
Ceci a pour effet de ne pas pouvoir réaliser d’application utilisant des informations sur l’heure absolue (par exemple faire une actions tous les jours à 20h) sans être connecté à un internet. En effet, votre connection internet, vous permet de récupérer leur sur un serveur donné.
Pour pouvoir réaliser ce genre d’opération, il faut avoir recours à un module RTC (Real-Time Clock) qu’on peut traduire « horloge temps réel ».
Ce genre de module n’est ni plus ni moins une horloge externe alimentée par une pile bouton, qui après une première initialisation, peut être interrogée par le raspberry pi pour obtenir l’heure.
Dans mon cas, j’ai choisi le Module RTC ds1307. Ce choix est expliqué pour plusieurs raisons :
- le module est très courant
- le module ce trouve pour moins 5€ (par exemple sur aliexpress)
- ce module a un support natif par la version Jessie du système raspbian
- il est i2c ce qui réduit le nombre de boches mobilisées sur le port GPIO
Connection du module
Le module est très simple à brancher. Vous devez uniquement connecter :
- VCC
- GND
- SCL
- SDA
du module sur les broches du même nom du Raspberry Pi.
Vérification de la détection du nodule sur le Bus i2c
Si votre port i2c n’est pas activé, rien de plus simple. Il suffit d’exécuter :
sudo raspi-config
Dans le menu Advenced, il faut rendre actif le port i2c.
Nous allons vérifier que le module est bien détecté mais , au péralable, il faut installer les outils nécessaire à cette tâche.
sudo apt-get install python-smbus i2c-tools
Puis nous pouvons utiliser l’utilitaire i2cdetect :
sudo i2cdetect -y 1
L’instruction est différente suivant les versions du Raspberry Pi1
Cette instruction devrait vous retourner l’équivalent de l’écran suivant :
On voit que le RPi a détecté un composant à l’adresse 0x68 qui d’après la doc constructeur l’adresse par défaut.
Installation du Module RTC ds1307
On va ajouter la gestion du module en éditant le fichier de configuration de boot.
sudo nano /boot/config.txt
Auquel on va ajouter un la ligne suivante à la fin du fichier :
dtoverlay=i2c-rtc,ds1307
A ce stade, vous devez redémarrez votre système :
sudo reboot
Une fois le système de nouveau actif, il vous pouvez éxécuter de nouveau:
sudo i2cdetect -y 1
Vous devriez observer si le prise en charge de l’horloge est effective en obtenant les caractères UU à l’adresse 0X68
Il vous est maintenant nécessaire de désactiver l’horloge qui émule l’horloge hardware «fake hwclock> avec les instructions suivantes :
sudo apt-get -y remove fake-hwclock
sudo update-rc.d -f fake-hwclock remove
Puis décommenter les lignes suivantes du fichier (en début de fichier) /lib/udev/hwclock-set :
#if [ -e /run/systemd/system ] ; then
# exit 0
#fi
Configuration de l’horloge du Module RTC ds1307
Pour configuer votre horloge RTC, à partir de l’heure système (nécessite donc une connexion à Internet):
sudo hwclock -w
NB : W pour Write
Pour vérifier que votre horloge est bien à l’heure, il suffit cette fois-ci de lire
sudo hwclock -r
NB : R pour Read
Vérification du fonctionnement
Pour vérifier, le bonctionnement du système, couper la connexion internet (faite éventuellement un reboot) et exécuté :
date
Si tous c’est bien passé vous devriez obtenir l’heure exact!
Alors prêt à utiliser le Module RTC ds1307?
- Si votre raspberry est une version antérieur au Pi 3 et Pi Zero, l’instruction est sudo i2cdetect -y 0 ↩
un grand merci
tes explications etaient limpides ))))
Allo
Au démarrage. On dirait qu il se siuvient de l heure que je l ai debrancher?
Pouvez-vous m aider
Est-ce que la pile est branchée ?