« Module RTC DS3231 sur ESP32 » : différence entre les versions
Aller à la navigation
Aller à la recherche
Page créée avec « Avoir l'heure sur un ESP32, ça peut servir. En utilisant un module DS3231 ça marche. Voici le code Arduino correspondant. <pre> /* --- Résumé du programme --- 1. Connexion au réseau WiFi avec les identifiants fournis (SSID + mot de passe). 2. Initialisation du module RTC DS3231 via le bus I²C (SDA=21, SCL=22 sur ESP32). 3. Vérification de la présence du DS3231 : - Si non détecté → arrêt du programme. - Si perte d’alimenta... » |
(Aucune différence)
|
Version du 21 août 2025 à 21:48
Avoir l'heure sur un ESP32, ça peut servir.
En utilisant un module DS3231 ça marche.
Voici le code Arduino correspondant.
/*
--- Résumé du programme ---
1. Connexion au réseau WiFi avec les identifiants fournis (SSID + mot de passe).
2. Initialisation du module RTC DS3231 via le bus I²C (SDA=21, SCL=22 sur ESP32).
3. Vérification de la présence du DS3231 :
- Si non détecté → arrêt du programme.
- Si perte d’alimentation → remise à l’heure de compilation du sketch.
4. Activation de la LED intégrée (GPIO2) en mode ON.
5. Boucle principale :
- Lecture de la date et de l’heure courantes depuis le DS3231.
- Affichage de l’horodatage complet sur le port série (YYYY/MM/DD HH:MM:SS).
- Mise à jour toutes les secondes.
*/
#include <WiFi.h>
#include <Wire.h>
#include "RTClib.h"
// ----- Réseau -----
const char* ssid = "2.4GHz-MEMOIRE-VIVE";
const char* password = "memoirevive79";
const char* mqtt_server = "192.168.1.249"; // non utilisé pour l'instant
RTC_DS3231 rtc;
// ----- Connexion WiFi -----
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("✅ WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
// ----- Setup -----
void setup() {
pinMode(2, OUTPUT);
digitalWrite(2, HIGH); // LED ON
Serial.begin(115200);
setup_wifi();
Wire.begin(21, 22); // SDA=21, SCL=22 pour ESP32
if (!rtc.begin()) {
Serial.println("❌ Erreur : DS3231 introuvable !");
while (1);
}
if (rtc.lostPower()) {
Serial.println("⚠️ Perte d'alimentation, réglage auto de l'heure...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // règle l'heure à la compilation
}
}
// ----- Loop -----
void loop() {
DateTime now = rtc.now();
Serial.printf("%04d/%02d/%02d %02d:%02d:%02d\n",
now.year(), now.month(), now.day(),
now.hour(), now.minute(), now.second());
delay(1000);
}