deepsleep-minute.ino
El deep sleep del ESP32-S3 baja a unos diez microamperios: solo vivo el minutero RTC, despertar tras 60 segundos con reinicio. RTC_DATA_ATTR preserva el contador en memoria lenta; el patrón de sensores ESP32 a pila.
Hardware
Un Arduino Nano ESP32 (ESP32-S3 de doble núcleo, Wi-Fi 2,4 GHz + Bluetooth Low Energy, formato físico compatible con el Nano, USB nativo, pines de 3,3 V únicamente). Nano ESP32 alimentada por USB para desarrollar; en producción, regulador LDO sobrio (el módulo reposa más que el silencio del SoC).
Cableado
Sin cableado; ojo a los pines U0TXD/SENSOR_0 si añades un despertar GPIO externo.
Funcionamiento
esp_sleep_enable_timer_wakeup programa el minutero en microsegundos; esp_deep_sleep_start lo corta todo y reinicia en el bootloader. RTC_DATA_ATTR pone la variable en RTC slow memory, a salvo del power-down.
Ejecución
Instala el paquete Arduino ESP32 Boards (o sigue la guía oficial del Nano ESP32), selecciona Arduino Nano ESP32 y carga. Los pines son de 3,3 V: nunca envíes 5 V a una entrada. El monitor serie usa el USB nativo.
Variantes
Despierta también con un sensor (esp_sleep_enable_ext0_wakeup) o combina con WiFi para un ciclo medida+envío breve.
deepsleep-minute.ino
// Deep sleep ESP32-S3 : tout est coupe sauf le minuteur RTC (~10 uA).
// La RAM est perdue : on sauve l'etat dans la NVS ou en RTC slow mem.
#include <Preferences.h>
Preferences prefs;
RTC_DATA_ATTR uint32_t cycles = 0; // survit au deep sleep (RTC slow)
void setup() {
Serial.begin(115200);
delay(100); // laisser le pont USB s'ouvrir (evite le blocage)
cycles++;
Serial.print(F("Reveil n°"));
Serial.println(cycles);
// ... mesure + envoi ici (WiFi/BLE au reveil) ...
Serial.println(F("Endormi 60 s..."));
Serial.flush();
delay(10);
esp_sleep_enable_timer_wakeup(60ULL * 1000000ULL); // 60 s en us
esp_deep_sleep_start(); // ne revient jamais ici
}
void loop() {} // jamais atteint : tout se passe dans setup