dimanche 31 décembre 2017

Horloge temps réel (RTC) DS3231 et STM32 Nucleo


Le billet d'aujourd'hui pourrait vous être utile si vous travaillez sur un projet dans lequel il est important que votre carte STM32 Nucleo ait en tout temps accès à l'heure et/ou à la date.

Une horloge temps réel (RTC pour Real Time Clock) est un circuit intégré spécialement conçu à cette fin.  Un avantage de ce genre de dispositif, c'est que, grâce à une petite pile d'appoint, il peut continuer de maintenir l'heure correcte même pendant que le Nucleo n'est pas alimenté.

Le modèle DS3231 est tout à fait approprié, puisqu'il fonctionne très bien avec un niveau logique de 3,3 V.

La photographie ci-dessous montre le module DS3231 que je me suis procuré sur eBay (il en existe d'autres versions que vous devriez pouvoir utiliser sans problème même si elles ne sont pas rigoureusement identiques à celle-ci).

En plus du circuit intégré DS3231, le module comporte deux résistances pull-up de 4,3 kΩ pour la connexion I2C (nous n'aurons donc pas besoin d'en ajouter nous-mêmes) et un condensateur dont le rôle est de stabiliser l'alimentation.


L'autre côté comporte 5 connecteurs femelles pour la liaison avec la carte Nucleo, et un espace prévu pour la pile d'appoint.



Votre modèle comporte peut-être un support pour y insérer la pile, mais le miens n'en comportait pas, et j'ai dû en bricoler un en soudant deux fils sur les connecteurs prévus à cet effet, que j'ai reliés à la pile au moyen d'un peu de ruban gommé...  (attention de respecter la polarité:  le fil rouge va sur la borne positive de la pile).



Le circuit

On branche le module DS3231 à la carte Nucleo de la façon suivante:

  • "+" du DS3231:  "3V3" du Nucleo
  • "D" du DS3231: "SDA/D14" du Nucleo
  • "C" du DS3231: "SCL/D15" du Nucleo
  • "NC" du DS3231:  pas branchée
  • "-" du DS3231:  "GND" du Nucleo

(le connecteur "NC", inutile pour une carte Nucleo, est présent pour faciliter le branchement du module sur les GPIO du Rasbperry Pi)


Script et bibliothèque

Pour piloter le DS3231, j'ai utilisé une bibliothèque et un programme d'exemple proposés sur mbed par nul autre que Maxim Integrated, fabriquant du DS3231.  On peut aussi accéder à ce script dans la section "Import" du compilateur mbed, en faisant une recherche pour "DS3231demo".  


Vous pouvez tester ce script avec un logiciel de communication série comme Putty ou le moniteur série de l'IDE Arduino.  On vous demande d'abord la date et l'heure, afin de régler le DS3231 (vous pouvez évidemment effacer cette partie si votre DS3231 est déjà réglé à la bonne heure).  Ensuite, la date et l'heure sont affichés dans différents formats, chaque seconde.



Il sera facile de modifier ce script pour qu'il réponde à vos besoins.

Yves Pelletier   (TwitterFacebook)

1 commentaire:

  1. Bonjour, article intéressant, quel est la dérive de votre module RTC, il semble que selon le modèle on se retrouve avec une dizaine de minutes de retard par jour ? Merci.

    RépondreSupprimer