Veille profonde ESP8266 avec Arduino IDE (NodeMCU)

Veille profonde ESP8266 avec Arduino IDE (NodeMCU)

Ce guide montre comment utiliser la veille profonde avec l’ESP8266 (NodeMCU) à l’aide de l’IDE Arduino. Nous couvrirons le sommeil profond avec réveil par minuterie et le sommeil profond avec réveil externe à l’aide de la broche de réinitialisation (RST).

ESP-01 ESP8266 NodeMCU Deep Sleep avec Arduino IDE

Pour mettre l’ESP8266 en mode veille profonde, utilisez ESP.deepSleep (États-Unis) et passer en argument le temps de sommeil en microsecondes. Le GPIO 16 doit être connecté à la broche de réinitialisation (RST) pour que l’ESP8266 puisse se réveiller.

Pour mettre l’ESP8266 en mode veille profonde pour une durée d’utilisation indéterminée ESP.deepSleep(0). L’ESP8266 se réveillera lorsque la broche RST recevra un signal LOW.

Regardez le didacticiel vidéo

Ce guide est disponible en format vidéo (voir ci-dessous) et en format écrit (continuez à lire cette page).

YouTube video

Contenu connexe : Veille profonde ESP32 avec Arduino IDE et sources de réveil

Présentation du mode veille profonde

Si vous avez réalisé un projet avec une carte ESP8266 alimentée par batterie, ou si vous venez de connecter votre carte ESP8266 NodeMCU à une banque d’alimentation. Après l’avoir fait fonctionner pendant un certain temps, vous vous rendez compte que la batterie ne dure pas longtemps, surtout si vous utilisez le Wi-Fi.

Sources d'alimentation portables ESP8266 ESP32

Si vous mettez votre ESP8266 en mode veille profonde, cela réduit la consommation d’énergie et vos batteries dureront plus longtemps.

Avoir l’ESP8266 en mode veille profonde signifie couper avec les activités qui consomment plus d’énergie pendant le fonctionnement (comme le Wi-Fi) mais laisser juste assez d’activité pour réveiller le processeur lorsque quelque chose d’intéressant se produit.

Types de sommeil

Il existe trois types différents de mode veille : veille du modem, sommeil léger, et sommeil profond. Le tableau ci-dessous montre les différences entre chaque mode (informations de la fiche technique ESP8266).

Article Modem-veille Sommeil léger Sommeil profond
Wifi DÉSACTIVÉ DÉSACTIVÉ DÉSACTIVÉ
Horloge système AU DÉSACTIVÉ DÉSACTIVÉ
RTC AU AU AU
CPU AU En attente DÉSACTIVÉ
Courant du substrat 15mA 0,4 mA ~20 uA
Courant moyen (DTIM = 1) 16,2 mA 1,8 mA
Courant moyen (DTIM = 3) 15,4 mA 0,9 mA
Courant moyen (DTIM = 10) 15,2 mA 0,55 mA

Noter: la consommation d’énergie sur la table se réfère à l’ESP8266 en tant que puce autonome. Si vous utilisez une carte de développement, ils ont des composants passifs qui utilisent plus de courant.

Ils ont tous des objectifs différents et doivent être utilisés dans des applications différentes.

Dans cet article, nous aborderons le mode veille prolongée. Tout est toujours éteint, sauf l’horloge en temps réel (RTC), qui permet à l’ESP8266 de suivre l’heure.

ESP8266 Mode veille profonde pour économiser de l'énergie

Il s’agit de l’option la plus économe en énergie et la puce ESP ne consomme qu’environ 20 uA. Cependant, si vous utilisez une carte de développement complète avec un programmateur intégré, des LED, etc., vous ne pourrez pas atteindre un état d’alimentation aussi faible.

Croquis de sommeil profond

Avec le sommeil profond, un exemple d’application ressemble à ceci :

  1. L’ESP8266 se connecte au Wi-Fi
  2. L’ESP8266 effectue une tâche (lit un capteur, publie un message MQTT, etc.)
  3. Dort pendant une période de temps prédéfinie
  4. L’ESP8266 se réveille
  5. Le processus est répété maintes et maintes fois

Sources de réveil

Après avoir mis l’ESP8266 en mode veille profonde, il existe différentes manières de le réveiller :

  • Réveil par minuterie #1 : l’ESP8266 se réveille après une période de temps prédéfinie
  • #2 réveil externe : l’ESP8266 se réveille lorsque vous appuyez sur le bouton RST (l’ESP8266 redémarre)

Pour les projets à faible consommation d’énergie, vous pouvez envisager d’utiliser la carte ESP32 qui offre des modes de veille plus profonds et des sources de réveil.

#1 ESP8266 Veille profonde avec minuterie de réveil

Pour utiliser la minuterie de réveil avec ESP8266, vous devez connecter la broche RST au GPIO 16 qui est étiqueté D0, dans un Carte NodeMCU. Suivez simplement le schéma suivant :

ESP8266 NodeMCU GPIO16 à RST (veille profonde)

Connectez la broche RST au GPIO 16 uniquement après avoir téléchargé le code.

Si vous regardez le brochage NodeMCU, vous pouvez voir que GPIO 16 est une broche spéciale et qu’il a une fonction WAKE.

GPIO 16 broche de réveil ESP8266 NodeMCU

Lecture recommandée: Guide de référence de brochage ESP8266

La broche RST de l’ESP8266 est toujours HAUTE pendant que l’ESP8266 est en cours d’exécution. Cependant, lorsque la broche RST reçoit un signal LOW, elle redémarre le microcontrôleur.

Si vous définissez une minuterie de sommeil profond avec l’ESP8266, une fois la minuterie terminée, GPIO 16 envoie un signal LOW. Cela signifie que le GPIO 16, lorsqu’il est connecté à la broche RST, peut réveiller l’ESP8266 après une période de temps définie.

Esquisse de réveil de la minuterie ESP8266 NodeMCU

Après avoir installé le module complémentaire ESP8266 pour Arduino IDE (comment installer la carte ESP8266 dans Arduino IDE), accédez à Outils et sélectionnez « NodeMCU (Module ESP-12E)”. Voici le code que vous devez télécharger sur votre ESP :

/*
 * ESP8266 Deep sleep mode example
 * Rui Santos 
 * Complete Project Details https://www.raspberryme.com
 */
 
void setup() {
  Serial.begin(115200);
  Serial.setTimeout(2000);

  // Wait for serial to initialize.
  while(!Serial) { }
  
  // Deep sleep mode for 30 seconds, the ESP8266 wakes up by itself when GPIO 16 (D0 in NodeMCU board) is connected to the RESET pin
  Serial.println("I'm awake, but I'm going into deep sleep mode for 30 seconds");
  ESP.deepSleep(30e6); 
  
  // Deep sleep mode until RESET pin is connected to a LOW signal (for example pushbutton or magnetic reed switch)
  //Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal");
  //ESP.deepSleep(0); 
}

void loop() {
}

Afficher le code brut

Dans cet exemple, nous imprimons un message dans le Serial Monitor :

Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal");

Après cela, l’ESP8266 se met en veille pendant 30 secondes.

ESP.deepSleep(30e6);

Pour mettre l’ESP8266 en veille profonde, vous utilisez ESP.deepsleep (États-Unis) et passer en argument le temps de sommeil en microsecondes.

Dans ce cas, 30e6 correspond à 30000000 microsecondes soit 30 secondes.

Après avoir téléchargé le code, appuyez sur le bouton RST pour commencer à exécuter le code, puis connectez RST au GPIO 16. L’ESP8266 doit se réveiller toutes les 30 secondes et imprimer un message dans le moniteur série comme indiqué ci-dessous.

ESP8266 Veille profonde avec minuterie Réveil ESP8266 Moniteur série

Cet exemple imprime simplement un message dans le moniteur série, mais dans une application du monde réel, vous effectuerez une tâche utile comme faire une demande, publier des lectures de capteurs, etc.

Circuit de réveil de la minuterie ESP-01

Si vous voulez faire une configuration similaire avec une carte ESP-01, vous devez souder un fil comme indiqué ci-dessous. Cette petite broche est GPIO 16 et elle doit être connectée à la broche RST.

ESP8266 ESP-01 Activer la minuterie de réveil GPIO 16 à RST

Cependant, les broches sont si petites qu’il est vraiment difficile de souder un fil comme celui-ci au GPIO 16 sur l’ESP-01… Donc, pour ce mode de réveil, vous devez utiliser la carte NodeMCU ou une puce ESP12-E nue.

ESP8266 Puce Brochage GPIO 16 broches GPIO

Lecture recommandée: Référence de brochage ESP8266

#2 ESP8266 Sommeil Profond avec Réveil Externe

Vous pouvez également réveiller l’ESP8266 avec un réveil externe, comme la pression d’un bouton ou d’un interrupteur à lames. Il vous suffit de mettre l’ESP8266 en mode veille prolongée pendant une durée indéterminée, puis de régler la broche RST sur LOW pour le réveiller.

Pour tester cette configuration, câblez un bouton-poussoir à votre carte ESP8266 comme indiqué dans le schéma suivant. Lorsque vous appuyez sur le bouton-poussoir, la broche RST passe au niveau BAS.

Schéma du circuit de réveil externe ESP8266 NodeMCU

Si vous utilisez un ESP-01, suivez plutôt le diagramme suivant.

Schéma du circuit de réveil externe ESP8266 ESP-01

Esquisse de réveil externe ESP8266

Ensuite, téléchargez le code suivant sur votre carte ESP8266.

/*
 * ESP8266 Deep sleep mode example
 * Rui Santos 
 * Complete Project Details https://www.raspberryme.com
 */
 
void setup() {
  Serial.begin(115200);
  Serial.setTimeout(2000);

  // Wait for serial to initialize.
  while(!Serial) { }
  
  // Deep sleep mode for 30 seconds, the ESP8266 wakes up by itself when GPIO 16 (D0 in NodeMCU board) is connected to the RESET pin
  //Serial.println("I'm awake, but I'm going into deep sleep mode for 30 seconds");
  //ESP.deepSleep(30e6); 
  
  // Deep sleep mode until RESET pin is connected to a LOW signal (for example pushbutton or magnetic reed switch)
  Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal");
  ESP.deepSleep(0); 
}

void loop() {
}

Afficher le code brut

Ce code met l’ESP8266 en mode veille profonde pour une durée indéterminée. Pour cela, il suffit de passer 0 en argument au sommeil profond() une fonction:

ESP.deepSleep(0);

L’ESP ne se réveillera que lorsque quelque chose réinitialisera la carte. Dans ce cas, c’est la pression d’un bouton-poussoir qui tire la broche RST vers GND.

Lorsque vous appuyez sur le bouton-poussoir, l’ESP8266 se réveille, effectue la tâche programmée et se rendort jusqu’à ce qu’un nouvel événement de réinitialisation soit déclenché.

Courant de mesure

Lorsque la carte est en mode veille profonde, mesurez la consommation de courant avec un multimètre pour voir la quantité d’énergie qu’il consomme.

Voici comment placer les sondes de votre multimètre.

Mesurer le courant en mode veille profonde ESP8266

Lorsque l’ESP-01 est en mode veille prolongée, il n’utilise que 0,3 mA, soit environ 300 uA.

Mesurer le courant en mode veille profonde ESP8266

Gardez à l’esprit que lors d’une utilisation normale avec le Wi-Fi, l’ESP8266 peut consommer entre 50mA et 170mA.

Conclusion

Maintenant que vous savez utiliser le sommeil profond() fonction, votre projet alimenté par batterie peut durer plus longtemps.

Sources de sommeil profond et de réveil ESP8266

Vous pouvez également aimer d’autres projets ESP8266 :

Nous avons d’autres guides sur le sommeil profond qui pourraient vous intéresser :

Ceci est un extrait de ma domotique à l’aide de l’eBook ESP8266. Si vous aimez ESP8266 et que vous souhaitez en savoir plus. Je recommande de télécharger mon cours : Domotique avec ESP8266.

J’espère que ce guide a été utile. Merci d’avoir lu!

Mis à jour le 29 juillet 2019

  • ESP8266 NodeMCU V3 Module,Carte de Développement ESP-12E CH340 Compatible avec Ardui-no IDE/MicroPython.
    La carte de développement Nodemcu V3 ESP8266 est équipée d'un puissant microcontrôleur ESP6266 (ESP-12E) avec un WLAN 802.11 b / g / n et une antenne intégrée de 25dBm. Le module ESP-12E utilise le CH340G, performance stable, très pratique pour le débogage, il suffit d'utiliser un câble USB pour le connecter à l'ordinateur, vous pouvez télécharger le programme. Faible consommation d'énergie, le courant de veille profonde est de 10uA, le courant d'arrêt est inférieur à 5uA, la consommation d'énergie en veille est inférieure à 1,0mW. Cette carte de développement est composée de deux microcontrôleurs supplémentaires : la puce de mémoire flash est 25Q32 4M (32mbit) et la puce série est une puce CH340 améliorée. Cette carte de développement est composée de deux microcontrôleurs supplémentaires : la puce de mémoire flash est 25Q32 4M (32mbit) et la puce série est une puce CH340 améliorée.
  • diymore-IOT 2 pièces ESP8266 NodeMCU V3 Module,Carte de Développement ESP-12E CH340 Compatible avec Ardui-no IDE/MicroPython.
    La carte de développement Nodemcu V3 ESP8266 est équipée d'un puissant microcontrôleur ESP6266 (ESP-12E) avec WLAN 802.11 b / g / n et antenne 25dBm intégrée. ESP-12E Module used CH340G, stable performance, very convenient for debugging, only need to use mrico USB cable to connect it to the computer, you can download the programme. Faible consommation d'énergie, le courant de veille profonde est de 10uA, le courant d'arrêt est inférieur à 5uA, la consommation d'énergie en veille est inférieure à 1,0mW. Cette carte de développement est composée de deux microcontrôleurs supplémentaires : la puce de mémoire flash est 25Q32 4M (32mbit) et la puce série est une puce CH340 améliorée. Cette carte de développement se compose de deux microcontrôleurs supplémentaires : la puce de mémoire flash est 25Q32 4M (32mbit) et la puce série est une puce CH340 améliorée.
  • diymore 3 pièces ESP8266 WiFi NodeMCU Modules CP2102 12E compatibles avec IDE/Micropython
    Cette carte de développement ESP8266 prend en charge tous les ports E/S et sans fil 802.11, qui peuvent être téléchargés directement sans réinitialisation. Prend en charge le mode de fonctionnement STA/AP/STA+AP. Cette carte de développement dispose d'un micro-USB intégré avec flash et interrupteur de réinitialisation, qui est facile à programmer. ESP8266 CP2102 12E module sans fil série WiFi. API pilotée par des événements utilisés dans les applications réseau, elle favorise les développeurs à écrire du code pour les opérations MCU, accélérant considérablement votre processus de développement d'applications Internet of Things.