D'après la datasheet de l'ESP32, le courant consommé en mode deep sleep (RTC) est d'environ 10µA. Cette page explique comment nous avons mesuré le courant réellement consommé par l'ESP32 FireBeetle DFR0478 en mode deep sleep. Une comparaison des mesures de différentes cartes ESP32 est consultable sur cette page.
Ces mesures ont été faites avec les versions suivantes :
Nous avons utilisé un multimètre Matrehit Energy qui peut mesurer des courant à partir de 10nA.
Le code source utilisé pour basculer en mode deep sleep est présenté ci-dessous. L'ESP32 reste 10 secondes en fonctionnement normal, puis bascule en mode deep sleep pendant 10 secondes avant de recommencer.
// Convert from microseconds to seconds
#define uS_TO_S_FACTOR 1000000ULL
// Duration of each cycle (deep sleep and wakeup)
#define TIME_TO_SLEEP 10
// Setup() is call on startup and wakeup from deep sleep mode
void setup() {
// Display a message in the console
Serial.begin(9600);
Serial.println("Wake up");
// Turn the built-in LED on during wake up
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH);
// TIME_TO_SLEEP seconds delais
delay(TIME_TO_SLEEP*1000);
// Display a message before deep sleep
Serial.println("Go to deep sleep");
// Turn off and keep off the built-in led during deep sleep
digitalWrite(LED_BUILTIN, LOW);
gpio_hold_en(GPIO_NUM_2);
// Set deep sleep duration
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
// Switch to deep sleep mode
esp_deep_sleep_start();
}
void loop() {}
Notez que la FireBeetle a une led intégrée. Nous utilisons cette led pour vérifier si l'ESP32 est en mode "deep-sleep" ou non. La led est allumée au début de la configuration et éteinte avant de de passer en veille profonde. Nous devons appeler la ligne cidessous pour maintenir l'état état du GPIO (la led reste éteinte pendant le sommeil profond) :
gpio_hold_en(GPIO_NUM_2);
Normal | Deep sleep | |
---|---|---|
Courant | 42mA | 10µA |
Puissance | 218mW | 0.052mW |
En mode normal, le courant est d'environ 42mA. En mode veille profonde, le courant est de 10µA. Comme vous pouvez le constater cette consommation est très proche des 10µA spécifiés dans la documentation de l'ESP32 :
Il y a plusieurs raisons pour lesquelles la consommation de courant est si faible. La conception a été optimisée autour de la consommation d'énergie. Tout d'abord, il n'y a pas de led d'alimentation. Il y a une led intégrée mais cette led peut être éteinte en passant en mode veille profonde comme nous l'avons fait précédemment.
Le CH340C est un convertisseur USB vers UART. Il est alimenté par la broche 16 (VCC), cette broche est connectée à V3. V3 est la sortie du régulateur de tension U3. Mais, U3 est alimenté par USBVCC qui provient du connecteur USB1. Cela signifie que le driver USB n'est pas alimenté si l'USB n'est pas connecté. En d'autres termes, la consommation d'énergie du CH340C est nulle lorsque l'USB est débranché.
Il en va de même pour le TP4056 (chargeur de batterie Li-Ion). Le chargeur est alimenté par USBVCC elle-même fournie par le connecteur USB. La consommation d'énergie de U4 est nulle lorsque l'USB n'est pas alimenté.
Le point suivant est le régulateur U5. Le régulateur de tension est un RT9080-33GJ5. Selon la documentation, ce régulateur de tension low drop out (LDO) ne nécessite que 2μA de ground current à vide. Il est clair que ce régulateur a un excellent rendement.
Mais, il y a encore une partie du schéma qui peut être analysée :
Ce diviseur de tension est utilisé pour mesurer la tension de la batterie. La sortie est connectée au convertisseur analogique/numérique A0. Les deux résistances sont connectées en permanence à la batterie. Il est facile de calculer le courant dissipé dans ce diviseur de tension :
$$ i = \dfrac{U}{R} = \dfrac{5}{1000000+1000000} = 2.5~µA $$
Notons que les résistances de shunt R10 et R11 ne sont pas soudées en usine. Si vous avez besoin de mesurer la tension de la batterie sur A0, vous devrez souder ces deux résistances par vous-même.
Vérifions si notre analyse est juste et conforme aux mesures. Ici les courants théoriques de chaque partie du FireBeetle sont :
La puissance consommée théorique est : 0.033 + 0.01 + 0.01 = 0.055mW.
La puissance mesurée est de 0,052mW. Cela fait de la FireBeetle DFR0478 la meilleure carte ESP32 que j'aie testée en termes de consommation d'énergie.