Etude de la consommation sur le ESP8266 et dérivés
Consommation en deepSleep
Avertissement
Beaucoup de sites sur internet vantent les consommations faibles des ESP8266, reprenant les informations disponibles sur le site du constructeur. Pourtant ces mêms sites utilisent pour preuve de ce qu'ils répètent, des modules de développement (NodeMCU, FireBeetle, D1 mini...). Si les données constructeurs sont exactes (on aurait tort d'en douter) ces informations ne sont valables que pour le module ESP8266 et non pour une carte de développement qui inclue d'autres circuits qui peuvent, eux aussi avoir leur propre consommation venant s'ajouter à la consommation de l'ESP. Ceci induit que certaine de ces cartes (Node MCU et D2 mini notamment) consomment beaucoup plus (jusqu'à mille fois plus) que l'ESP lorsque celui ci est mis en deep sleep. Les analyses proposées ici, portent sur un ESP8266 MOD et non sur un module de développement.
Pour fonctionner l'Esp nécessite au moins 2 résistances de 12 kilo ohms. L4augmentation de la valeur de ces résistance à des fins de réduction de la consommation globale peut entrainer des fonctionnements aléatoires. Ce montage (incluant les 2 résistances) sera utilisé comme base pour les essais présentés ici.
Schéma électrique
Le montage est donc le suivant :
Consommation mesurée
La mesure de consommation électrique en deep Sleep donne 17 µA ce qui est bien en dessous de la consommation indiquée par le constructeur (20 mA).
Estimation de la durée de vie d’un module sur batterie
Pour cette étude 2 modules seront utilisés. Les deux modules sont composés des mêmes éléments :
- un ESP8266MOD,
- un capteur de température et d'humidité DHT22
- un Chargeur microlipo Adafruit
- une batterie 400 mAh
2 résistances de 12 k viennent completer le circuit. La diférence entre les deux modules se situe au niveau de l'alimentation du capteur DHT22.
- Dans le module A, le capteur est alimenté en permanence (directement sur la batterie).
- Dans le module B, le capteur est alimenté par une GPIO de l'ESP. Donc uniquement le temps nécessaire à la mesure.
Le programme de chaque module se compose des phases suivantes :
- une initialisation (durée environ 2 secondes)
- une mesure des paramètres du DHT22 (environ 1 seconde)
- une connection au Wifi et un envoi des données (5 à 7 secondes)
- une phase de veille de 1 minute.
Ces 4 phases constituent un cycle de mesure.
Les consommations électriques lors de ces 4 phases ont été mesurées à l’aide d’un multimètre. Cette mesure imprécise donne toutefois une bonne idée de la consommation. Les deux premières phases ayant la même consommation ont été regroupées en une seule phase. Les durées sont estimées en fonction des fluctuations de la valeur de l'intensité lue.
Premières mesures : deep sleep 1 minute
Les résultats sont donnés dans le tableau suivant :
Mode | Module | Consommation (µA) | Méthode | Durée (s) | Méthode |
Fonctionnement sans Wifi | A | 20000 | mesurée | 3 | estimée |
Fonctionnement sans Wifi | B | 20000 | mesurée | 3 | estimée |
Fonctionnement avec Wifi | A | 70000 | mesurée | 5 | estimée |
Fonctionnement avec Wifi | B | 70000 | mesurée | 5 | estimée |
Fonctionnement deep sleep | A | 55 | mesurée | 60 | estimée |
Fonctionnement deep sleep | B | 26 | mesurée | 60 | estimée |
Dans ces conditions, la consommation horaire peut être calculée :
Pour le module A : (20000 x 3 3600) + (70000 x 5 3600) + (55 x 60 / 3600) =114,80 µAh
Pour le module B : (20000 x 3 3600) + (70000 x 5 3600) + (26 x 60 / 3600) =114,31 µAh
Les deux modules sont alimentés par des batteries de 400 mAh. Ceci leur donne donc une autonomie estimée de ((durée d’un cycle : 68 secondes) :
Module A : 400000/114.80 = 3484 cycles soit 3484 x 68 secondes = 2J 17h 48m
Module B : 400000/114.31 = 3499 cycles soit 3499 x 68 secondes = 2J 18h 5 min
La différence est négligeable (0,43%).
Deuxièmes mesures : deep sleep 30 minutes
Les résultats sont alors les suivants :
Pour le module A : (20000 x 3 3600) + (70000 x 5 3600) + (55 x 1800 / 3600) = 141.39µAh
Pour le module B : (20000 x 3 3600) + (70000 x 5 3600) + (26 x 1800 / 3600) = 126.89µAh
Les deux modules sont alimentés par des batteries de 400 mAh. Ceci leur donne donc une autonomie estimée de ((durée d’un cycle : 1808 secondes) :
Module A : 400000/141.39 = 2829 cycles soit 2829 x 1808 secondes = 59j 4h 47m
Module B : 400000/114.31 = 3152 cycles soit 3152x 1808 secondes = 65j 23h 0m
Le gain en alimentant le capteur par le GPIO est de 11,4%.
Troisièmes mesures : durée de connection Wifi allongée (doublée)
Selon le cas, (éloignement du point d’accès, mauvaise qualité Wifi), la durée de connection au Wifi peut être plus longue. Dans l’exemple suivant elle a été doublée (10 sec) par rapport au temps initial des deux calculs précédents.
Durée de deep sleep de 1 minute
Dans ces conditions, la consommation horaire peut être calculée :
Pour le module A : (20000 x 3 3600) + (70000 x 10 3600) + (55 x 60 / 3600) =212.03 µAh
Pour le module B : (20000 x 3 3600) + (70000 x 10 3600) + (26 x 60 / 3600) =211.54 µAh
Les deux modules sont alimentés par des batteries de 400 mAh. Ceci leur donne donc une autonomie estimée de ((durée d’un cycle : 68 secondes) :
Module A : 400000/212.03 = 1886 cycles soit 1886 x 73 secondes = 1j 14h 15 m
Module B : 400000/211.54 = 1891 cycles soit 1891 x 73 secondes = 1j 14h 21 m
Le gain en alimentant le capteur par le GPIO est de 1%.
Durée de deep sleep 60 minutes
Les résultats sont alors les suivants :
Pour le module A : (20000 x 3 3600) + (70000 x 10 3600) + (55 x 1800 / 3600) = 238.61µAh
Pour le module B : (20000 x 3 3600) + (70000 x 10 3600) + (26 x 1800 / 3600) = 224.11µAh
Les deux modules sont alimentés par des batteries de 400 mAh. Ceci leur donne donc une autonomie estimée de ((durée d’un cycle : 1808 secondes) :
Module A : 400000/238.61 = 1676 cycles soit 1676 x 1813 secondes = 35j 4h 14m
Module B : 400000/224.11 = 1785 cycles soit 1785 x 1813 secondes = 37j 10h 57m
Le gain en alimentant le capteur par le GPIO 6,5% de gain.