DEEP SLEEP, L’ESP8266 basse consommation sommeil profond

Donc, vous avez construit ce projet génial en utilisant du matériel a base ESP8266 et de batterie LiPo, et de SparkFun ESP8266 Thing ou Adafruit plumes Hourra .  Vous venez de connecter votre NodeMCU à une batterie USB . Mais après une nuit d’essai grandeur nature, vous vous rendez compte que la batterie ne dure pas très longtemps. 

Lisez ces quelques lignes et passez en mode SLEEP…

Il existe quatre types de modes de sommeil pour l’ESP8266: absence de sommeil, sommeil moderne, sommeil léger et sommeil profond.

Ils ont tous des fonctions différentes:

En écrivant ses quelques lignes, j’ai pensé comparer avec l’ESP32, voici ce que dit le site d’espresssif.

Remarque:

• * Parmi les SoC de la série ESP32, les ESP32-D0WDQ6 et ESP32-D0WD ont une fréquence CPU maximale de 240 MHz, les ESP32-D2WD et les ESP32-S0WD ont une fréquence CPU maximale de 160 MHz.

• Lorsque le Wi-Fi est activé, la puce bascule entre les modes Actif et Modem-veille. Par conséquent, la consommation d’énergie change en conséquence.

• En mode veille modem, la fréquence de la CPU change automatiquement. La fréquence dépend de la charge du processeur et des périphériques utilisés.

• En veille prolongée, lorsque le coprocesseur ULP est activé, des périphériques tels que GPIO et I²C peuvent fonctionner.

• Lorsque le système fonctionne dans le modèle surveillé par le capteur ULP, le coprocesseur ULP fonctionne régulièrement avec le capteur ULP et le CAN avec un cycle de travail de 1%, de sorte que la consommation d’énergie est de 100 µA.

Revenons a nos moutons, voici la description des différents modes de sommeil.

NO SLEEP

Le paramètre No-Sleep gardera tout en permanence. De toute évidence, c’est le plus inefficace et drainera le plus courant. 

MODEM-SLEEP

Modem-sleep est le mode par défaut pour l’ESP8266. Cependant, il n’est activé que lorsque vous êtes connecté à un point d’accès.

En mode veille modem, l’ESP8266 désactive autant que possible le modem (WiFi). Il éteint le modem entre les intervalles DTIMBeacon. Cet intervalle est défini par votre routeur.

LIGHT SLEEP

Light-sleep remplit la même fonction que Modem-sleep, mais éteint également l’ horloge système et suspend le processeur. Le processeur n’est pas éteint; c’est juste au ralenti.

DEEP SLEEP

Tout est éteint sauf l’horloge temps réel (RTC), qui permet à l’ordinateur de conserver l’heure. Puisque tout est éteint, c’est l’option la plus économe en énergie. 

Si vous avez besoin de plus de détails, assurez-vous de consulter la documentation .

DEEP-SLEEP

Modem-sleep et Light-sleep sont utiles si votre ESP8266 doit encore fonctionner et que vous souhaitez disposer d’options d’alimentation supplémentaires. Ils sont également facilement configurables dans les paramètres WiFi de l’ ESP8266 . Mais, si vous avez besoin d’un certain contrôle de la puissance, le sommeil profond est la voie à suivre.

Avec Deep-sleep, notre structure d’application peut suivre les étapes suivantes:

  1. Effectuer une action (lire à partir d’un capteur)
  2. Dormir pendant quelques n microsecondes
  3. Répéter

Il est important de noter que le temps de sommeil est spécifié en microsecondes (µs).

Fait amusant, vous ne pouvez pas dormir pour toujours. Selon le SDK ESP8266, vous ne pouvez dormir que 4 294 967 295 µs, ce qui correspond à environ 71 minutes. Je crois d’ailleurs que l’ESP32 règle ces problèmes.

Connexion

Concernant le câblage du mode SLEEP rien de bien sorcier il faut raccorder la broche GPIO16 (D0) à la broche RST.

Passons maintenant à un extrait decode. Dans cet exemple, nous utiliserons l’interface de l’IDE Arduino.

/**
* An example showing how to put ESP8266 into Deep-sleep mode
*/
void setup() {

Serial.begin(115200);

Serial.setTimeout(2000);

// Wait for serial to initialize.
while(!Serial) { }
Serial.println(« I’m awake. »);
Serial.println(« Going into deep sleep for 20 seconds »);
ESP.deepSleep(20e6); // 20e6 is 20 microseconds
}
void loop() {
}

Dans cet exemple, nous nous connectons en série, passons en veille pendant 20 secondes et répétons. Vous pouvez utiliser cet exemple comme passe-partout pour d’autres programmes.

ESPEASY et DEEP SLEEP

L’ESP8266 peut être réglé sur sommeil profond avec ESPEASY. Vous devez toujours connecter GPIO-16 (D0) avec la broche RST pour que cela fonctionne.

Que fait le mode veille au réveil:

  • Effectuez une tentative de connexion au SSID et au SSID2 s’il est défini.
  • S’il ne parvient pas à se connecter et que vous avez activé l’option Mettre en veille en cas d’échec de la connexion , il se remettra immédiatement en veille.
  • Il enverra toutes les lectures du capteur en même temps (les délais sont ignorés, sauf pour Message Delay sur la page des paramètres avancés)
  • Il s’éteindra et dormira pendant le nombre de secondes défini dans le paramètre Délai de veille . Deepsleep utilise un compteur interne 32 bits en ussec. Cela signifie que cela fonctionne jusqu’à 4294 secondes, des délais plus longs ne fonctionneront pas. Par exemple, le temps de sommeil le plus long est d’environ 1 heure et 11 minutes .

Cela économise beaucoup d’énergie et vous permet d’utiliser l’ESP8266 avec des piles.

Notez qu’il est recommandé de définir l’intervalle des messages sur 100 (ou moins) dans la page des paramètres avancés, car vous souhaitez que l’unité diffuse des messages le plus rapidement possible afin d’économiser la précieuse batterie.

Utilisation du mode Veille prolongée pour les appareils alimentés par batterie, voir ici.

pour plus de détails c’est par là:
https://www.letscontrolit.com/wiki/index.php/SleepMode

Bref, vous l’aurez compris, si vous fabriquez un truc un peu nomade ou que vous souhaitez gagner en autonomie, pensez deep sleep.

Laisser un commentaire