toughc5-rtc-sleep-wake.ino

Kit de desarrollo IoT resistente a la intemperie M5Stack ToughC5 (ESP32-C5) · Archivo : toughc5-rtc-sleep-wake.ino · Lenguaje : Arduino C++ · Uso : Réveiller le microcontrôleur toutes les heures via le RTC RX8130CE pour une économie d'énergie maximale.

Gestión de reloj en tiempo real y sueño profundo para una mayor autonomía.

El RTC RX8130CE está conectado vía I2C. Asegúrese de que la batería CR2032 esté instalada. La activación depende del cableado interno del pin INT del RTC a un GPIO de activación ESP32. La corriente de reposo baja a ~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();
}

← Volver a la ficha