sommeil-profond.ino
En deep sleep, l'ESP8266 tombe sous 20 µA : idéal pour un capteur sur pile. Le réveil se fait par le pont GPIO16→RST, et la RTC memory conserve le compteur de cycles entre deux remises à zéro.
Matériel requis
Un module ESP-12E (ESP8266EX, Wi-Fi 2,4 GHz) monté sur une carte NodeMCU / Wemos D1 mini, alimentée par micro-USB. Pont fil entre GPIO16 (D0) et RST sur le module (interne sur Wemos D1 mini).
Branchement
GPIO16 relié à RST. Sur batterie, alimenter directement le module : le régulateur LDO de la carte NodeMCU consomme plus que le 8266 endormi.
Fonctionnement
ESP.deepSleep coupe tout sauf la RTC ; au réveil le chip redémarre comme à la mise sous tension — seule la RTC memory (4 Ko) survit, où loge le compteur. WAKE_RF_DEFAULT garde la radio initialisée. Dans l'Arduino IDE, installez le paquet « esp8266 », choisissez « NodeMCU 1.0 (ESP-12E Module) » puis Téléverser (GPIO0 à LOW si le flash échoue). L'ADC A0 lit 0-1 V (diviseur NodeMCU : 0-3,3 V).
Pour aller plus loin
Réveillez sur un appui (circuit RC sur RST), ou adaptez la période à la criticité de la mesure.
sommeil-profond.ino
// Deep sleep 60 s — RST relie a GPIO16/D0 sur le module.
// Le compteur de cycles survit dans la RTC memory (4 Ko alimentee).
extern "C" {
#include "user_interface.h"
}
RTC_MEM uint32_t cycles; // RTC memory : conservee en deep sleep
void setup() {
Serial.begin(115200);
delay(100);
cycles++;
Serial.printf("\nCycle n°%u — lecture capteur, envoi, puis dodo\n", cycles);
// (mesure + envoi reseau courts ici)
Serial.println("Deep sleep 60 s...");
Serial.flush();
delay(10);
ESP.deepSleep(60 * 1000000ULL, WAKE_RF_DEFAULT);
// le module est REINITIALISE au reveil : setup() repart
}
void loop() {}