Ce projet consiste à créer une horloge numérique électronique en utilisant la carte Espressif Systems ESP32, le module RTC DS1302 et un afficheur LCD I2C. L’objectif est d’afficher l’heure et la date en temps réel sur un écran LCD.
Le module RTC DS1302, développé par Maxim Integrated, permet de conserver l’heure et la date même lorsque l’alimentation principale est coupée, grâce à une pile de sauvegarde. La carte ESP32 lit les informations du module RTC et les envoie à l’afficheur LCD I2C, qui les affiche de manière claire et lisible.
Ce projet permet d’apprendre à :
- utiliser une carte ESP32
- communiquer avec un module RTC
- afficher des données sur un écran LCD I2C
- réaliser un système embarqué basé sur le temps réel
Cette horloge numérique peut être utilisée comme horloge de bureau, horloge murale ou comme base pour des projets plus avancés, comme un réveil ou un système domotique.
1- Carte ESP32

La carte ESP32 est le microcontrôleur principal du projet. Elle permet de contrôler l’ensemble du système. Elle lit l’heure et la date depuis le module RTC DS1302 et envoie ces informations à l’afficheur LCD I2C.
2. Module RTC DS1302

Le module RTC DS1302 est un composant électronique qui permet de garder et de fournir l’heure et la date en temps réel. Il est souvent utilisé avec des cartes programmables comme la Micro:bit, Arduino UNO ou ESP32 pour créer des horloges numériques, des réveils ou des systèmes automatisés.
3. Afficheur LCD I2C

L’afficheur LCD I2C sert à afficher les heures, minutes, secondes et la date
4. Câbles de Connexion (Jumper Wires)

Les fils de connexion assurent la liaison entre la carte ESP32, le module RTC DS1302 et l’afficheur LCD. Ils permettent de relier les broches d’entrée/sortie et d’alimentation.
6- Breadboard (Plaque d'essai) :

Une breadboard est utile pour créer un circuit temporaire et connecter facilement les composants entre eux.


1- Connexion du module RTC DS1302 à la carte ESP32
| RTC DS1302 | Carte ESP32 |
|---|---|
| CLK | GPIO 19 |
| DAT | GPIO 18 |
| RST | GPIO 5 |
| GND | GND |
| VCC | 5V |
2- Connexion de l’afficheur LCD I2C à la carte ESP32
| Afficheur LCD I2C | Carte ESP32 |
|---|---|
| VCC | 5V |
| GND | GND |
| SDA | GPIO 20 |
| SCL | GPIO 19 |
Le programme MicroPython permet de réaliser une horloge numérique en utilisant la carte ESP32, le module RTC DS1302 et un afficheur LCD I2C. Il permet d’afficher automatiquement l’heure, la date et le jour de la semaine sur l’écran LCD.
On commence par l’importation de ces bibliothèques:
i2c_lcd et lcd_api → pour afficher les informations sur l’écran LCD I2C
ds1302 → pour contrôler le module RTC DS1302
Voici le code en Micropython qui implémente le fonctionnement du système :
|
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# Importer la classe Pin pour contrôler les broches GPIO # et la classe I2C pour la communication I2C from machine import Pin, I2C # Importer la bibliothèque pour contrôler l'afficheur LCD I2C from i2c_lcd import I2cLcd # Importer la bibliothèque du module RTC DS1302 import ds1302 # Importer la bibliothèque time (utile pour les délais) import time # ================= CONFIGURATION DE L'AFFICHEUR LCD I2C ================= # Définir l'adresse I2C de l'écran LCD (souvent 0x27 ou 0x3F) I2C_ADDR = 0x27 # Initialiser la communication I2C # I2C(0) : bus I2C numéro 0 # scl=Pin(22) : broche GPIO22 connectée à SCL # sda=Pin(21) : broche GPIO21 connectée à SDA # 4 : nombre de lignes de l'écran # 20 : nombre de colonnes de l'écran lcd = I2cLcd(I2C(0, scl=Pin(22), sda=Pin(21)), I2C_ADDR, 4, 20) # Effacer l'écran LCD lcd.clear() # ================= CONFIGURATION DU MODULE RTC DS1302 ================= # Définir les broches connectées au module RTC clk = Pin(19) # Broche CLK (horloge) dat = Pin(18) # Broche DAT (données) rst = Pin(5) # Broche RST (reset) # Créer un objet rtc pour contrôler le module DS1302 rtc = ds1302.DS1302(clk, dat, rst) # ================= RÉGLAGE DE LA DATE ET DE L'HEURE ================= # ⚠️ Cette instruction doit être exécutée UNE SEULE FOIS puis commentée # Elle permet de régler la date et l'heure dans le module RTC rtc.date_time([2026, 2, 6, 5, 9, 6, 0]) # Format : # [année, mois, jour, jour_semaine, heure, minute, seconde] # ================= FONCTION POUR CONVERTIR LE NUMÉRO DU JOUR EN TEXTE ================= def get_day(d): # Cette fonction convertit le numéro du jour en nom du jour if d == 1: return "Monday" if d == 2: return "Tuesday" if d == 3: return "Wednesday" if d == 4: return "Thursday" if d == 5: return "Friday" if d == 6: return "Saturday" if d == 7: return "Sunday" # ================= BOUCLE PRINCIPALE ================= while True: # Lire la date et l'heure actuelles depuis le module RTC t = rtc.date_time() # Positionner le curseur à la colonne 0, ligne 0 lcd.move_to(0, 0) # Afficher le titre du projet lcd.putstr("ESP32 Clock") # Positionner le curseur à la ligne 1 lcd.move_to(0, 1) # Afficher le jour de la semaine lcd.putstr("Day: " + get_day(t[3])) # Positionner le curseur à la ligne 2 lcd.move_to(0, 2) # Afficher la date sous le format jour/mois/année lcd.putstr("Date: {}/{}/{}".format(t[2], t[1], t[0])) # Positionner le curseur à la ligne 3 lcd.move_to(0, 3) # Afficher l'heure sous le format heure:minute:seconde lcd.putstr("Hour: {:02d}:{:02d}:{:02d}".format(t[4], t[5], t[6])) # Délai optionnel (à activer si nécessaire) # time.sleep(1) # Effacer l'écran (optionnel, généralement non nécessaire) # lcd.clear() |
La robotique éducative joue un rôle important dans l'éducation des enfants et des jeunes en les aidant à acquérir des compétences en science et technologie.
Dans ce cadre notre site web représente une excellente ressource pour les parents, les enseignants et les enfants qui souhaitent découvrir la robotique.
Zaouiet Kontech-Jemmel-Monastir-Tunisie
+216 92 886 231
medaliprof@gmail.com
Site robotique réalisé par Mohamed Ali Haj Salah - Prof Info