toughc5-rtc-sleep-wake.ino
Real-time clock management and deep sleep for extended battery life.
The RX8130CE RTC is connected via I2C. Ensure the CR2032 battery is installed. Wake-up depends on the internal wiring of the RTC INT pin to an ESP32 wake-up GPIO. Sleep current drops to ~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();
}