deepsleep-minute.ino

Arduino Nano ESP32 · Archivo : deepsleep-minute.ino · Lenguaje : Arduino · Uso : Réveil toutes les minutes en deep sleep

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

← Volver a la ficha