🛠 Deep sleep et réveil RTC sur GPIO0

ESP32-C3 · intermediaire · Schéma : IMG-esp32-c3-intermediaire-2-deep-sleep-rtc-gpio0.svg — ESP32-C3 en deep sleep, bouton relié à GPIO0 (domaine RTC) réveillant la puce, consommation en microampères

Objetivos

Dormir el ESP32-C3 en modo deep sleep y despertarlo mediante un botón gracias a un pin del dominio RTC. El C3 baja típicamente a unos pocos microamperios en deep sleep — aún por debajo del umbral de 150 µA del ESP32 clásico — y se despierta en menos de un segundo. Aprenderás ext0_wakeup, el dominio RTC y la lectura de la causa del despertar.

Material

Código completo

#include <driver/rtc_io.h>

const uint8_t REVEIL = 0;   // GPIO0 = broche du domaine RTC

void setup {
  Serial.begin(115200);
  delay(500);

  esp_sleep_wakeup_cause_t cause = esp_sleep_get_wakeup_cause;
  if (cause == ESP_SLEEP_WAKEUP_EXT0)
    Serial.println(F("Reveille par le bouton !"));
  else
    Serial.println(F("Demarrage sur reset ou power-on"));

  rtc_gpio_init(GPIO_NUM_0);
  rtc_gpio_pullup_en(GPIO_NUM_0);    // bouton actif a l'etat bas
  rtc_gpio_hold_en(GPIO_NUM_0);

  esp_sleep_enable_ext0_wakeup(GPIO_NUM_0, 0);  // reveil si niveau BAS
  Serial.println(F("Deep sleep... appuyez sur GPIO0"));
  Serial.flush;
  esp_deep_sleep_start;
}

void loop {}   // setup est rejoue a chaque reveil

Verificación esperada

Después del mensaje « Deep sleep… », la placa se queda en silencio; una pulsación del botón conectado a GPIO0 hacia GND la despierta y la consola muestra « ¡Despertado por el botón! ». El amperímetro indica un consumo del orden del microamperio durante el sueño.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales