Arduino, Tutoriels

Comment utiliser DS3231 Horloge temps réel RTC avec Arduino

Ds3231 Horloge Temps Réel Rtc Avec Arduino

Introduction

Ds3231 Horloge Temps Réel Rtc

DS3231 est une horloge temps réel (RTC) hautement précise qui utilise un quartz cristallin pour maintenir l’exactitude de l’horloge. Il utilise une technologie de compensation thermique pour minimiser les variations de précision causées par les variations de température. La précision de l’horloge est de ±2ppm (partie par million) à une température de 25°C et de ±3.5ppm de -40°C à +85°C. Cela signifie qu’elle peut conserver l’heure précise à une différence de moins de 0,2 secondes par jour.

Ce module utilise une tension d’alimentation de 2.3V à 5.5V et une consommation d’énergie de typiquement 600nA. Il possède une mémoire de temps de secours intégrée pour maintenir l’heure en cas de coupure d’alimentation et une interface I2C pour se connecter à d’autres composants, ce qui en fait un choix populaire pour les applications embarquées.

Il est aussi doté de fonctions de réveil programmable et d’alerte de température. Ces fonctions permettent de déclencher une interruption ou un signal d’alerte lorsque l’horloge atteint une certaine heure ou lorsque la température détectée dépasse un certain seuil. Cela en fait un choix idéal pour les applications de surveillance et de contrôle de processus.

Les utilisations du DS3231 Horloge temps réel RTC

ApplicationDescription
Systèmes d’acquisition de donnéesEnregistrement de l’heure d’acquisition des données
Systèmes de contrôle d’accèsEnregistrement de l’heure d’entrée et de sortie
Systèmes de surveillanceEnregistrement de l’heure de début et de fin de surveillance
Systèmes de contrôle industrielSynchronisation des horloges entre différents équipements
Systèmes de mise en veille automatiqueEteindre les appareils après une certaine période d’inactivité
Projets d’électronique personnelleCréation d’horloges, de minuteries, d’alarmes, etc.

Matériel

Pour utiliser un DS3231 Horloge temps réel RTC avec un Arduino, vous aurez besoin des éléments suivants :

Le schéma

Ds3231 Horloge Temps Réel Rtc Avec Arduino

  • Connectez la broche VCC de l’horloge à la broche 3.3V de l’Arduino
  • Connectez la broche GND du RTC à la broche GND de l’Arduino
  • Connectez la broche SDA d’horloge à la broche A4 de l’Arduino
  • Connectez la broche SCL d’Horloge temps réel à la broche A5 de l’Arduino

Ensuite, vous devrez télécharger la bibliothèque RTClib à partir du gestionnaire de bibliothèques d’Arduino

Le code

#include <Wire.h> #include "RTClib.h"

RTC_DS3231 rtc;

void setup() { 

Serial.begin(9600); 

Wire.begin(); 

rtc.begin();

 if (! rtc.isrunning()) { 

Serial.println("RTC is NOT running!");

 }

 }

void loop() { 

DateTime now = rtc.now();

 Serial.print(now.year(), DEC);

 Serial.print('/'); 

Serial.print(now.month(), DEC);

 Serial.print('/'); 

Serial.print(now.day(), DEC); 

Serial.print(" "); 

Serial.print(now.hour(), DEC); 

Serial.print(':'); 

Serial.print(now.minute(), DEC);

 Serial.print(':'); 

Serial.print(now.second(), DEC);

 Serial.println(); 

delay(1000);

 }

Une fois ce code téléversé sur votre Arduino, ouvrez le moniteur série pour visualiser l’heure et la date affichée par l’horloge temps réel.

Il est également possible de définir une heure et une date spécifiques en utilisant la fonction rtc.adjust(DateTime(année, mois, jour, heure, minute, seconde));

Explication du code

Le code ci-dessus utilise les bibliothèques “Wire.h” et “RTClib.h” pour interagir avec une horloge temps réel (RTC) de type DS3231. Il utilise également l’interface série pour afficher les informations de l’horloge sur la console de l’ordinateur.

La première ligne inclut la bibliothèque “Wire.h”, qui est utilisée pour communiquer avec l’horloge via l’interface I2C. La deuxième ligne inclut la bibliothèque “RTClib.h”, qui contient les fonctions pour interagir avec l’horloge RTC.

Ensuite, une variable “rtc” de type RTC_DS3231 est déclarée. Cette variable est utilisée pour accéder aux fonctions de l’horloge RTC.

Dans la fonction “setup()”, la communication série est initialisée à une vitesse de 9600 bauds avec la fonction “Serial.begin(9600)”. Cela permet d’afficher les informations de l’horloge sur la console de l’ordinateur.

La fonction “Wire.begin()” est utilisée pour initialiser l’interface I2C. Cela permet à l’ordinateur de communiquer avec l’horloge RTC via cette interface. La fonction “rtc.begin()” est utilisée pour initialiser l’horloge RTC. Cela permet d’accéder à toutes les fonctions de l’horloge.

Ensuite, une vérification est effectuée pour savoir si l’horloge RTC est en cours d’exécution en utilisant la fonction “rtc.isrunning()”. Si cette fonction retourne false, cela signifie que l’horloge n’est pas en cours d’exécution et un message s’affiche sur la console série indiquant “RTC is NOT running!”

Dans la fonction “loop()”, l’heure actuelle est obtenue en utilisant la fonction “rtc.now()”, qui retourne un objet de type “DateTime” contenant l’année, le mois, le jour, l’heure, les minutes et les secondes de l’horloge. Ces informations sont ensuite affichées sur le monitor série dans le format yyyy/mm/dd heure:minute:seconde en utilisant la fonction Serial.print() ou Serial.println()

Un délai de 1000ms est ensuite utilisé pour permettre de voir les informations affichées à intervalles réguliers. Ainsi, à chaque passage dans la boucle, la fonction loop() lit la date et l’heure actuelle de l’horloge RTC, l’affiche sur la console série et attend 1000ms avant de refaire un tour de boucle

Video descriptive

Lien outilles

Pour télécharger la bibliothèque RTClib : https://github.com/adafruit/RTClib.

Si vous souhaitez achetez le matériel nécessaire :