ESP8266-Diminuer la consommation

De MediaWiki UOF
Aller à la navigation Aller à la recherche

Cette page présente différents moyens de diminuer la consommation d'un ESP8266 afin d'augmenter la durée de vie d'un module équipé de ce microcontrôleur lorsqu'il est alimenté sur une baterie.

Les informations présentées dans cette page ont été largement inspirées par celle ci : Reducing WiFi power consumption on ESP8266, part 2

Introduction

Au réveil et par défaut, le Wifi est activé. Ceci implique une consommation minimum de l’ESP de 70 mA même si le Wifi n’est pas utilisé. Or, dans les IOT qui mesurent des données, envoient ces données par Wifi puis se rendorment, la consommation est un paramètre essentiel. Il pourrait être intéressant de réduire celle-ci autant que faire se peut.

Ainsi, pendant la phase de setup et de mesure il n’est nul besoin de laisser le Wifi en fonctionnement.

Lors des essais suivants, les mesures de courant ont été enregistrées à l'aide de l'Analyseur de courant simplifié.

Test 1 : démarrage simple (wifi activé par défaut)

Montage utilisé

ESP8266 consommation minimale en deepsleep.png

Programme utilisé

void setup() {
}
void loop() {
}

Mesure de courant

ESP8266-reduction de la consommation programme vide.png

Pour mémoire, les durées sont estimées, a précision de l'analyseur de courant n'étant pas suffisamment précise.

Test 2 : démarrage avec arrêt du Wifi

Montage utilisé

Identique au précédent test

Programme utilisé

#include <ESP8266WiFi.h>
void setup() {
  WiFi.mode( WIFI_OFF );
  WiFi.forceSleepBegin();
  delay( 1 );
}
void loop() {
}

Mesure de courant

ESP8266-reduction de la consommation wifi desactive a l init.png

Pour mémoire, les durées sont estimées, a précision de l'analyseur de courant n'étant pas suffisamment précise.

La réduction de consommation est notable : 21 mA au lieu de 77mA soit 27,3% de la consommation du premier test.

Avant de pouvoir utiliser la connection Wifi à nouveau, il sera nécessaire de réveiller la fonction Wifi de l'ESP :

WiFi.forceSleepWake();
delay( 1 );

Test 3 : Interdiction Wifi lors du réveil

Sur les courbes précédentes, on constate un pic de consommation lors du boot (jusqu'à 175 mA). Bien que cette phase soit très courte, il sera quand même intéressant de la limiter. Ceci est possible en interdisant l'activation de la fonction Wifi avant d'endormir l'ESP.

ESP.deepSleep( SLEEPTIME, WAKE_RF_DISABLED );

Dans cet essai la broche GPIO16 a été reliée à la broche RES afin que le compteur interne réalise un Reset de l'ESP à la fin de la pause de deep sleep.

Programme utilisé

#include <ESP8266WiFi.h>
void setup() {
  WiFi.mode( WIFI_OFF );
  WiFi.forceSleepBegin();
  delay( 1 );
  delay(100); // on ne fait rien pendant 100 ms
  ESP.deepSleep( 1000000, WAKE_RF_DISABLED ); //deep sleep 100 ms
}
void loop() {
}

Mesure de courant

ESP8266-reduction de la consommation wifi desactive avant deep sleep .png

On constate qu'à la mise sous tension apparait un pic de consommation important mais que ce pic n'est plus présent lors des réveils successifs.

Conclusion

Au réveil si le Wifi est activé (même s'il n'est pas utilisé : consommation 77 mA Wifi désactivé après le réveil : 21 mA



Liens Wiki

Les cartes programmables