toughc5-rtc-sleep-wake.ino

Kit de développement IoT étanche M5Stack ToughC5 (ESP32-C5) · Fichier : toughc5-rtc-sleep-wake.ino · Langage : Arduino C++ · Usage : Réveiller le microcontrôleur toutes les heures via le RTC RX8130CE pour une économie d'énergie maximale.

Gestion de l'horloge temps réel et mise en veille profonde pour une autonomie étendue.

Le RTC RX8130CE est connecté via I2C. Assurez-vous que la pile CR2032 est installée. Le réveil dépend du câblage interne du pin INT du RTC vers un GPIO de réveil ESP32. La consommation en veille passe à ~10µA.

toughc5-rtc-sleep-wake.ino

#include <M5ToughC5.h>
#include <RTClib.h>

RTC_DS3231 rtc; // Le RX8130CE est compatible via I2C

void setup() {
  M5.begin();
  Serial.begin(115200);
  
  if (!rtc.begin()) {
    Serial.println("RTC not found");
    while(1);
  }

  if (rtc.lostPower()) {
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
  
  M5.Display.drawString("Sleep Mode Active", 10, 10);
  delay(2000);
  
  // Configurer le réveil dans 1 heure (3600 secondes)
  // Note: M5Stack a souvent des fonctions spécifiques, ici on utilise l'alarme standard
  rtc.setAlarmEverySeconds(3600); 
  rtc.enableAlarm(3600); // 1 heure
}

void loop() {
  DateTime now = rtc.now();
  Serial.print("Time: ");
  Serial.println(now.timestamp());
  
  // Entrer en deep sleep
  // Le pin d'interruption du RTC doit être connecté à un pin capable de réveil (ex: GPIO 0 ou 45 selon config)
  // Pour le ToughC5, vérifier la doc M5 pour le pin RTC_INT
  esp_sleep_enable_ext0_wakeup(GPIO_NUM_0, 0); 
  
  Serial.println("Going to sleep...");
  delay(100);
  esp_deep_sleep_start();
}

← Retour à la fiche