Comment utiliser l’Horloge Temps Réel DS1302 (RTC) avec la carte Arduino et LCD i2c
Vidéo tuto
Bonjour et bienvenu dans ce tuto où on voit comment utiliser le module DS1302 (Horloge temps réel) ou bien RTC (Real Time Clock) avec la carte Arduino UNO, on va aussi ajouter un afficheur LCD i2c, et si vous voulez savoir comment utiliser l’afficheur LCD i2c veuillez visiter ce tuto.

Le module DS1302 comprend le circuit intégré ainsi qu’une pile bouton de 3V, le CI peut être programmé par la carte Arduino, afin de régler l’heure et la date, le module continu à garder le temps réel, et lorsque l’alimentation est coupée, le module continue à fonctionner grâce à sa pile bouton… On trouve ce genre de système dans plusieurs appareils électroniques comme les PCs, téléphones, TVs pour garder la date/heure ainsi que les infos critiques du système…
Avec Arduino ce module peut servir pour l’enregistrement de données d’un ou plusieurs capteurs: Si on veut la valeur d’un capteur chaque 30min avec horodatage, établir les modes veille/réveille pour la carte Arduino afin de préserver l’énergie…
Matériels
En plus de la carte Arduino UNO et le module DS1302 RTC, on va aussi ajouter un afficheur LCD i2c, et quelques fils pour le branchement.
Dans la vidéo et durant le test j’ai rencontré un problème, où le module ne donnait pas la date/heure correctement, j’ai dû donc ajouté une résistance de 1kΩ.


Schémas de câblage
Schéma 1: Réglage du module depuis l’Arduino IDE et affichage de la date/heure sur le moniteur série
Le branchement est comme de suite Vcc/Gnd avec 5V/Gnd, CLK/DAT/RST avec D6/D7/D8.

Schéma 2: Affichage de la date/heure sur l’afficheur LCD i2c
Même schéma au dessus, on ajoute l’afficheur LCD i2c comme suite Vcc/Gnd avec 5V/Gnd et SDA/SCL avec A4/A5.
Comme mentionné au dessus, j’ai rencontré (dans le tuto anglais) quelques problèmes d’affichage, pour corriger ce problème j’ai ajouté une résistance de 1kΩ entre DAT et broche D7.


Librairies
Pour utiliser le DS1302 RTC il faut une librairie: j’ai utilisé RTC Virtuabotix Library que vous pouvez télécharger ici.
Et pour l’afficheur j’utilise la librairie NewLiquidCrystal que vous pouvez télécharger ici.
Codes
Vous pouvez copier les codes ci-dessous ou bien les télécharger ici.
Code 1: Réglage de la date/heure et affichage sur le moniteur série.
Ce code nous permettra d’ajuster la date et l’heure puis on affiche le résultat sur le moniteur série, juste il faut faire très attention à ce qui suit !!
Dans le code il y a cette ligne, elle permet d’établir la date et l’heure, vous trouverez dans le code comment placer les valeurs, cette ligne doit être ajustée juste avant le téléversement du code à la carte Arduino parce qu’elle contienne le temps réel, vous pouvez tenir compte du temps de téléversement, surtout si vous avez un projet avec un code long.
|
1 |
myRTC.setDS1302Time(15, 22, 21, 7, 14, 1, 2018); |
Après que le téléversement soit fait, il faut enlever cette ligne du code en mettant “//” avant pour la rendre comme commentaire et re-téléverser le code !!
|
1 |
//myRTC.setDS1302Time(15, 22, 21, 7, 14, 1, 2018); |
Si on enlève pas cette ligne, à chaque fois que l’Arduino redémarre pour une raison ou autre, le module va être ajuster à la date/heure qu’on a établi la première fois, au lieu de fonctionner correctement et garder le temps réel, et bien sur durant vos testes vous allez changer pas mal de choses, il ne faut pas régler la date/heure à chaque fois.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/* Ce code est à utiliser avec module horloge temps réel (RTC) DS1302 * Il permet d'ajuster la date/heure puis l'afficher sur le moniteur série * Visiter https://Surtrtech.com pour plus d'info */ #include <virtuabotixRTC.h> //Librairie RTC virtuabotixRTC HTR(6, 7, 8); //Branchement SCLK ou CLK -> 6, I/O ou DAT -> 7, CE ou Reset -> 8 void setup() { Serial.begin(9600); //Comm moniteur série // Réglage de la date heur et comme suit: // (seconds, minutes, heures, jour de la semaine, jour du mois, mois, année) HTR.setDS1302Time(15, 28, 17, 3, 22, 1, 2025); //Cette ligne doit être utilisée une fois seulement, lorsque le module est réglé on met "//" avant et on re téléverse le code } void loop() { HTR.updateTime(); //On demande une mise à jour au module Serial.print("Date: "); //On affiche les infos en mettant en forme Serial.print(HTR.dayofmonth); Serial.print("/"); Serial.print(HTR.month); Serial.print("/"); Serial.print(HTR.year); Serial.print(" Heure:"); Serial.print(" "); Serial.print(HTR.hours); Serial.print(":"); Serial.print(HTR.minutes); Serial.print(":"); Serial.println(HTR.seconds); delay(1000); //Répeter chaque 1s } |
Code 2: Utilisation de l’afficheur LCD i2c
Faites attention encore à la ligne avec la fonction setDS1302Time !! Ajouter la résistance si le module affiche une date “étrange”.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
/* Ce code est à utiliser avec l'horloge temps réel RTC DS1302 et afficheur LCD i2c * Il permet d'ajuster la date/heure puis l'afficher sur l'afficheur LCD i2c * Visiter https://Surtrtech.com pour plus d'info */ #include <virtuabotixRTC.h> //Librairie RTC et LCD i2c #include <LiquidCrystal_I2C.h> #define I2C_ADDR 0x27 //Adresse I2c peut être 0x3F #define BACKLIGHT_PIN 3 #define En_pin 2 #define Rw_pin 1 #define Rs_pin 0 #define D4_pin 4 #define D5_pin 5 #define D6_pin 6 #define D7_pin 7 LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin); //Instances LCD et HTR virtuabotixRTC HTR(6, 7, 8); //Branchement SCLK ou CLK -> 6, I/O ou DAT -> 7, CE ou Reset -> 8 void setup() { lcd.begin (16,2); //Initialiser l'afficheur LCD lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE); lcd.setBacklight(HIGH); lcd.home (); // Réglage de la date heur et comme suit: // (seconds, minutes, heures, jour de la semaine, jour du mois, mois, année) // HTR.setDS1302Time(15, 34, 17, 3, 22, 1, 2025); //Cette ligne doit être utilisée une fois seulement, lorsque le module est réglé on met "//" avant et on re téléverse le code } void loop() { lcd.clear(); //Effacer l'afficheur LCD HTR.updateTime(); //On demande une mise à jour au module lcd.setCursor(0,0); //On affiche les infos en mettant en forme lcd.print("Date "); lcd.print(HTR.dayofmonth); lcd.print("/"); lcd.print(HTR.month); lcd.print("/"); lcd.print(HTR.year); lcd.setCursor(0,1); lcd.print("Heure "); lcd.print(HTR.hours); lcd.print(":"); lcd.print(HTR.minutes); delay(1000); } |
Categories
Yassine View All
Automation and Electrical Engineer, Electronics amateur trying to share my little projects.

2 thoughts on “Comment utiliser l’Horloge Temps Réel DS1302 (RTC) avec la carte Arduino et LCD i2c” Leave a comment ›