ESP32 FireBeetle DFR0478 real current consumption in deep sleep mode

Direct link to the video.

According to the datasheet of the ESP32, the power consumption in deep sleep mode (RTC) is around 10µA. This page explains how we measure the real current consumption of the ESP32 FireBeetle DFR0478 in deep sleep mode. A comparison of the measurements of different ESP32 cards can be found on this page.

These measurements has been done with the following versions:

We used a Matrehit Energy multimeter that can measure direct curent from 10nA.

Picture of the ESP32 FireBeetle DFR0478 from DFRobot

Source code

The source code used for switching from deep sleep mode to normal mode is presented below. The ESP32 remains in normal operation for 10 seconds, then switches to deep sleep mode for 10 seconds before starting again.

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

Note that the FireBeetle has a built-in led. We use the led to check is the ESP32 is in deep-sleep mode or not. The led is turned on at the beginning of the setup and turned off before switching to deep sleep mode. We have to call this line to hold the state of the GPIO (the led remains off during deep sleep):

gpio_hold_en(GPIO_NUM_2); 

Results

Wake up Deep sleep
Current 42mA 10µA
Power 218mW 0.052mW

In normal mode, the current is about 42mA. In deep sleep mode the current is 10µA. As you can see, this consumption is very close from the 10µA specified in the documentation of the ESP32:

Datasheet of the ESP32 | current in deep sleep mode

Explanations

There are several reasons why the current consumption is so low. The design has been optimized around ultra low power consuption. First of all, there is no power led. There is a built-in led but this led can be turned off while switching to deep sleep mode has we did previously.

Schematic of the USB to serial converter on the FireBeetle DFR0478

The CH340C is a USB to UART converter. It is powered by pin 16 (VCC), this pin is connected to V3. V3 is the output of the voltage regulator U3. But, U3 is powered by USBVCC which comes from the USB connector USB1. It means that the USB driver is not powered if USB is not connected. In other words, power consumption of the CH340C is zero when the USB is unplugged.

Schematic of the battery charger TP4056 on the FireBeetle DFR0478

That the same for the TP4056 (Li-Ion battery charger). The charger is powered by USBVCC itself provided by the USB connector. The power consumption of U4 is null when the USB is not powered.

Schematic of the voltage regulator on the FireBeetle DFR0478

The next point is the regulator U5. The voltage regulator is an RT9080-33GJ5. According to the documentation this low-dropout (LDO) voltage regulators needs only 2μA ground current at no load. It is clear that this regulator has an excellent efficiency.

But, there is still a part of the schematic that can be analysed:

Schematic of the voltage measurement on the FireBeetle DFR0478

This voltage divider is used to measure the battery voltage. The output is connected to the ADC A0. The two resistors are permanently connected to the battery. It's easy to calculate the dissipated current in this voltage divisor:

$$ i = \dfrac{U}{R} = \dfrac{5}{1000000+1000000} = 2.5~µA $$

Note that the shunt resistors R10 and R11 are not soldered in factory. If you need to measure the battery voltage on A0, you'll have to solder theses resistors by you own.

Conclusion

Let's check if our analysis is right and in line with the current measured. Here is the theoretical currents of each part of the FireBeetle are:

The theoretical power consumption of the FireBeetle is 0.033 + 0.01 + 0.01 = 0.055mW.

The measured power is 0.052mW. This makes the FireBeetle DFR0478 the best ESP32 board I have ever tested in terms of power consumption.

Download

See also


Last update : 04/03/2023