Ajouter au Raspberry Pi une horloge RTC DS1307 sur le bus I2C

Pour ceux qui souhaitent utiliser leur Raspberry Pi dans un projet mobile ou bien qui ne peuvent pas le connecter à Internet, cet article va vous permettre de conserver la date et l’heure du système à jour après chaque redémarrage.

Raspberry Pi Home Server - Ajouter une horloge RTC DS1307 sur le bus I2C

Pour des raisons qui semblent avant tout économiques, il a été décidé au moment de la conception du Raspberry Pi, de ne pas lui intégrer d’horloge temps réel (RTC donc). C’est ce composant qui permet lorsque vous éteignez votre ordinateur de lui redonner l’heure exacte au prochain redémarrage. Vous savez la pile plate qui se trouve sur votre carte mère d’ordinateur ? C’est elle !

Comme je travaille sur un projet mobile, j’ai donc eu ce problème. Pas de processus NTPd pour me remettre le système à jour via Internet. Donc comment faire ?

Il faut commencer par acheter le petit composant qui va se brancher sur le Raspberry. Je l’ai acheté ici pour la somme de 2.30$ frais de port compris (ici un peu plus chère mais livraison plus rapide). Voici ce que j’ai reçu :

Raspberry Pi Home Server - Ajouter une horloge RTC DS1307 sur le bus I2C

Il existe peut être des composants de meilleure qualité et/ou adaptés au connecteur du Raspberry Pi (voir cet article qui contient un excellent comparatif) mais celui-ci me paraissait un très bon compromis. D’abord le prix peu élevé, ensuite l’utilisation du bus I2C donc pas besoin de 50 GPIO (oui j’exagère un peu) et enfin la taille vraiment minuscule.

Une fois assemblée, il faut connecter notre RTC au Raspberry. Pour ça rien de plus simple ! On commence par relier la broche VCC à la sortie 5V du Raspberry, la broche GND à la broche 6, la broche SDA à la broche 3 du pi et enfin la broche SCL à la broche 5.

Voilà le résultat :

  1. Mettre à jour le système
     apt-get update && apt-get -y upgrade
  2. Activer l’interface I2C en modifiant le fichier /etc/modules. Il faut ajouter les lignes suivantes à la fin du fichier :
    i2c-bcm2708 
    i2c-dev
    rtc_ds1307
  3. Enlever le module I2C de la blacklist. Dans le fichier /etc/modprobe.d/raspi-blacklist.conf mettez en commentaire la ligne
    blacklist i2c-bcm2708

    Il faut ajouter un # en début de ligne

    #blacklist i2c-bcm2708
  4. Redémarrer le Raspberry
    reboot
  5. Vous pouvez contrôler les modules en mémoire avec la commande lsmod
    1__ssh_et_Raspberry_Pi___ajouter_une_horloge_RTC_en_I²C___Hardware-Libre
  6. Installer les outils I2C
     apt-get install i2c-tools
  7. Vous pouvez maintenant vérifier que votre horloge est détectée avec la commande
    i2cdetect -y X

    où X vaut :

    • 0 pour les modèles A et B 256Mb
    • 1 pour les modèles B 512Mb

    Chez moi j’ai utilisé un modèle B 256Mb donc le paramètre vaut 0
    1__sshLe voilà à la position 68 !

  8. L’étape suivante consiste à définir le type de périphérique installé en 0x68.
    echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device

    Pensez à remplacer i2c-0 par i2c-1 si vous utilisez un modèle B

  9. Il est temps de tester le retour de notre nouvelle horloge avec la command hwclock
    1__sshL’option -r permet d’afficher l’heure stockée dans l’horloge RTC
  10. Pour maintenant mettre à l’heure l’horloge, il faut mettre à l’heure votre Raspberry puis envoyer l’heure vers l’horloge. Pour ça, soit vous utilisez la commande
    date mmjjhhmmaaaa

    soit vous branchez une première fois l’ordinateur à internet et vous synchronisez l’heure grâce au service NTP (ça se fait automatiquement)

  11. Une fois l’heure système réglée, vous envoyez l’heure système vers l’horloge RTC
    hwclock -w

    La commande ne retourne aucune information. Vous pouvez vérifier le résultat avec la commande de lecture

    hwclock -r
  12. Maintenant si vous voulez définir l’heure système à partir de l’horloge RTC
    hwclock -s

Pour faire la synchronisation automatiquement au démarrage du Raspberry, vous devez modifier le fichier /etc/rc.local en y ajoutant les lignes suivantes avant le exit 0 de la fin

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
sudo hwclock -s

Ou les lignes suivantes pour la révision 2

echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s

Voici ce que ça donne en édition pour la révision 1 du Raspberry Pi

1__ssh

Vous avez maintenant une horloge pas chère pour conserver l’heure de votre système si vous n’avez pas d’accès Internet !

Personnellement j’en ai besoin pour un projet mobile. C’était mon dernier élément pour finaliser le projet, que je vais bientôt partager avec vous 🙂

 

Vous aimez cet article ? Supportez-moi sur Patreon!

Vous aimerez aussi...