toughc5-rtc-sleep-wake.ino
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();
}