Le véritable courant consommé par l'ESP32 FireBeetle DFR0478 en mode deep sleep

Si la vidéo ne s'affiche pas, cliquez ici.

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.

Photo de l'ESP32 FireBeetle DFR0478

Code source

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); 

Résultats

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 :

Datasheet de l'ESP32 | Courant en veille profonde

Explications

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.

Schéma du convertisseur USB / série de la FireBeetle DFR0478

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é.

Schéma du chargeur de batterie TP4056 sur la FireBeetle DFR0478

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é.

Schéma du régulateur de tension de la FireBeetle DFR0478

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 :

Schéma de la mesure de tension batterie sur la FireBeetle DFR0478

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.

Conclusion

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.

Download

Voir aussi


Dernière mise à jour : 03/04/2023