🛠 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

Objectifs

Endormir le ESP32-C3 en deep sleep et le réveiller par un bouton grâce à une broche du domaine RTC. Le C3 descend typiquement à quelques microampères en deep sleep — encore sous la barre des 150 µA de l'ESP32 classique — et se réveille en moins d'une seconde. Vous apprendrez ext0_wakeup, le domaine RTC et la lecture de la cause de réveil.

Matériel

Code complet

#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'état bas
  rtc_gpio_hold_en(GPIO_NUM_0);

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

void loop {}   // setup est rejoue a chaque réveil

Vérification attendue

Après le message « Deep sleep… », la carte devient silencieuse ; un appui sur le bouton relié à GPIO0 vers GND la réveille et la console affiche « Réveillé par le bouton ! ». L'ampèremètre indique une consommation de l'ordre du microampère pendant le sommeil.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels