En fonctionnement, un ESP8266 consomme environ 70mA. C'est peu, mais tout de même trop pour une utilisation sur batterie ou via panneau solaire! Il est possible de réduire ce courant utilisé en passant la puce dans un de ses modes "sleep". Il existe un sleep modem, qui met en pause seulement la puce wifi, mais conserve les capacités de calcul de l'ESP. Ce mode consomme seulement 15mA. Il existe un second mode, le light sleep, qui ne consomme que 0.9mA, et qui conserve des capacités de calcul limitées. Enfin, il existe un troisiéme mode, le deepsleep. Beaucoup plus économe car il ne consomme que 20uA (0,002mA), c'est aussi le mode le plus contraignant car l'esp ne dispose plus d'aucune possibilité de calcul et d'éxécution jusqu'a son reveil.
Pour cet article, on va s'interesser surtout au mode deepsleep.
Le mode deepsleep se démarre via la commande ESP.deepsleep(durée, mode_wifi)
en arduino, ou via la commande node.dsleep(1000000, 4)
en lua sur nodemcu.
Dés la fin de la commande, l'esp s'arrete et se met en veille. Le premier paramétre indique le temps de la mise en veille, et le second le mode du wifi au redémarrage.
Attention: A sa sortie de veille, l'ESP ne reprendra pas a la ligne suivante du deepsleep! Il recommencera le sketch/programme a zéro! C'est a vous dans votre programme de sauvegarder/charger ce qui convient pour reprendre l'activité la ou il faut.
Que l'on opte pour un reveil timé ou un reveil manuel, l'ESP a besoin d'une impulsion sur RST pour redémarrer. Si vous voulez un redémarrage via timer (1er paramétre du sleep), vous devez impérativement connecter la broche RST a D0! En effet, le timer est juste un circuit a part que l'on programme pour balancer une impulsion tout seul au bout de X millisecondes. Cette impulsion doit parvenir a la broche RST pour obtenir le résultat attendu.
L'avantage de savoir ça, c'est que si vous voulez reveiller l'ESP uniquement lors d'une action extérieure, il suffit de connecter RST a un capteur et le tour est joué.
Par exemple, il peux être une bonne idée de connecter un capteur PIR 3 broches a ce PIN RST. De cette façon, l'esp se reveillera uniquement lorsqu'une présence sera detectée. C'est trés économe car en l'abscence de détection, seul le capteur consomme de l'énergie !
Cependant ce mode a quelques limitations: