Publié le 25 avril 2013 - par

Avant l’heure, c’est pas l’heure ! Après l’heure… Offrez une horloge temps réel (RTC) à votre Raspberry Pi

Avant l'heure c'est pas l'heure ! Après l'heure... Offrez une horloge temps réel (RTC) à votre Raspberry PiNotre framboise314 n’a pas de « garde temps » d’origine. Pas de montre, d’horloge, de pendule interne. Raspbian par exemple, se connecte à un serveur NTP pour récupérer l’heure, et synchroniser l’horloge du système dessus. Et si votre Raspberry Pi n’est pas relié à Internet, s’il est autonome (datalogger, station météo…) : Il vous faut une horloge RTC, alimentée par une pile pendant que le courant de votre Raspberry Pi est coupé. Dans cet article, vous trouverez un aperçu des solutions disponibles à ce jour.

Le besoin

A la recherche d’une horloge RTC pour ma framboise314, j’ai fait l’inventaire de ce qui peut se trouver aujourd’hui sur le marché. Le besoin est simple : Lorsque le Raspberry Pi est éteint, ou s’il démarre sans pouvoir se connecter à Internet, il ne connait ni le jour ni l’heure.

J’ai un projet d’écran d’accueil à base de Raspberry Pi. Cet écran doit afficher les événements de l’entreprise pour la journée en cours. La liste des événements est préchargée en mémoire, mais que va-t-il se passer si le Raspberry Pi redémarre à un moment où, pour une raison X ou Y, il ne peut accéder au réseau de l’entreprise?
C’est la catastrophe, l’affichage devient incohérent. Pour éviter cela, une seule solution : doter la framboise314 de sa propre montre, une horloge RTC alimentée par pile.
Ce système a été introduit par IBM en 1984 dans les PC/AT, sur la carte mère. Avant ça ? Eh bien à chaque démarrage d’un PC, on regardait sa montre pour répondre aux sempiternelles questions : date  et  time. Ensuite, en attendant que l’horloge soit intégrée sur les cartes mères, on a ajouté des « cartes d’extension RTC » sur le bus IDE, elles étaient dotées d’une batterie Cd-Ni, puis plus tard d’une pile Lithium 3 volts (la célèbre CR2032 de votre PC).

Les différentes cartes sur le marché

adafruit_logoAdafruit

Photos de la carte

adafruit_RTC_01

Descriptif

On retrouve ici un classique DS1307, un circuit RTC, fournissant également 56 octets de NV SRAM (c’est là que votre PC range le Setup du BIOS). Il est relié au Raspberry Pi par le bus I2C. La dérive mensuelle est d’environ +/- 2 secondes. A sa droite un quartz horloger à 32.768 kHz (215 Hz) qui donne la fréquence de référence (après 15 divisions par 2, on obtient du 1 Hz). En bas à droite, le support pour la pile de type non précisé (mais j’opterai pour une CR1025). La durée de vie de la pile est donnée pour 5 ans.
La carte dispose de 2 trous de fixation.

Prix

adafruit_RTC_029$ auxquels on ajoutera les frais de port. Adafruit livre en quelques jours. Une commande de câble de liaison GPIO <==> Breadboard a mis une semaine à arriver en France.

Disponibilité de la documentation

Les documentations et tutoriels sont abondants chez Adafruit. Plusieurs tutoriels utilisant la carte RTC décrite ici sont disponibles sur le site, pour des horloges utilisant différents afficheurs.

Tutoriels

Un tutoriel est disponible en ligne et également sous forme de document PDF. Il nécessite un Raspberry Pi exécutant un noyau comportant les modules RTC et DS1307. Ce n’est pas le cas des distributions « Wheezy » et « Occidentalis v0.1 ». Il fonctionne avec « Occidentalis v0.2 » ou supérieure.


100randomtasks_logo100randomtasks.com

Photos de la carte

100randomtasks_01100randomtasks_02100randomtasks_03100randomtasks_04Descriptif

Le circuit RTC est ici un MCP7940 de Microchip. Il est relié au Raspberry Pi par le bus I2C et offre 64 octets de SRAM (RAM statique sauvegardée par la batterie). La dérive mensuelle est d’environ +/- 2 secondes. A sa droite un quartz horloger à 32.768 kHz (215 Hz) qui donne la fréquence de référence (après 15 divisions par 2, on obtient du 1 Hz). La sauvegarde est confiée à une batterie CR1025 (non fournie). La carte fait 25mmx16mm.

Prix

100randomtasks_06Le prix est le même sur ebay que sur le site 100RandomTasks.com : 10,95$ (8,40€) auxquels s’ajoutent 2,69€ de frais de port.

Disponibilité de la documentation

La documentation est assez succincte :

100randomtasks_05Tutoriels

Voir ci-dessus…


modmypi_logoMODMYPI

Photos de la carte

rasclock_01rasclock_02Descriptif

La carte RasClock est une carte horloge temps réel qui s’enfiche directement sur le connecteur GPIO du Raspberry Pi. Pas besoin de souder ou de relier par des fils. Le connecteur est un GPIO « réduit » à 6 trous. RasClock utilise le 3,3v, la masse et les signaux SDA et SCL. Ce module est relativement bas, il ne dépasse pas la prise vidéo en hauteur et il tient dans la plupart des boîtiers. La carte utilise un circuit PCF2127 AT de NXP et assure une précision meilleure que 2 minutes par an. Le quartz intégré est corrigé pour éliminer les dérives dues à l’âge et à la température. La pile 3v (CR1220 fournie) garantit un fonctionnement minimum de 2 ans si elle est seule à alimenter le module. SI l’alimentation du Raspberry Pi prend le relais, cette durée est considérablement allongée. Le PCF2127 AT dispose de 512 octets de SRAM, sauvegardés par la pile.

Prix

rasclock_03La carte est vendue 9,99£ (non, non, pas 10£…) auxquels s’ajouteront les frais de port (à partir de 1,99£… non, pas 2£… ah! Vous avez compris que ça m’agace ?).

Disponibilité de la documentation

De la documentation est disponible en ligne pour le CI PCF2127 de NXP.

Tutoriels

La carte utilise un driver qui n’est pas inclus actuellement dans Raspbian. Vous pouvez télécharger le code source pour le compiler vous-même, ou télécharger le package fourni par MODMYPI. Un tutoriel est disponible sur Afterthought Sofware.

Un tutoriel est disponible en ligne et également au format .pdf.


cjemicros_logoCJEmicros

Photos de la carte

cjemicros_03

Carte RTC avec capteur de température

cjemicros_01

Carte RTC

cjemicros_04

Mise en place de la pile

cjemicros_05

cjemicros_06cjemicros_07

Descriptif

La carte de CJEmicros s’enfiche (complètement… oui je sais, elle était facile !) sur le port GPIO du Raspberry Pi. Le connecteur est un GPIO « réduit » à 6 trous. Cette fois c’est le circuit DS1338 de Maxim qui est au boulot ! Comme les précédents, c’est un circuit I2C. La pile, une CR1620 (fournie), donnée pour une durée de vie de 9 ans. La précision annoncée est meilleure qu’une minute par mois. Le site 4D informe que Raspbian Wheezy supporte maintenant l’horloge temps réel, et renvoie aux instructions d’installation pour autoriser cette gestion.

/!\ ATTENTION : Les cartes deux modèles sont vendus par par CJEmicros : Une carte intègre également un capteur de température, et met à disposition des pastilles supplémentaires (LEDs, accès à l’I2C)

Prix

La carte est vendue 13 £ ou 10 £ selon qu’elle intègre le capteur de température ou pas.

On trouve également la carte sur ebay :

cjemicros_08

Disponibilité de la documentation

La documentation du DS1338 est disponible en ligne au format .pdf.

Tutoriels

Les tutoriels d’installation sont en ligne, ainsi qu’un guide d’installation.

 cjemicros_02

cjemicros_03


yadom_logoYadom

Photos de la carte

yadom_01

 yadom_02

yadom_03

Descriptif

En rupture de stock pour l’instant (vous pouvez vous inscrire à une mailing list pour connaître la disponibilité), cette carte RPI RTC embarque également un DS1338. Elle est annoncée comme reconnue et gérée par les distributions Linux courantes. 56 octets de SRAM sont disponibles, et la connexion se fait par le bus I2C. Contrairement aux cartes précédentes, la carte Yadom est équipée d’un connecteur GPIO « complet », c’est-à-dire avec les 26 trous, ce qui devrait assurer plus de stabilité.

Prix

yadom_05

La carte est vendue 19,90€ auxquels s’ajouteront les frais de port … Enfin quand elle sera disponible !

Disponibilité de la documentation

 La documentation du DS1338 est disponible en ligne.

Tutoriels

Le tutoriel est inclus dans la page du site vendeur.

yadom_04


hobby_electronics_logoHobby Electronics

Photos de la carte

 hobby_electronics_01

Descriptif

La carte de Hobby Electronics embarque un DS1302 de Maxim. Ce circuit utilise une entrée /sortie série et intègre 31 octets de RAM sauvegardés par la pile.

Prix

hobby_electronics_02La carte est vendue 5,17 € auxquels s’ajouteront les frais de port (xxxx). Une remarque au passage, la T.V.A. s’applique également sur les frais de port, tenez en compte lors de votre commande.

Disponibilité de la documentation

La documentation du CI DS1302 est disponible en ligne. Un guide de mise en œuvre est sur le site de Hobby Electronics.

Tutoriels

Le code source rtc-pi.c est téléchargeable sur le site Hobby Electronics. Il faudra le compiler pour l’utiliser sur votre Raspberry Pi, puis l’intégrer aux scripts lancés lors du démarrage, la doc vous laisse décider de votre méthode préférée. A réserver à des utilisateurs (un peu) avancés de Linux…

/!\ ATTENTION : Les ports GPIO ont été modifiés entre les versions v1 et v2 du Raspberry Pi. Il faudra être attentif lors du raccordement sur les broches du connecteur GPIO.


Conclusion

Après avoir fait le tour des cartes disponibles (ou pas => Yadom), mon choix s’est arrêté sur la carte de Hobby Electronics (GB). Outre la rubrique Raspberry Pi, ce vendeur propose également des extensions pour Arduino, mais aussi bien d’autres choses. A visiter si vous expérimentez dans ces domaines…

Mon choix a été influencé par l’absence de connecteur GPIO, ce qui me permettra de caser la carte RTC où je le veux (c’est qui le chef, hein ?). Mais surtout ça laisse libre accès au port GPIO pour y connecter un câble d’extension (Adafruit).

Aussitôt dit, aussitôt fait, au jour du début de l’écriture de cet article, j’ai passé la commande, payée par Paypal. Le mail de confirmation est arrivé rapidement, et en fin d’après-midi j’avais un mail m’annonçant que le produit avait été expédié ! Je mettrai un complément à cet article pour vous donner la date de livraison et les conditions d’emballage.

La mise en œuvre de cette carte RTC fera (bien sûr) l’objet d’un article à paraître sur www.framboise314.fr.

Votre choix est peut-être (certainement) différent du mien ! Vos critères de sélection ne sont pas les mêmes : Facilité de connexion avec le port GPIO, précision requise, durée de vie de la pile, prix, look de la carte … N’hésitez pas à en faire part dans les commentaires et si vous avez d’autres sources d’approvisionnement en carte RTC, signalez les…


Mise à jour du 29 avril 2013

La carte RTC de Hobby Electronics est arrivée ce matin. Emballage sérieux : enveloppe matelassée, contenant un sachet scellé, contenant plusieurs tours de plastique à bulles, contenant un sachet antistatique scellé… contenant la carte ! Rien à redire !

Commande le 24 avril, livraison le 29 avril…

Il ne reste plus qu’à brancher la chose et à rédiger l’article sur la mise en œuvre de l’horloge RTC.

La livraison de carte RTC par Hobby Electronics

La livraison de carte RTC par Hobby Electronics

À propos François MOCQ

Électronicien d'origine, devenu informaticien, et passionné de nouvelles technologies, formateur en maintenance informatique puis en Réseau et Télécommunications. Dès son arrivée sur le marché, le potentiel offert par Raspberry Pi m’a enthousiasmé j'ai rapidement créé un blog dédié à ce nano-ordinateur (www.framboise314.fr) pour partager cette passion. Auteur de plusieurs livres sur le Raspberry Pi publiés aux Editions ENI.

18 réflexions au sujet de « Avant l’heure, c’est pas l’heure ! Après l’heure… Offrez une horloge temps réel (RTC) à votre Raspberry Pi »

  1. Didier FLAMENT

    Bonjour cher François,
    Bien vu le parallèle avec les stations météo et leur datalogger (pour
    certaines) !!
    Votre choix de carte d’extension est judicieux, car il faut dire que les
    différents boîtiers commercialisés, étant adaptés aux dimensions de la
    « Framboise », ne laissent guère de place aux différents accessoires que l’on
    veut y greffer. Ainsi pour y adapter un système de refroidissement autre que
    de simples radiateurs, j’ai dû jongler quelque peu pour y intégrer une
    alimention par socle « japon ». Il devrait me rester suffisamment de place pour
    intégrer une platine RTC.C’est là que votre choix présente toute sa pertinence.
    Dans mon cas cette référence est essentielle, toutefois eu égard à
    l’impossibilité temporaire de récupérer les données du datalogger (coupure
    système) un fonctionnement 24/7 a été la seule solution. Bien évidemment tout
    ce qui est en rapport avec le serveur météo et le serveur apache est alimenté
    via un onduleur, ne serait-ce que pour assurer la continuité du service, mais
    surtout pour éviter les différents processus « zombies » ou corruption de la
    base de données qui peuvent se produire en cas de micro-coupures secteur ou
    autres … car je ne connais pas les capacités du Pi à réagir à de telles
    conditions, la base de données sqlite étant le coeur du système.
    Nous travaillons actuellement à solutionner ce pb de datalogger, mais il faut
    reconnaître que les utilisateurs de ce système sur linux et avec ce logiciel
    (wview), ne sont pas légion surtout dans la langue de Molière !
    Comme ceci passe par la modification des sources en corrélation avec le type de
    station (Oregon WMR200), des compétences en la matière sont indispensables.
    Ma spécialité lorsque j’étais en activité ne m’ayant pas donné un cursus
    identique au votre (construction de maisons de retraite), explique la solution
    temporaire que nous avons adoptée, mais qui tourne cependant parfaitement
    bien. De surcroît, ceux qui veulent mettre à disposition de la communauté leurs
    données et statistiques en temps réel, via un site spécifique, doivent être
    connectés en permanence et ce avec un tansfert ftp adapté.Ce devrait être le cas
    de Chrisophe qui travaille avec moi sur ce projet et pourquoi pas sous
    WordPress!, d’autant plus qu’il a déja réalisé ce principe sous win cependant!
    Avec toutes mes amitiés.
    Didier

    Répondre
  2. gilles

    le driver du module RTC du site MODMYPI doit patcher le noyau …. donc nouveau noyau nouveau path ….. j’ai un peu peur pour la maintenance du code de ce driver ….

    Répondre
  3. Ping : Horloge temps réel pour le Raspberry Pi | Carnet

  4. bob

    Bonsoir,
    et bravo pour votre site toujours passionnant.
    je me permet de vous rappeller que vous deviez
    « brancher la chose et à rédiger l’article sur la mise en œuvre de l’horloge RTC. »
    d’avance merci

    Répondre
  5. Ping : Un module RTC à base de DS1302 pour le Raspberry Pi | Framboise 314, le Raspberry Pi à la sauce française….

  6. Ping : Raspberry Pi Home Server - Ajouter une horloge RTC DS1307 sur le bus I2C

  7. Ping : Un boîtier DIN Yadom pour le Raspberry Pi | Framboise 314, le Raspberry Pi à la sauce française….

      1. admin Auteur de l’article

        bonjour Axel
        Le module vers lequel pointe le lien (PCF8563 RTC Board) est accessible en I2C. La sortie INT n’est pas dispo sur le connecteur (patte 3 du PCF8563 http://www.wvshare.com/product/PCF8563.htm). Seuls les signaux I2C SDA et SCL sont disponibles.
        Il faudrait ressortir cette info d’interruption et l envoyer sur un GPIO pour « réveiller » le RasPi. Et celui ci devrait être sous tension et opérationnel pour répondre à l’interruption.
        L’autre solution serait de piloter un « interrupteur » électronique qui mettrait le RasPi sous tension à une heure déterminée pour réaliser une tâche déterminée. Je ne sais pas si ce genre de module existe.
        Quelle serait l’application dans votre cas ?
        Cordialement
        François

        Répondre
  8. asez73

    Bonjour, j’ai réalisé quelques modifications sur ce logiciel :
    +ajout de la détection automatique de la version de la Raspberry Pi (V1 et V2)
    +ajout de quelques options sur la ligne de commande (-h pour avoir une liste) mais en conservant une compatibilité « ascendante »
    +ajout d’option pour lire/écrire dans la SRAM de l’horloge (chaîne hexadécimale de 62 caractères très basique)
    +reformatage afin de rendre le tout plus « lisible et structuré » mais là c’est assez personnel

    Bref, avant de tout mettre en ligne, je voulais savoir sous quelle licence il faut faire référence (lien, citation) à cet article: mentions souhaitées, etc…
    J’ai prévu de mettre mon dépôt « public » sous les mêmes conditions que votre site.
    De même, je recherche les condit

    Répondre
  9. deshayes

    j’ai lu avec attention le détail pour l’installation, hélas je suis bien obligé de reconnaître que c’est pour des spécialiste .
    bien dommage, car j’ai acquis lors d’une vente aux enchères une centrale téléphonique adept 250 avec obox bref complet mais je ne sais pas comment l’installer
    as grave je vais continuer ma recherche

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Pierrick
      l’Obox est un PABX complet qui se connecte sur des lignes Numeris T0.
      Il était fabriqué au Creusot (j’y habite) par Adept Telecom. C’est un très bon produit
      mais il se suffit à lui-même, pas besoin de Raspberry Pi… Vous avez déjà tout ce qu’il faut dans l’Obax.
      Cordialement
      François

      Répondre
  10. Ping : Installation d'un module "Real Time Clock" - Code 4 Pi

    1. François MOCQ Auteur de l’article

      Bonjour Estelle
      vous êtes au bon endroit
      sinon cherchez RTC sur le blog vous aurez d’autres articles.
      En l’absence de réseau il n’y a que 2 solutions : une horloge RTC qui conserve l’heure grace à une pile le système vient récupérer l’heure pour se synchroniser, ou la mise à l’heure du Raspberry Pi manuellement, mais dans ce cas une dérive de l’heure est probable…
      La commande date utilisée avec des arguments permet de configurer l’heure du système. Seul le super-utilisateur (sudo) peut modifier l’heure système.
      Syntaxe
      date MMJJhhmm[YYAA.ss]
      MM Mois
      JJ Jour du mois
      hh Heure
      mm Minute
      YY Deux premiers chiffres de l’année (facultatif)
      AA Deux derniers chiffres de l’année (facultatif)
      .ss Secondes (facultatif)

      Exemple :
      pi@raspberrypi ~ $ sudo date 011819492017.15
      mercredi 18 janvier 2017, 19:49:15 (UTC+0100)

      cordialement
      François

      Répondre
  11. Alain

    Bonjour,

    D’abord merci pour cette article, intéressant, comme beaucoup d’autres que tu/vous écrivez.

    un détail néanmoins, qui sera utile pour les personnes qui cherchent une certaine précision. La doc d’adafruit précise que sont module est précis à +/- 2 secondes par jour et non par mois, comme vous le dites dans votre article.
    https://www.adafruit.com/product/264
    « The DS1307 is simple and inexpensive but not a high precision device. It may lose or gain up to 2 seconds a day. »

    Répondre
    1. François MOCQ Auteur de l’article

      Bonjour Alain
      La précision dépend du quartz
      Effectivement un 10ppm avec environ 30 000 000 sec pour un an donnerait
      300sec d erreur sur 1 an soit environ 1 sec par jour
      Apres si vous prenez un 50ppm…. on multiplie l’erreur par 5
      .2013 ça date un peu mais à l’époque j’avais du lire cette valeur de 2sec par mois dans la doc ou la pib d’adafruit… j’avoue que je ne me rappelle pas ?

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Complétez ce captcha SVP *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.