ESP32 тратит больше всего не во сне, а в те секунды, когда работает процессор и подключается Wi-Fi: передача — сотни миллиампер, сон — единицы микроампер. Поэтому время работы от батареи определяет цикл — как часто устройство просыпается и сколько бодрствует. Калькулятор складывает три участка цикла и плату, а токи чипа берёт из даташитов Espressif. О том, как настроить сон в программе и что держит ток во сне, — в статье «Глубокий сон ESP32».
Формула
За N пробуждений радио работает один раз, поэтому его заряд делится на N:
где Iсон′ = Iсон + Iдоб — ток чипа во сне вместе с добавкой флеш-памяти и PSRAM.
Ток радио — смесь приёма и передачи: Iрадио = IRX(1 − d) + ITX d, где d — доля передачи. Даташиты дают пиковый ток передачи и ток приёма, но не долю — её задаёт пользователь, 10 % по умолчанию — допущение, а не данные Espressif. Время работы — как в калькуляторе времени работы от батареи: ёмкость, умноженная на используемую долю, делённая на средний ток.
Токи сна по даташитам
Значения — типичные (Typ), максимальных Espressif для этих режимов не приводит. Условия измерения — 3,3 В и 25 °C — даташиты указывают только для таблиц радио. У отдельного экземпляра и при нагреве ток сна выше.
| Чип | Light-sleep | Deep-sleep, таймер и память RTC | Deep-sleep с ULP | Минимальный |
|---|---|---|---|---|
| ESP32 | 800 мкА | 10 мкА | 150 мкА | hibernation 5 мкА |
| ESP32-S2 | 750 мкА | 25 мкА | 170–190 мкА | только таймер 20 мкА |
| ESP32-S3 | 240 мкА | 7–8 мкА | 170–190 мкА | 7 мкА |
| ESP32-C3 | 130 мкА | 5 мкА | — | 5 мкА |
| ESP32-C6 | 180 или 35 мкА | 7 мкА | — | 7 мкА |
| ESP32-H2 | 85 или 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 с мгновенным продолжением программы может оказаться экономнее. Таблица под калькулятором сравнивает режимы для вашего цикла; время загрузки впишите в «Работу без радио».
Источники
- 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 мА
- 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 мкА
- 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 мкА
- 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 мкА
- 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 мкА
- 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 мкА
- 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 мА
- 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) — эталон таблицы пробуждения
Где пригодится
- Почему ESP32 в deep sleep потребляет больше, чем в даташите?10 мкА — ток чипа; стабилизатор, мост USB–UART и подтяжки добавляют в сотни раз больше
- Сколько проработает ESP32 от батареи, если отправлять данные по Wi-Fi раз в 10 минут?Средний ток 0,26–5,7 мА: решают длительность Wi-Fi и стабилизатор
- Сколько тока потребляет ESP32-C3?Пик передачи до 335 мА, без радио 13–28 мА, глубокий сон 5 мкА
Встроить калькулятор на свой сайт
Скопируйте код и вставьте его в 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>Обновлено .
Нашли ошибку в расчёте?