🛠 Deep-sleep 7 µA et réveil externe (EXT0)

Arduino Nano ESP32 · avance · Schéma : IMG-nano-esp32-avance-2-nanoesp32-deep-sleep-ext0.svg — Carte en deep-sleep (microampères), bouton de réveil sur une broche EXT0 et minuteur de secours.

Objectifs

Atteindre le plancher de consommation du SoC (7 µA en deep-sleep, 240 µA en light-sleep selon la docs-db) et réveiller le Nano ESP32 par un événement externe (bouton) avec un réveil minuteur de sécurité. En deep-sleep le programme repart de setup : l'état ne survit qu'en RTC memory.

Matériel

Code complet

#include <esp_sleep.h>
#include <driver/gpio.h>

RTC_DATA_ATTR uint32_t reveils = 0;          // survit au deep-sleep (RTC slow)
const gpio_num_t BROCHE_REVEIL = GPIO_NUM_0; // EXT0 : GPIO0-15 (à confirmer)

void setup {
  Serial.begin(115200);
  delay(1500);
  reveils++;
  esp_sleep_wakeup_cause_t cause = esp_sleep_get_wakeup_cause;
  Serial.printf("Réveil n°%lu (cause %d : 4=EXT0, 5=timer)\n",
                (unsigned long)reveils, (int)cause);
  esp_sleep_enable_ext0_wakeup(BROCHE_REVEIL, 0);        // niveau bas
  esp_sleep_enable_timer_wakeup(60ULL * 1000000ULL);     // filet de 60 s
  Serial.println("Deep-sleep...");
  delay(100);                        // laisse le port série se vider
  esp_deep_sleep_start;
}

void loop {}   // jamais atteint : tout se passe dans setup

Vérification attendue

À chaque appui sur le bouton (ou à défaut toutes les 60 s), la carte redémarre, imprime le compteur de réveils — qui reprend là où il s'était arrêté grâce à RTC_DATA_ATTR — puis replonge. L'ampèremètre affiche quelques µA au repos.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels