Собрал датчик влажности почвы на ESP32, питаю от 18650. По даташиту deep sleep должен быть ~10 мкА, а у меня мультиметр стабильно показывает 7.2 мА. С такими аппетитами банка садится за неделю. Где я туплю? Код вроде правильный, esp_deep_sleep_start() вызывается.
Дай угадаю: плата DevKit с распаянным USB-UART и LDO? Это не ESP32 жрёт, это вся обвязка вокруг него. Голый модуль ESP32-WROOM в deep sleep реально уходит в десятки мкА, а DevKitC с CP2102 и AMS1117 — вот тебе и миллиамперы.
AMS1117 квесцент ток ~5-6 мА сам по себе, даже когда ничего не делает. Плюс зелёный power LED висит на питании постоянно. Вот тебе уже почти все твои 7 мА.
Стандартный совет: выпаять power LED (или перерезать дорожку) и кинуть питание мимо LDO напрямую на 3V3. Но тогда теряешь защиту по входу, питай чистыми 3.3.
+1 к LDO. Я на проде перешёл на платы с HT7333 — там квесцент ток меньше 5 мкА. С AMS1117 батарейные проекты делать бессмысленно, это регулятор для платок, которые от USB живут.
Сетап вопрос: а ты как меряешь 7 мА? Если дешёвым мультиметром в режиме мА, то у него своё падение на шунте и врёт он будь здоров на малых токах. uCurrent или хотя бы нормальный прибор нужен чтобы микроамперы ловить.
Тогда однозначно обвязка. Сделай тест: запитай НЕ через USB, а 3.3В прямо на пин 3V3 от лабораторника, отдельно глянь ток с воткнутым USB и без. CP2102 при подключённом USB тоже подъедает.
Кстати про CP2102 — даже без активного USB он на некоторых клонах висит и тянет ток через подтяжки на TX/RX. На FireBeetle и TTGO эту проблему производитель уже решил, а дешманские клоны нет.