Objectifs
- Connecter l'M5Stack Core à un réseau Wi-Fi 802.11 b/g/n 2,4 GHz (le 5 GHz n'est pas supporté par l'ESP32 classique).
- Récupérer l'heure via NTP avec configTime et l'afficher sur l'écran.
- Comprendre qu'il n'y a pas de RTC sur cette carte (contrairement au Core2 et son BM8563) : l'heure est perdue à chaque extinction.
- Gérer l'affichage du fuseau Europe/Paris avec les règles d'heure d'été/hiver via TZ.
Matériel
- 1 M5Stack Core + accès Wi-Fi 2,4 GHz (SSID et mot de passe connus).
- Batterie chargée ou alimentation USB 5 V 500 mA minimum (le Wi-Fi appelle le pic de courant).
Code complet
#include <M5Unified.h>
#include <WiFi.h>
const char* SSID = "VOTRE_WIFI";
const char* PASS = "VOTRE_MOT_DE_PASSE";
// Europe/Paris : decalage -1 h, changement FR/dernier dimanche
const char* TZ_INFO = "CET-1CEST,M3.5.0,M10.5.0/3";
void setup {
Serial.begin(115200);
auto cfg = M5.config;
M5.begin(cfg);
M5.Display.setTextSize(2);
configTzTime(TZ_INFO, "pool.ntp.org", "time.cloudflare.com");
WiFi.begin(SSID, PASS);
Serial.print("Connexion Wi-Fi");
while (WiFi.status != WL_CONNECTED) {
delay(400); Serial.print(".");
M5.update;
if (M5.BtnA.wasPressed) { WiFi.disconnect; WiFi.begin(SSID, PASS); }
}
Serial.printf("\nIP : %s\n", WiFi.localIP.toString.c_str);
}
void loop {
struct tm t;
M5.Display.fillRect(0, 30, 320, 120, TFT_BLACK);
M5.Display.setCursor(10, 40);
if (getLocalTime(&t, 1000)) {
char buf[24];
strftime(buf, sizeof(buf), "%d/%m/%Y %H:%M:%S", &t);
M5.Display.println(buf);
Serial.println(buf);
} else {
M5.Display.println("Attente NTP...");
}
M5.Display.setCursor(10, 120);
M5.Display.printf("RSSI : %d dBm", WiFi.RSSI);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
Vérification attendue
- Après quelques secondes, l'écran affiche la date et l'heure locales (Europe/Paris) qui défilent à la seconde, plus le RSSI.
- Le moniteur série affiche l'adresse IP obtenue par DHCP.
- Après redémarrage (double-clic bouton rouge puis rallumage), l'heure repasse par « Attente NTP... » : preuve qu'il n'y a pas d'horloge temps réel matérielle.
Erreurs fréquentes
- SSID 5 GHz : l'ESP32 ne voit que le 2,4 GHz — vérifier la bande de la box.
- Oublier configTzTime avant WiFi.begin ou négliger TZ : l'heure affichée est en UTC (décalée de 1 ou 2 h).
- Utiliser un capteur sur l'ADC2 (G2, G4, G12-15, G25...) : l'ADC2 est bloqué tant que le Wi-Fi tourne ; rester sur l'ADC1 (G32-39).
- Boucle de reconnexion sans delay : brownout/reset sur alimentation USB faible (la carte demande jusqu'à 500 mA).
- Croire l'heure conservée hors tension : sans RTC ni pile, elle est perdue — rejouer la synchro NTP au démarrage.