La consommation d'énergie de l'ESP32 peut être réduite avec les modes de veille
L'ESP32 est un appareil incroyable : il est capable de traiter des informations à des centaines de mégahertz, de communiquer via WiFi et Bluetooth et d'accomplir une grande variété de tâches grâce à ses broches GPIO. Cependant, on pourrait dire que de grands pouvoirs impliquent une grande…consommation d'énergie.
Pour être juste, la consommation d'énergie de l'ESP32 est en fait assez faible comparée à celle de dispositifs similaires d'il y a une décennie. Pour les applications modernes de l'Internet des objets, cependant — surtout lorsqu'une batterie est impliquée — il peut être un gourmand en énergie relatif, consommant des centaines de milliampères de courant lorsqu'il est entièrement alimenté.
La bonne nouvelle est que l'ESP32 dispose également d'un système de modes de sommeil et d'hibernation. Lorsqu'ils sont utilisés avec précaution, ces modes permettent de maîtriser l'appétit énergétique de l'ESP — ou du moins de le confiner à de courtes périodes d'activité.
Modes veille
Les modes de veille prolongée ESP32 et autres modes d'alimentation sont décrits dans le tableau ci-dessous, extrait de sa fiche technique :
| Mode d'alimentation | Description | Consommation d'énergie | |
| Modem-sleep | Le CPU est sous tension. | 240 MHz (Double cœur(s)) | 30 mA ~ 68 mA |
| 240 MHz (Simple cœur(s)) | N/A | ||
| 160 MHz (Double cœur(s)) | 27 mA ~ 44 mA | ||
| 160 MHz (Simple cœur(s)) | 27 mA ~ 34 mA | ||
| Vitesse normale : 80 MHz (Double cœur(s)) | 20 mA ~ 31 mA | ||
| Vitesse normale : 80 MHz (Simple cœur(s)) | 20 mA ~ 25 mA | ||
| Light-sleep | - | 0,8 mA | |
| Deep-sleep | Le coprocesseur ULP est sous tension. | 150 µA | |
| Motif surveillé par capteur ULP | 100 µA @1% duty | ||
| Minuterie RTC + mémoire RTC | 10 µA | ||
| Hibernation | Minuterie RTC uniquement | 5 µA | |
| Éteindre | CHIP_PU est réglé à un niveau bas, la puce est éteinte. | 1 µA | |
Capture d'écran à partir de la fiche technique
L'ESP32 possède cinq modes basse consommation : ESP32 modem-sleep, light-sleep, deep-sleep, hibernation, et power off. Les modes modem-sleep et deep-sleep ont plusieurs sous-modes, avec différents taux de consommation d'énergie basés sur les capacités de traitement actives. L'hibernation arrête presque toutes les fonctionnalités de la puce, excepté pour un RTC qui permet de sortir de ce mode après une durée définie. Le mode power off est activé en réponse à la broche CHIP_PU réglée sur basse tension et nécessite une interaction externe pour redémarrer le traitement.
L'avantage de tout cela est que les modes basse consommation de l'ESP32 peuvent consommer entre 68 mA et 5 µA, soit respectivement 0,068 A et 0,000005 A, sans tenir compte du mode power off. L'inconvénient est que chaque mode limite l'utilité de l'ESP32, comme indiqué ci-dessous :
- Modem-sleep : La communication sans fil est coupée.
- Light-sleep : Met en pause le processeur mais conserve les états de mémoire.
- Deep-sleep : Coupe l'alimentation de la mémoire principale de l'ESP32. Une quantité limitée de mémoire RTC (horloge en temps réel) est conservée et peut être utilisée au réveil. Le processeur ULP (ultra-basse puissance) est actif dans deux des trois sous-modes deep-sleep, permettant l'exécution de tâches simples et la surveillance des entrées.
- Hibernation : Laisse seulement le RTC et un nombre limité de broches GPIO actives pour le réveil. Aucune mémoire n'est conservée.
- Power off : Doit être allumé depuis l'extérieur. La consommation d'énergie de 1 µA est négligeable dans la plupart des situations.
En négligeant les effets de tension, une petite batterie rechargeable de 3,7 V et 850 mAh pourrait alimenter un ESP32 en modem-sleep pendant environ 12,5 heures. Le light-sleep pourrait durer plus de 1000 heures. L'hibernation en deep-sleep de niveau moyen offre 8500 heures de fonctionnement – environ un an – tandis qu'un état d'hibernation pourrait théoriquement être maintenu pendant près de 20 ans. Bien sûr, l'appareil devra se réveiller par intermittence pour être utile, mais avec une planification minutieuse, une configuration ESP32 peut aboutir à une durée de vie extrêmement longue entre les charges de la batterie.
Différences entre les cartes de développement ESP32 en mode sommeil profond
Capture d'écran du tableau de données
Lorsqu'on discute de la consommation d'énergie, une puce ou un module ESP32 n'est qu'une partie du tableau électronique. Pour l'expérimentation, vous utiliserez probablement une carte de développement. Pour des conceptions électroniques plus abouties, une disposition personnalisée des pièces associées sera nécessaire pour faire fonctionner un objet IoT. Avec une programmation soignée, l'utilisation d'un ESP32 peut être très économe en énergie, mais l'électronique environnante doit être soigneusement prise en compte.
Pour illustrer ce point, j'ai connecté une carte de développement Adafruit HUZZAH32 ESP32 à une alimentation électrique et à un équipement de mesure de courant, ainsi qu'une carte DFRobot DFR0478 ESP32. Les deux ont été présentées dans ce post sur l'horloge vidéo composite ESP32 et ont eu des performances différentes dans ce qui pourrait être considéré comme un cas d'utilisation assez niche. Peut-être que l'efficacité énergétique se révélerait également être une caractéristique distinctive entre les deux.
Pour tester cela, j'ai utilisé un croquis modifié de l'exemple “TimerWakeUp” ESP32 Arduino qui entre en sommeil profond, se réveille, allume la lumière LED intégrée, puis recommence le cycle en se rendormant. 5,3V ont été fournis à chaque carte pour être convertis au niveau de tension ~3,3 nécessaire pour l'ESP32. Les résultats de consommation étaient les suivants :
HUZZAH32: veille = 6.6mA réveil = 43.2mA réveil + LED = 44.6mA
DFR0478: veille = .02mA réveil = 39.7mA réveil + LED = 40.0mA
Pour être juste, une meilleure simulation de l'utilisation réelle de l'IoT aurait pu être de mesurer le courant à travers le port de la batterie. Néanmoins, il semble que dans ce scénario, la carte DFR0478 FireBeetle soit beaucoup plus efficace en mode veille que son homologue.
Le HUZZAH32 consomme 7000µA (7mA) en mode sommeil profond à partir de la batterie, à peu près ce que j'avais mesuré dans mon expérience. Une analyse d'Andreas Spiess a révélé que le DFR0478 consomme 53µA (.053mA) de courant de la batterie en mode sommeil profond. C'est significativement plus que ce que j'avais mesuré sur le DFR0478, cependant, son rapport utilise une entrée d'alimentation différente et une version antérieure de la carte (2.0 contre 4.0 que j'ai testée). Cette mesure atteint également les limites inférieures de ce que mon multimètre peut signaler, ce qui pourrait influencer son exactitude. En guise de mise en garde finale, le FireBeetle testé utilise un module WROOM-32D ESP32, tandis que le HUZZAH32 utilise un WROOM-32E.
Tout cela étant dit, il y a des ordres de grandeur de différence entre les deux cartes testées, ce qui illustre bien que le circuit supportant un ESP32 peut avoir un effet dramatique sur la consommation d'énergie.
Consommation d'énergie de l'ESP32 maîtrisée par les modes veille
L'ESP32 est un appareil extrêmement puissant qui peut nécessiter une quantité relativement importante d'énergie pour fonctionner. Cependant, avec une programmation soignée, il est possible que l'un de ces appareils fonctionne sur batterie pendant des semaines, des mois, voire plus. La clé est de comprendre les compromis impliqués dans la conception à faible consommation d'énergie, et ce qui peut être omis tout en obtenant une performance acceptable.
Newsletter
Êtes-vous sur la liste ?
Inscrivez-vous pour recevoir des offres exclusives, les annonces de produits et les dernières nouvelles de l'industrie.

Étiquettes d'article