Différences entre les versions de « ESP8266-Diminuer la consommation »

De MediaWiki UOF
Aller à la navigation Aller à la recherche
(Page créée avec « 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 : [https://www.bakke.online/index.php/2017/05/21/reducing-wifi-power-consumption-on-esp8266-part-2/] »)
 
 
(17 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
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.
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 : [https://www.bakke.online/index.php/2017/05/21/reducing-wifi-power-consumption-on-esp8266-part-2/]
Les informations présentées dans cette page ont été largement inspirées par celle ci : [https://www.bakke.online/index.php/2017/05/21/reducing-wifi-power-consumption-on-esp8266-part-2 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é===
[[Fichier:ESP8266 consommation minimale en deepsleep.png]]
 
===Programme utilisé===
<pre>
void setup() {
}
void loop() {
}
</pre>
===Mesure de courant===
[[Fichier: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é===
<pre>
#include <ESP8266WiFi.h>
void setup() {
  WiFi.mode( WIFI_OFF );
  WiFi.forceSleepBegin();
  delay( 1 );
}
void loop() {
}
</pre>
===Mesure de courant===
[[Fichier: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 :
<pre>
WiFi.forceSleepWake();
delay( 1 );
</pre>
 
==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.
<pre>
ESP.deepSleep( SLEEPTIME, WAKE_RF_DISABLED );
</pre>
 
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é===
<pre>
#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() {
}
</pre>
 
===Mesure de courant===
[[Fichier: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.
 
L'économie d'énergie est approximativement de 1,4 µAh à chaque réveil (130 mA pendant 38 ms)
 
==Conclusion==
Au réveil si le Wifi est activé (même s'il n'est pas utilisé : consommation '''77 mA'''
 
Si l'on désactive le Wifi au rveil, la consommation chute à  '''21 mA'''
 
On peut gagner quelques microampère/heure en désactivant le Wifi avant de mettre l'ESP en deep Sleep
 
==TEST 4 : modification de la sortie GPIO15==
La sortie GPIO15 est reliée à la masse via une résistance de 12 kilo ohms. Selon la configuration de cette broche la consommation évolue. Les consommations suivantes sont données pour une phase de fonctionnement comme dans le test 2.
 
INPUT => 21 mA
 
OUTPUT (LOW) => 21 mA
 
OUTPUT (HIGH) => '''22 mA'''
 
Pour éviter une surconsommation inutile et, dans la mesure où le circuit l'autorise, il vaut mieux maintenir cette sortie en entrée ou à l'état bas si elle est en sortie.
 
==Liens Wiki==
[[Les cartes programmables]]
 
[[Analyseur de courant simplifié]]

Version actuelle datée du 21 février 2022 à 09:27

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.

L'économie d'énergie est approximativement de 1,4 µAh à chaque réveil (130 mA pendant 38 ms)

Conclusion

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

Si l'on désactive le Wifi au rveil, la consommation chute à 21 mA

On peut gagner quelques microampère/heure en désactivant le Wifi avant de mettre l'ESP en deep Sleep

TEST 4 : modification de la sortie GPIO15

La sortie GPIO15 est reliée à la masse via une résistance de 12 kilo ohms. Selon la configuration de cette broche la consommation évolue. Les consommations suivantes sont données pour une phase de fonctionnement comme dans le test 2.

INPUT => 21 mA

OUTPUT (LOW) => 21 mA

OUTPUT (HIGH) => 22 mA

Pour éviter une surconsommation inutile et, dans la mesure où le circuit l'autorise, il vaut mieux maintenir cette sortie en entrée ou à l'état bas si elle est en sortie.

Liens Wiki

Les cartes programmables

Analyseur de courant simplifié