reveil.ino

M5Stack Core (ESP32) — famille Basic / Gray (K001 / K002) · Fichier : reveil.ino · Langage : Arduino · Usage : Programmer une alarme sonore à heure fixe

L'horloge NTP du sketch SD devient réveil : comparaison heure courante au créneau 07:30, alarme sonore sur le speaker, arrêt net au bouton A. Le snooze bricolé par décalage NTP montre le prix du sans-RTC.

Matériel requis

Un M5Stack Core Basic/Gray (ESP32 dans un boîtier avec écran TFT 320×240, 3 boutons A/B/C, haut-parleur, micro SD, batterie 110 mAh). Wi-Fi pour l'heure ; aucun composant.

Branchement

Aucun câblage. En cas de coupure Wi-Fi, l'heure fige : l'alarme ne se déclenche plus (défaut sûr).

Fonctionnement

configTime pilote l'horloge système via SNTP ; la boucle compare tm_hour/tm_min. wasPressed évite le rebond sur l'arrêt. Le snooze reconfigure l'offset pour reculer l'heure de 10 minutes. Dans l'Arduino IDE (paquet esp32), carte « M5Stack-Core-ESP32 » ; installez la bibliothèque « M5Stack » (ou M5Unified) via le gestionnaire, puis Téléverser.

Pour aller plus loin

Sur M5StickC Plus2 (RTC interne), l'alarme survit à la coupure ; ici, ajoutez un buzzer autonome sur batterie.

reveil.ino

// Reveil NTP : sonne a 7 h 30, arret par bouton A, snooze 10 min par B.
#include <M5Stack.h>
#include <WiFi.h>
#include <time.h>

const char *SSID = "votre-wifi", *CLE = "votre-cle";
bool sonne = false;

void setup() {
  M5.begin(true, false, true, true);
  WiFi.begin(SSID, CLE);
  configTime(3600 * 2, 0, "pool.ntp.org");
  M5.Lcd.setTextSize(2);
}

void loop() {
  M5.update();
  struct tm t;
  time_t maintenant = time(nullptr);
  localtime_r(&maintenant, &t);
  M5.Lcd.setCursor(10, 60);
  M5.Lcd.printf("%02d:%02d:%02d", t.tm_hour, t.tm_min, t.tm_sec);

  if (!sonne && t.tm_hour == 7 && t.tm_min == 30) sonne = true;
  if (sonne) {
    M5.Speaker.tone(1200, 200);
    M5.Lcd.setTextColor(TFT_RED);
    M5.Lcd.drawString("REVEIL !", 100, 130, 3);
    if (M5.BtnA.wasPressed()) { sonne = false; M5.Speaker.mute(); }
    if (M5.BtnB.wasPressed()) {                   // snooze 10 min
      sonne = false;
      configTime(3600 * 2 - 600, 0, "pool.ntp.org");  // trick : heure -10 min
    }
  }
  delay(200);
}

← Retour à la fiche