toughc5-rtc-sleep-wake.ino

M5Stack ToughC5 Weatherproof IoT Dev Kit (ESP32-C5) · File : toughc5-rtc-sleep-wake.ino · Language : Arduino C++ · Use case : Réveiller le microcontrôleur toutes les heures via le RTC RX8130CE pour une économie d'énergie maximale.

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();
}

← Back to the board