Le véritable courant consommé par l'ESP32-DevKitC V4 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-DevKitC V4 Comme nous allons le voir, le courant consommé n'est pas exactement celui escompté. 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.

Image de l'ESP32 DevKitc V4 d'Expressif

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

  // TIME_TO_SLEEP seconds delais
  delay(TIME_TO_SLEEP*1000); 

  // Display a message before deep sleep
  Serial.println("Go to deep sleep");

  // 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() {}

Dans la console, on peut vérifier que le micro passe en mode deep sleep pendant 10 secondes.

Go to deep sleep
���1��!�)))����!�Wake up
Go to deep sleep
K�����s
�l�ESO�i��-}S���Wake up
Go to deep sleep
!�����J��1���1!���!�J�Wake up

Quand le micro se réveille de la veille, il envoit des caractères sur la liaison série. C'est parce qu'en sortie de mode deep sleep, le micro exécutre le bootloader. ces caractères sont envoyés par le bootloader qui tente de communiquer avec un éventuel logiciel de programmation type AVRDUDE.

Résultats

Normal Deep sleep
Courant 43mA 3.8mA
Puissance 215mW 19mW

En mode normal, le courant est d'environ 43mA. En mode veille profonde, le courant est de 3,8mA. Comme vous pouvez le constater cette consommation est loin des 10µA spécifiés dans la documentation de l'ESP32:

Datasheet de l'ESP32 | Courant en veille profonde

Explications

Il y a trois raisons pour lesquelles la consommation de courant n'est pas aussi faible que prévue. La led de la carte est toujours allumée, car elle est directement connectée à l'alimentation électrique :

Schéma de la led de l'ESP32 DevKitC v4

Le régulateur de tension est un régulateur linéaire DC-DC AMS1117-3.3. Même si la datasheet spécifie "High Efficiency Linear Regulators", l'efficacité d'un régulateur linéaire est au moins égale à Vout/Vin, dans notre cas le mieux que nous puissions peut espérer est de 66%.

Schéma du régulateur de la carte ESP32 DevKitC v4

De plus, le courant nécessaire pour alimenter le circuit interne du LDO est de l'ordre de quelques milliampères. Ce n'est probablement pas le meilleur choix pour les applications de veille profonde.

Le dernier point est l'interface USB, basée sur la puce CP2102N. La puce est alimentée par la sortie du le régulateur. Même si l'USB n'est pas connecté, l'interface est alimentée. Le courant est d'environ 1,3mA lorsqu'elle est maintenue en mode de reset. Cela augmente également la consommation électrique générale de la carte.

Schéma de l'interface USB de l'ESP32 DevKitC v4

Conclusion

En conclusion, si vous avez une application qui nécessite un mode veille avec une forte contrainte sur la consommation ou l'autonomie, ce n'est pas forcement le meilleur choix de carte de développement. Si l'efficacité énergétique est essentiel pour votre projet, regardez plutôt la carte FireBeetle DFR078.

Téléchargement


Dernière mise à jour : 22/11/2022