horloge.ino

M5StickC Plus2 (M5Stack) — kit portable « stick » ESP32-PICO-V3-02 (SKU K016-P2) · Fichier : horloge.ino · Langage : Arduino · Usage : Faire une montre connectée à l'heure réseau

Le grand classique du stick : l'heure NTP en gros chiffres, deux-points qui clignote à la seconde. L'exemple montre configTime et le repli visuel quand le Wi-Fi lâche.

Matériel requis

Un M5StickC Plus2 (ESP32-PICO-V3-02, écran 135×240, boutons A/B/C, buzzer passif G2, IR + LED rouge G19, IMU MPU6886, micro, batterie 200 mAh). Un point d'accès Wi-Fi 2,4 GHz.

Branchement

Aucun câblage. L'antenne du stick est capricieuse en métal : testez près du routeur.

Fonctionnement

configTime arme la SNTP du noyau ESP32 ; localtime_r remplit une structure tm à chaque tour. L'affichage ne se met à jour qu'au rythme du delay, la source d'heure reste le noyau. Dans l'Arduino IDE (paquet esp32), carte « M5StickCPlus2 » ; bibliothèque « M5StickCPlus2 » ou M5Unified. Sur la v2 sans PMIC, maintenez le bouton C > 2 s pour allumer ; HOLD (G4) maintient l'alimentation.

Pour aller plus loin

Alarme + buzzer du sketch mélodie, ou affichage de la météo du serveur de votre choix en bas d'écran.

horloge.ino

// Horloge NTP : l'heure reelle sur l'ecran du stick.
#include <M5Unified.h>
#include <WiFi.h>
#include <time.h>

const char *SSID = "votre-wifi";
const char *CLE = "votre-cle";

void setup() {
  auto cfg = M5.config();
  M5.begin(cfg);
  M5.Display.setRotation(1);
  WiFi.begin(SSID, CLE);
  for (int i = 0; i < 40 && WiFi.status() != WL_CONNECTED; i++) delay(250);
  configTime(3600 * 2, 0, "pool.ntp.org", "time.google.com");  // UTC+2
}

void loop() {
  M5.update();
  struct tm t;
  time_t maintenant = time(nullptr);
  localtime_r(&maintenant, &t);

  M5.Display.setTextSize(3);
  M5.Display.setCursor(10, 30);
  M5.Display.setTextColor(t.tm_sec % 2 ? TFT_WHITE : TFT_DARKGREY);
  M5.Display.printf("%02d:%02d\n", t.tm_hour, t.tm_min);
  M5.Display.setTextSize(1);
  M5.Display.setTextColor(TFT_GREEN);
  M5.Display.setCursor(10, 100);
  M5.Display.printf("%04d-%02d-%02d  %s",
                    t.tm_year + 1900, t.tm_mon + 1, t.tm_mday,
                    WiFi.status() == WL_CONNECTED ? "wifi" : "HORS LIGNE");
  delay(200);
}

← Retour à la fiche