Перейти к содержанию

Ток ESP32 во сне и время работы от батареи

Выберите чип и режим сна, задайте период пробуждения, время работы и сеанс радио — калькулятор возьмёт типичные токи из даташита Espressif, добавит потребление платы, посчитает средний ток и время работы от батареи и сравнит все режимы сна этого чипа.

Исходные данные

с
с

после deep-sleep сюда входит загрузка — измерьте

Значение из диапазона
с

подключение и отправка; 0 — без радио

%

допущение: остальное время радио слушает эфир

мкА

флеш и PSRAM, только для light-sleep

мкА

стабилизатор, USB-UART, светодиод, делители

мА·ч
%

Результат

Время работы
145,5 сут
2000 мА·ч × 80 % / средний ток; саморазряд не учтён
Средний ток
458,3 мкАоценка по типичным значениям даташита; процессор 4,8 %, радио 93 %, сон 2,17 %
Процессор
44 мА160 МГц, два ядра, верхняя граница
Радио в сеансе
127,9 мАприём 100 мА, передача 379 мА (пик модуля) × 10 %
Во сне
10 мкАDeep-sleep: таймер RTC и память RTC: 10 мкА тип.; спит 99,6 % времени

У ESP32 приём указан диапазоном 95…100 мА, взято 100. Передачу даташит чипа ESP32 измерил при скважности 50 % (240/190/180 мА) — это занижает ток во время самой передачи, поэтому для Wi-Fi взят пик модуля ESP32-WROOM-32E при 100 %: 379, 276, 258 и 211 мА. Для BLE другой цифры нет: 130 мА — значение при 50 %, ток во время передачи выше.

Тот же цикл в других режимах сна

РежимСон, тип.Средний токВремя работы
Light-sleep800 мкА1,245 мА53,54 сут
Deep-sleep, ULP включён150 мкА597,8 мкА111,5 сут
Deep-sleep, ULP опрашивает датчик, 1 %100 мкА548 мкА121,7 сут
Deep-sleep: таймер RTC и память RTC10 мкА458,3 мкА145,5 сут
Hibernation: только таймер RTC5 мкА453,3 мкА147,1 сут

Токи сна и работы — типичные (Typ) из даташита ESP32, не максимальные: у конкретного экземпляра и при нагреве ток сна выше. Условия 3,3 В и 25 °C даташиты указывают для таблиц радио, для режимов сна — нет.

Чем разбудить ESP32

ИсточникLight-sleepDeep-sleepФункция ESP-IDF
Таймер RTCдадаesp_sleep_enable_timer_wakeup()
ext0: один RTC-выводдадаesp_sleep_enable_ext0_wakeup()
ext1: несколько RTC-выводовдадаesp_sleep_enable_ext1_wakeup_io()
Сенсорная кнопкададаesp_sleep_enable_touchpad_wakeup()
Сопроцессор ULP / LPдадаesp_sleep_enable_ulp_wakeup()
GPIO по уровнюдадаesp_sleep_enable_gpio_wakeup(); deep-sleep: esp_sleep_enable_gpio_wakeup_on_hp_periph_powerdown()
UART (фронты на RX)да—esp_sleep_enable_uart_wakeup()

По руководству ESP-IDF v6.1 «Sleep Modes» и soc_caps.h. GPIO в глубоком сне — только выводы домена VDD3P3_RTC. Отдельного источника Wi-Fi/Bluetooth нет, но с modem-sleep и автоматическим лёгким сном драйвер сам будит систему и соединение сохраняется.

Расчёт выполнен по формулам и данным из источников, приведённых на этой странице, и не заменяет проверку: параметры компонентов у разных производителей и даже партий различаются. Перед применением сверяйте результат с документацией на конкретные детали.

ESP32 тратит больше всего не во сне, а в те секунды, когда работает процессор и подключается Wi-Fi: передача — сотни миллиампер, сон — единицы микроампер. Поэтому время работы от батареи определяет цикл — как часто устройство просыпается и сколько бодрствует. Калькулятор складывает три участка цикла и плату, а токи чипа берёт из даташитов Espressif. О том, как настроить сон в программе и что держит ток во сне, — в статье «Глубокий сон ESP32».

Формула

За N пробуждений радио работает один раз, поэтому его заряд делится на N:

Iср=ICPU tCPU+Iрадио tрадио/N+Iсон′ tсонT+Iплата,I_\text{ср} = \frac{I_\text{CPU}\,t_\text{CPU} + I_\text{радио}\,t_\text{радио}/N + I_\text{сон}'\,t_\text{сон}}{T} + I_\text{плата},
tсон=T−tCPU−tрадио/N,t_\text{сон} = T - t_\text{CPU} - t_\text{радио}/N,

где Iсон′ = Iсон + Iдоб — ток чипа во сне вместе с добавкой флеш-памяти и PSRAM.

Ток радио — смесь приёма и передачи: Iрадио = IRX(1 − d) + ITX d, где d — доля передачи. Даташиты дают пиковый ток передачи и ток приёма, но не долю — её задаёт пользователь, 10 % по умолчанию — допущение, а не данные Espressif. Время работы — как в калькуляторе времени работы от батареи: ёмкость, умноженная на используемую долю, делённая на средний ток.

Токи сна по даташитам

Значения — типичные (Typ), максимальных Espressif для этих режимов не приводит. Условия измерения — 3,3 В и 25 °C — даташиты указывают только для таблиц радио. У отдельного экземпляра и при нагреве ток сна выше.

ЧипLight-sleepDeep-sleep, таймер и память RTCDeep-sleep с ULPМинимальный
ESP32800 мкА10 мкА150 мкАhibernation 5 мкА
ESP32-S2750 мкА25 мкА170–190 мкАтолько таймер 20 мкА
ESP32-S3240 мкА7–8 мкА170–190 мкА7 мкА
ESP32-C3130 мкА5 мкА—5 мкА
ESP32-C6180 или 35 мкА7 мкА—7 мкА
ESP32-H285 или 25 мкА7 мкА—7 мкА

У C6 и H2 два значения light-sleep: меньшее — когда периферия обесточена, а не просто остановлена. В режиме «выключен» — CHIP_PU или EN в нуле — у всех чипов 1 мкА. Даташиты модулей ESP32-S2-MINI-1, S3-WROOM-1, C3-MINI-1, C6-WROOM-1 и H2-MINI-1 повторяют эти таблицы.

Работа и радио

В рабочем режиме без радио — modem-sleep — ток зависит от частоты и нагрузки. ESP32 даёт его диапазоном, например 27–44 мА при 160 МГц на двух ядрах, остальные чипы — двумя значениями: с выключенными и включёнными тактами периферии. При чтении из флеш-памяти ток выше: даташиты S2, S3 и C3 называют 10 мА для флеш-памяти на 80 Мбит/с в режиме SPI 2-line.

Ток радио в даташитах — пиковый при передаче со скважностью 100 %. Исключение — ESP32: даташит чипа измерил передачу при скважности 50 % — 240, 190 и 180 мА, — и это занижает ток во время самой передачи. Поэтому для Wi-Fi ESP32 калькулятор берёт пиковый ток модуля ESP32-WROOM-32E при 100 % из его даташита: 379 мА для 802.11b, 276 мА для 802.11g, 258 и 211 мА для 802.11n. Для Bluetooth другой цифры нет, и 130 мА при 50 % тоже занижены. Приём ESP32 указан как 95–100 мА, калькулятор берёт верхнюю границу; у модуля средний ток приёма ещё выше — 112 мА, так что для оценки лучше ошибиться в большую сторону. Время подключения к Wi-Fi даташиты не нормируют: оно зависит от точки доступа, DHCP и того, сохранены ли параметры сети. Его надёжнее измерить.

Плата и загрузка

Главная ошибка расчёта — забыть плату. Токи покоя стабилизатора, моста USB-UART и светодиода питания текут всегда, и на отладочной плате их сумма обычно в сотни раз больше тока спящего чипа. Поля «Плата, всегда» и «Добавка во сне» заполняются по даташитам этих микросхем или по измерению — калькулятор их не придумывает. «Добавку во сне» — флеш-память и PSRAM — калькулятор учитывает только в light-sleep: по руководству ESP-IDF в light-sleep флеш по умолчанию остаётся под питанием, а esp_deep_sleep_start() отключает её всегда.

После deep-sleep программа начинается с загрузчика, а не с места остановки, и это время с рабочим током тоже входит в каждое пробуждение. Его стоит измерить и включить в «Работу без радио». Таблица под калькулятором показывает тот же цикл во всех режимах сна выбранного чипа, а ниже — какие источники будят его из light-sleep и deep-sleep по руководству ESP-IDF v6.1.

Частые вопросы

Сколько ESP32 проработает от батареи 2000 мА·ч в глубоком сне?

Зависит не от сна, а от бодрствования. Если чип просыпается раз в минуту на 1 с при 25 мА и спит при 10 мкА, средний ток — около 0,43 мА, и 80 % от 2000 мА·ч хватит примерно на 3750 часов, 5 месяцев. Если просыпаться раз в 10 минут, средний ток упадёт до 52 мкА, а время вырастет до 3,5 года — но только если плата сама не потребляет больше чипа.

Почему отладочная плата ESP32 во сне потребляет миллиамперы, а не 10 мкА?

10 мкА по даташиту — ток самого чипа. На отладочной плате к нему добавляются собственный ток стабилизатора, мост USB-UART, светодиод питания и делители: вместе это легко 1–10 мА. Измерьте ток платы во сне или возьмите токи покоя из даташитов этих микросхем и впишите их в поле «Плата, всегда».

Что выгоднее для ESP32-C3: light-sleep или deep-sleep?

При долгом сне — deep-sleep: 5 мкА против 130 мкА по даташиту. Но после deep-sleep чип загружается заново, и это время с током в десятки миллиампер добавляется к каждому пробуждению. Если просыпаться нужно часто — раз в несколько секунд — light-sleep с мгновенным продолжением программы может оказаться экономнее. Таблица под калькулятором сравнивает режимы для вашего цикла; время загрузки впишите в «Работу без радио».

Источники

  1. Espressif. ESP32 Series Datasheet, версия 5.3 — табл. 4-2: modem-sleep 20–68 мА в зависимости от частоты и числа ядер, light-sleep 0,8 мА, deep-sleep 150 мкА с ULP, 100 мкА в режиме опроса датчика 1 %, 10 мкА с таймером и памятью RTC, hibernation 5 мкА, выключен 1 мкА; табл. 5-4: передача 240/190/180 мА при скважности 50 % — занижает ток во время передачи, приём 95–100 мА
  2. Espressif. ESP32-S2 Series Datasheet, версия 1.9 — табл. 5-7 — пиковые токи Wi-Fi, измерены при 3,3 В и 25 °C; 5-8 — modem-sleep при 80, 160 и 240 МГц с тактами периферии и без; 5-9 — light-sleep 750 мкА, ULP-FSM 170, ULP-RISC-V 190, таймер и память RTC 25, только таймер 20 мкА; PSRAM в light-sleep 140 мкА
  3. Espressif. ESP32-S3 Series Datasheet, версия 2.2 — табл. 5-7, 5-8 — Wi-Fi и Bluetooth LE; 5-9 — modem-sleep при 40–240 МГц для пяти видов нагрузки; 5-10 — light-sleep 240 мкА, deep-sleep 7–8 мкА, с ULP 170–190 мкА; добавки PSRAM в light-sleep 40–200 мкА
  4. Espressif. ESP32-C3 Series Datasheet, версия 2.4 — табл. 5-7 — Wi-Fi: передача до 335 мА, приём 84–87 мА; 5-8 — modem-sleep 13–28 мА; 5-9 — light-sleep 130 мкА, deep-sleep 5 мкА, выключен 1 мкА
  5. Espressif. ESP32-C6 Series Datasheet, версия 1.5 — табл. 5-7…5-9 — Wi-Fi 6, Bluetooth LE и 802.15.4; 5-10 — modem-sleep 14–38 мА; 5-11 — light-sleep 180 и 35 мкА, deep-sleep 7 мкА
  6. Espressif. ESP32-H2 Series Datasheet, версия 1.3 — табл. 5-6, 5-7 — Bluetooth LE и 802.15.4: передача 24–140 мА, приём 24–25 мА; 5-8 — modem-sleep 3–17 мА при 32–96 МГц; 5-9 — light-sleep 85 и 25 мкА, deep-sleep 7 мкА
  7. Espressif. Даташиты модулей ESP32-S2-MINI-1 v1.6, ESP32-S3-WROOM-1 v1.8, ESP32-C3-MINI-1 v2.2, ESP32-C6-WROOM-1 v1.4, ESP32-H2-MINI-1 v1.6, ESP32-WROOM-32E v2.1 — таблицы токов в режимах низкого потребления совпадают с даташитами чипов — второй источник для тестов; у ESP32-WROOM-32E (табл. 16) пиковый ток передачи при 100 % — 379/276/258/211 мА, его калькулятор берёт для Wi-Fi ESP32; средний ток приёма модуля 112–118 мА
  8. Espressif. ESP-IDF Programming Guide v6.1: Sleep Modes — источники пробуждения для каждого чипа: таймер, касание, ext0, ext1, ULP, GPIO, UART только из light-sleep; Wi-Fi и Bluetooth во сне не сохраняются; в deep-sleep работают контроллер RTC, ULP и память RTC; esp_deep_sleep_start() всегда отключает питание SPI-флеш, а в light-sleep по умолчанию она остаётся под питанием; вместе с soc_caps.h v6.1 (SOC_PM_SUPPORT_EXT0_WAKEUP, …_EXT1_…, …_TOUCH_SENSOR_…, SOC_GPIO_SUPPORT_DEEPSLEEP_WAKEUP) — эталон таблицы пробуждения

Где пригодится

Встроить калькулятор на свой сайт

Скопируйте код и вставьте его в HTML страницы, статьи или вики. Виджет бесплатный, без рекламы, счётчиков и cookie. Условие одно — ссылка на GAW под рамкой остаётся на месте. Подробнее о виджетах

<iframe src="https://gaw.ru/embed/esp32-sleep-current/" title="Ток ESP32 во сне и время работы от батареи" width="100%" height="640" style="border:1px solid #e3e5e9;border-radius:8px" loading="lazy" allow="clipboard-write"></iframe>
<p style="margin:6px 0 0;font-size:14px">Калькулятор: <a href="https://gaw.ru/tools/esp32-sleep-current/">Ток ESP32 во сне и время работы от батареи</a> — GAW.ru</p>
Автоподстройка высоты рамки

Если сайт разрешает скрипты, добавьте этот код один раз в любом месте страницы: рамка будет менять высоту вместе с результатом расчёта.

<script>window.addEventListener("message",function(e){if(e.origin!=="https://gaw.ru"||!e.data||e.data.type!=="gaw:embed-height")return;var f=document.querySelectorAll('iframe[src^="https://gaw.ru/embed/"]');for(var i=0;i<f.length;i++)if(f[i].contentWindow===e.source)f[i].style.height=e.data.height+"px"})</script>

Обновлено .

Нашли ошибку в расчёте?