Un élément clé dans de nombreux projets Arduino est la gestion du temps. Que ce soit pour réaliser un réveil, un enregistreur de données, ou tout autre système demandant une gestion précise du temps, l’utilisation d’un module RTC (Real Time Clock) s’avère être la solution parfaite.
Dans ce tutoriel, nous allons découvrir le module RTC pour ESP32 et voir comment il peut optimiser la précision et la fiabilité de vos projets.
Voici le schéma associé au projet :
Pour utiliser le moduel d’horloge DS1307, vous allez avoir besoin d’installer la librairie RTClib dans Arduino IDE. Pour cela cliquer sur Gestionnaire de bibliothèque puis RTClib :
#include <Wire.h>
#include <RTClib.h>
// Créez une instance de l'objet RTC_DS1307
RTC_DS1307 rtc;
void setup() {
// Initialiser la communication série pour l'affichage des valeurs
Serial.begin(115200);
// Initialiser la communication I2C avec des pins spécifiques
Wire.begin(21, 22); // SDA sur GPIO21, SCL sur GPIO22
// Vérifiez si le DS1307 est bien connecté
if (!rtc.begin()) {
Serial.println("Impossible de trouver un RTC DS1307 !");
while (1);
}
// Vérifiez si la montre RTC est correctement configurée
if (!rtc.isrunning()) {
Serial.println("RTC n'est pas en cours d'exécution, il va être configuré.");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Réglage automatique à la date et à l'heure de compilation du code
}
}
void loop() {
// Lire l'heure et la date depuis le DS1307
DateTime now = rtc.now();
// Afficher les valeurs sur le moniteur série
Serial.print("Date et heure actuelles : ");
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();
// Attendre une seconde avant la prochaine lecture
delay(1000);
}
Voici ce que l’on peut lire sur le moniteur série une fois le programme téléversé sur notre carte ESP32 :