ESP32 Power Consumption & Sleep Modes [All Variants]

This is the ultimate guide for ESP32 Sleep Modes (low-power modes) and the power consumption in each mode for all ESP32 variants and boards. Along with a powerful ESP32 Current Consumption Calculator tool and an ESP32 Battery Life Calculator tool to help you easily calculate & design your system.

You’ll learn how to maximize power savings while using ESP32 Deep Sleep mode switching to achieve the required functionality of your application and maintain battery life for extended periods of operation.

Table of Contents

  1. ESP32 Power Consumption For All Modes & ESP32 Variants
  2. ESP32 Power Consumption Calculator (Avg Current Draw)
  3. ESP32 Battery Life Calculator
  4. ESP32 Sleep Modes & Low Power Modes
  5. ESP32 Active Mode Power (Current) Consumption
  6. ESP32 Modem Sleep Power (Current) Consumption
  7. ESP32 Light Sleep Power (Current) Consumption
  8. ESP32 Deep Sleep Power Consumption
  9. ESP32 Hibernation Mode
  10. ESP32 Power OFF
  11. ESP32 Sleep Modes Conclusion

ESP32 Power Consumption For All Modes & ESP32 Variants

ESP32 power consumption (current draw) depends heavily on which mode of operation you’re setting the microcontroller to, and also it’s different from one ESP32 variant to another. Below is a complete ESP32 Power Consumption Table that I made using the information in the datasheets of all the “currently” available ESP32 microcontrollers on the market.

ESP32 Variant Shutdown Hibernation Deep Sleep Light Sleep Modem Sleep Wi-Fi TX Wi-Fi RX BLE/BT TX BLE/BT RX 802.15.4 TX 802.15.4 RX
ESP32-S31 uANAULP 170/190 uA; sensor 18 uA; RTC 8/7 uA240 uA13.2-107.9 mA283-340 mA88-91 mA116-335 mA93 mANANA
ESP32-S3-PICO-11 uANARTC 8/7 uA240 uA + PSRAM add13.2-107.9 mA280-350 mA100-105 mANANANANA
ESP32-S21 uANAULP 170/190 uA; sensor 22 uA; RTC 25/20 uA750 uA10.5-32 mA160-310 mA63-68 mANANANANA
ESP32-C61 uANA7 uA180/35 uA14-38 mA252-354 mA78-82 mA94-315 mA71 mA92-305 mA74 mA
ESP32-C610.001 mANA0.01 mA0.2/0.05 mA6-28 mA240-360 mA88-90 mA96-283 mA81 mANANA
ESP32-C50.002 mANA0.012 mA0.25/0.06 mA8-43 mA2.4G 246-339 mA; 5G 377-381 mA2.4G 99-107 mA; 5G 127-135 mA109-338 mA89 mA111-325 mA93 mA
ESP32-C31 uANA5 uA130 uA13-28 mA276-335 mA84-87 mANANANANA
ESP32-C2 / ESP86841 uANA5 uA140 uA9.4-15.6 mA300-370 mA65 mA90-320 mA62 mANANA
ESP32-H21 uANA7 uA85/25 uA3-17 mANANA24-140 mA24 mA24-140 mA25 mA
ESP32 Series1 uA5 uAULP 150 uA; sensor 100 uA @1%; RTC 10 uA0.8 mA20-68 mA180-240 mA95-100 mA130 mA @0 dBm95-100 mANANA
ESP32-PICO-V31 uANAULP 150 uA; sensor 100 uA @1%; RTC 10/5 uA0.8 mA20-68 mA205-370 mA113-120 mANANANANA
ESP32-PICO-V3-021 uANAULP 150 uA; sensor 100 uA @1%; RTC 10/5 uA0.8 mA20-68 mA205-370 mA113-120 mANANANANA
ESP82660.5 uANA20 uA0.9 mA15 mA120-170 mA50-56 mANANANANA


ESP32 Power Consumption Calculator (Avg Current Draw)

The interactive tool below is an ESP32 Current Consumption Calculator that helps you figure out the average current draw of your ESP32 board so you can size your device battery accordingly. I’ve constructed it using the default current draw numbers from all ESP32 variants’ datasheets, so it auto-populates the numbers for you. However, you can still override it with your own custom numbers if you’ve taken some measurements that deviate from the datasheet defaults.

ESP32 Power Consumption (Current Consumption) Calculator

It’s so simple to use my ESP32 power consumption calculator; you’ll just have to select the variant you’re using and the time your device spends in each mode. And you’ll immediately have the output ESP32 average current draw result.

For example, let’s say you’re using an ESP32-S3 dev board. When the board is powered up while the MCU is held at reset, it “should”, not always depending on HW design, draw a small amount of current called “Quiescent current”. Let’s say you’ve measured your board’s Quiescent Current and it came out to be 25uA. Let’s say the ESP32-S3 will spend 30sec in deep sleep mode, 0.1sec processing data with no RF (in modem sleep mode), and 0.5sec sending TX data over WiFi. By putting these numbers in the calculator, you should get an average current draw of 4.6992mA. If yes, then you now know how to use the calculator.

Note: Each ESP32 board, whether you’ve bought it from anywhere as a dev board or you’ve custom-designed it yourself. It’ll have some current draw besides the consumption of the ESP32 microcontroller itself; this is called the “Quiescent current” of the board.

Tip: To measure the “Quiescent current” of your board, do the following: connect the best ammeter you’ve got in your lab at the lowest current range to get the most accuracy out of it. Then hold the reset button of your ESP32 board to make sure the MCU is not waking up at all, then power up your board, and measure the current it draws while the ESP32 is OFF. This is your board’s “Quiescent current” value that should be added in the power calculator’s input cell (if you want to take this parameter into consideration). The calculator will still work for you even if you don’t add this number, but it’d make a better estimate if you included it.


ESP32 Battery Life Calculator

The interactive tool below is an ESP32 Battery Life Calculator that helps you figure out how long your ESP32 device’s battery will last before it’s completely drained and needs a recharge. For this, we’ll need the ESP32 Average Current consumption that we’ve already calculated using the other calculator shown earlier. Using that current consumption value, we can see how long it would take to completely drain a battery of any capacity.

ESP32 Battery Life Calculator
Estimate ESP32 Battery Runtime (Life) From Battery Capacity, Board Current, DC/DC Converter & Battery Efficiencies.
Estimated Battery Life
0 days
0 hours
Battery-Side Current
0 mA
runtime
Longer estimated runtime fills more of the battery visual.
Enter battery capacity and ESP32 board current to estimate runtime.

Note: if you’re using a DC/DC converter to step up/down the voltage of your battery to match the operating voltage of your ESP32 board, you should check its efficiency at this specific operating point (Vin, Vout, Idc); it’ll usually be in the range (80~98%).

Note: A 1000mAh battery is never going to give you a 1000mAh before it reaches its cut-off voltage; it’ll usually be less than that. Maybe 900mAh or less depending on its age, SoH, temperature, charging/discharging rate, and so many other parameters. If you’ve got a new battery and you’re optimistic about its performance, just assume an efficiency of (80-90%) to be on the safe side and never worry about it going off before the desired time. But if you’re doubting the state of your battery, you’d be better off using a USB battery tester to know the exact current “Actual Capacity” for your battery. Then you can easily plug in that number into my calculator above, and you’re good to go from there.


ESP32 Sleep Modes & Low Power Modes

The ESP32 power management features provide the user with 5 configurable and selectable power modes. And we, as system designers, have to choose between the 5 different power modes according to the application’s needs. You can also programmatically switch from one mode to another while operating, which needs to be implemented carefully in the code.

The ESP32 Power Modes Are:

  • Active Mode
  • Modem Sleep Mode
  • Light Sleep Mode
  • Deep Sleep Mode
  • Hibernation Mode (not available in most recent ESP32 variants)

ESP32 Low-Power Modes are: (Modem Sleep, Light Sleep, Deep Sleep, and Hibernation). Each one of the ESP32 sleep modes has its own list of activated features as well as deactivated features in order to achieve certain levels of power consumption. Depending on your application’s need, you get to choose the most convenient power mode in order to prolong the battery life as much as possible and perform the required tasks.

Note: All current consumption values listed in this article are meant to be for the bare ESP32 chip, not the whole ESP32 dev board. Any ESP32 dev board will have much higher power consumption due to having onboard LEDs, resistors, and other passives that sum up to a larger current consumption than the values listed here in this article. It’s called the “Quiescent current” of the board, and we’ve discussed how to measure it before.

Tip: For low-power applications, you need to have your custom PCB design with the ESP32 target microcontroller with minimal on-board passives to achieve the needed functionalities with minimal power consumption. So everything is under your own control and can be tweaked in later board revisions.


ESP32 Active Mode Power (Current) Consumption

The ESP32 Active Mode is the normal operation mode in which all the peripherals are working, WiFi and Bluetooth are enabled, and the chip can transmit, receive, or listen.

The only way to save some power in Active Mode is to control the clock frequency at which the CPU is running and/or change the RF operation mode according to your application’s needs.

ESP32 Active mode current consumption is: (95~380) mA, depending on the WiFi/BLE mode and the CPU clock speed at which you’re operating the microcontroller.

ESP32 WiFi Current Consumption is: (50~380)mA, depending on the ESP32 Variant and whether you’re doing WiFi TX or RX. Typically TX draws more current than RX operations. The table at the begining of this tutorial lists all the numbers for all variants which are also summarized in the figure below.

ESP32 Power Consumption (Current Consumption Draw) in Active Mode

This clearly shows that ESP32 Active mode is the least power-efficient mode, and you should consider disabling any unused features by running in any other low-power mode as long as it’s not needed by your application.


ESP32 Modem Sleep Power (Current) Consumption

In Modem Sleep Mode, the ESP32 core is operational, the clock is configurable, and every other peripheral is functional except for the (Radio, WiFi, and Bluetooth/BLE), which are disabled. Therefore, current consumption in this mode is totally dependent on the CPU clock rate. Reducing the clock frequency will reduce the current consumption and vice versa.

ESP32 Modem Sleep Mode Wake-Up Latency is: immediate!

ESP32 Modem Sleep Power Consumption (Current Consumption)

So we can interpret the ESP32 Modem Sleep mode as follows: if you’re going to disable Radio, Bluetooth, and WiFi, then it’s going to be up to the CPU frequency in order to reduce the current consumption even more. And it’s going to be just like any microcontroller sleep mode.

However, if you still need WiFi, you’ll have to keep switching between active and sleep modes periodically after connecting to the access point (AP) successfully. In the modem sleep mode, Radio, WiFi, and BT are turned OFF in order to reduce power consumption. The ESP32 device (station) can keep the connection with the AP in modem sleep mode. This is using what’s known as DTIM (Delivery Traffic Indication Message).

The basic idea behind the DTIM beacon technique is to periodically send a message with beacons. This notifies all stations to wake up from the sleep state and synchronize between all the members in the network. The DTIM beacon interval time dictates the sleeping time in which the ESP32 will be in “modem sleep mode” before it switches back to “active” in order to receive the DTIM frame from the AP.

This process can happen more or less frequently, leading to the emergence of 2 additional derivatives of the “Modem Sleep Mode”. These two modes are as follows:

  • Minimum Modem Sleep: In minimum modem sleep mode, the ESP32 wakes up every DTIM to receive a beacon. Broadcast data will not be lost because it is transmitted after DTIM. However, it can not save much more power if DTIM is short for DTIM is determined by AP.
  • Maximum Modem Sleep: In maximum modem sleep mode, the ESP32 wakes up every listen interval to receive a beacon. Broadcast data may be lost because the ESP32 may have been in sleep mode at DTIM time. If listen interval is longer, more power is saved but broadcast data is more likely to be lost.

For more information, please refer to Espressif documentation, and to this ESP-IDF example.


ESP32 Light Sleep Power (Current) Consumption

The ESP32 Light Sleep Mode is very similar to the Modem Sleep Mode. However, the only difference is that in light sleep mode, the CPUs are stalled (clock-gated) as well as most of the RAM and the digital peripherals. Their supply voltage is also reduced to save more power.

Wake-Up Latency in ESP32 Light Sleep Mode is: less than 1ms

ESP32 Light Sleep Power Consumption (Current Consumption)

Clock-gating the digital peripherals, RAM, and CPUs causes them to stop without losing context or any data. And it does bring the current consumption down to nearly 800µA. Upon exit from Light Sleep, the digital peripherals, RAM, and CPUs resume operation, and their internal states are preserved.


ESP32 Deep Sleep Power Consumption

In ESP32 Deep Sleep Mode, the CPUs, most of the RAM, and all digital peripherals that are clocked from APB_CLK are powered OFF. The only active parts of the chip are the RTC Memories, the RTC Controller, and the ULP coprocessor.

The Ultra-Low-Power (ULP) coprocessor can still do some simple tasks like reading data coming from sensors or RTC GPIOs. Therefore, we can use RTC peripherals (Timers, GPIOs, etc) as well as the ULP to generate various “wake-up” events in order to wake up the device from “Deep Sleep” mode.

Note: In Deep Sleep Mode, the CPU context is lost and whenever the CPU wakes up from “Deep Sleep”, it’s going to start program execution all over again from the very beginning. The RTC power domain () is the only section in the microcontroller that preserves its context before going into “Deep Sleep”. Therefore, if you need to store any data and retrieve it after a “Deep Sleep”, you have to save it in the RTC memory.

(e.g. RTC_DATA_ATTR int data = 0;  // This global variable will retain its value even after a deep sleep wake-up)

ESP32 Deep Sleep Mode Current Consumption is: ~(5-190)µA depending on what features are activated and the ESP32 variant you’re using as shown below.

ESP32 Deep Sleep Mode Wake-Up Latency is: less than 1ms

ESP32 Deep Sleep Power Consumption (Current Consumption)


ESP32 Hibernation Mode

In ESP32 Hibernation Mode, all oscillators, the RTC peripheral domain, RTC memories, and the ULP are all disabled. The only remaining active parts are one RTC timer as well as a few certain RTC GPIOs in order to wake up the device from hibernation. It’s the strongest low-power mode by far, and it can achieve current consumption levels as low as 5µA.

ESP32 Hibernation Mode Current Consumption is: ~5µA

ESP32 Hibernation Mode Wake-Up Latency is: less than 1ms

ESP32 Hibernate Power Consumption (Current Consumption)

Note: ESP32 Hibernation Mode is very similar to “Deep Sleep Mode”. However, in Hibernation Mode, only 1 RTC Timer is available (on the slow clock) and certain RTC GPIOs are only active not all RTC GPIOs as the case in “Deep Sleep”. This is the major difference between the two modes.


ESP32 Power OFF

This is not an operational mode, because it can’t be reached by software, and there is no wake-up from power OFF unless an external controller is handling this operation by any defined hardware mechanism. In order to go into power OFF, the CHIP_PU pin is set to LOW; consequently, the chip will be powered OFF. The current consumption will drastically drop down to 0.1µA.

Which in many cases isn’t practical because of the implementation complexity of the power down and ON mechanism as well as the need for hardware modification. Because the CHIP_PU pin is serving as a RESET pin for the ESP32 and can’t be controlled programmatically on most ESP32 dev boards unless we make some custom hardware changes.

esp32-shutdown-mode-current


ESP32 Sleep Modes Conclusion

To conclude this tutorial, I’d like to highlight the fact that if you’re using an ESP32 board that you didn’t design yourself or you’ve already designed it specifically for your custom application, you still need to measure its “Quiescent Current” to have an accurate estimate of your entire system’s power consumption. The power consumption (current drawn) of the ESP32 microcontroller itself would mean nothing if you’re using a board that has a lot of ICs, LEDs, sensors, and all sorts of things that maybe drawing way more current than the ESP32 target MCU itself.

If you’ve got your board current in check, now it’s time to check for your target ESP32 variant’s modes and their respective current consumption. The table I’ve made here in this guide will save you the time jumping between datasheets. And also the ESP32 Power Consumption Calculator tool we’ve seen in this tutorial will help you easily and quickly setup/tweak/optimize the time your ESP32 should spend in each mode to hit your target average current draw.

And finally, the ESP32 Battery Life Calculator I’ve added here to this guide will help you find out how long will your end device survive in the field before it needs a recharge. And that’s a wrap! please let me know if you’ve got any further question or need any help with your application.

Share This Page With Your Network!
Join Our +25,000 Newsletter Subscribers!

Stay Updated With All New Content Releases. You Also Get Occasional FREE Coupon Codes For Courses & Other Stuff!

Photo of author
Author
Khaled Magdy
Embedded systems engineer with several years of experience in embedded software and hardware design. I work as an embedded SW engineer in the Automotive & e-Mobility industry. However, I still do Hardware design and SW development for DSP, Control Systems, Robotics, AI/ML, and other fields I'm passionate about.
I love reading, writing, creating projects, and teaching. A reader by day and a writer by night, it's my lifestyle. I believe that the combination of brilliant minds, bold ideas, and a complete disregard for what is possible, can and will change the world! I will be there when it happens, will you?

Leave a Comment