sommeil-profond.ino

ESP8266 (module ESP-12E) · Fichier : sommeil-profond.ino · Langage : Arduino · Usage : Réveiller l'ESP8266 toutes les minutes (deep sleep)

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() {}

← Retour à la fiche