Делюсь опытом Уменьшаем энергопотребление ESP8266

nikolz

Well-known member
Добрый день,
В данной теме расскажу о простых способах снижения энергопотребления ESP при работе от внешних прерываний.
При этом в программе устанавливаем режим deep-sleep с вечным сном.
Есть два простых варианта и один не очень.
В первом случае выход из спячки осуществляем подачей импульса ноль на RST.
При этом потребление ESP во сне составляет 20 мка.
Второй вариант - это установка нуля на EN и перевод его в единицу при внешнем прерывании, RST всегда подключен к питанию.
При этом потребление ESP во сне составляет 3 мка.
 

nikolz

Well-known member
@nikolz Вы вроде о трёх вариантах говорили, какой третий?
третий вариант -это развитие первых двух с добавлением внешних микросхем.
Добавление внешних микросхем с мка потреблением позволяет не только сократить потребление ESP до 3 мка и менее но и реализовать доп возможности.
------------------------
Простейшее решение - это использовать таймер например TPL5110 фирмы ti (брал в чип дипе 140 руб за 2 шт)
как писал раннее по документации ток 0.03 мка. внешние датели - резистор, который задает интервал.
Так как я плату не мыл и собирал на этих самых, то получился ток потребления таймер 0.3 мка.
Т е суммарный ток увеличился на 10% и составит 3.3 мка, но будет прерывание по таймеру и по внешнему сигналу.
--------------------------------------------
Далее, если добавим к таймеру полевой транзистор (7 руб) для управления Vcc и EN и RTS, то получим ток не более 0.5 мка(на практике без проблем)
и менее 0.1 мка
(теоретически ).
================================================
Ну использование MCU типа Attiny13a (8 пинов) (брал в чип и дип по 70 руб на али по 20 руб) вообще не требует навесных элементов но требует разработки программы для AVR и добавит не менее 30 мка, что уже не уменьшает потребление но расширяет возможности .
-------------------------------
поставить Attiny85 тоже без навесных предполагаю что добавит 1 мка и доп функции, но пока не делал.
==================================================
Есть еще несколько интересных вариантов, но я их еще не реализовал.
Предполагаю, что они обеспечивают прерывание по таймеру без таймера , возможность идентификации источника прерываний без доп MCU и имеют очень простые схемы и малое потребление.
 
Последнее редактирование:

nikolz

Well-known member
В итоге у меня получилась такая схема
1) ESP8266 (120 руб) потребляет от 0.3 до 3 мка когда спит и обеспечивает 100 мвт в режиме передачи.
2) (MCU Attiny85a без навесок +SE8R01) (120 руб ) обеспечивает связь на 2.4 со скоростью реакции 0.01 сек и потреблением когда спит от 1 до 10 мка.
3)(таймер TPL5110 + полевик) ( 70 руб)для сна до 2-х часов с током потребления всего железа не более 0.5 мка.
Применительно к умному дому в большинстве узлов с датчиками может стоять без 1) или без 2)
======================
Итого Все удовольствие 5...7 долларов а возможности выше крыши.
=====================
Если использовать ESP-NOW, то скорость реакции ESP составит 0.2 сек,
для WIFI UDP от 3 до 0.3 сек.
 
Последнее редактирование:

pvvx

Активный участник сообщества
При этом потребление ESP во сне составляет 20 мка.
У вас опять всё в ошибках. Вот пример замеров, с отключенными светодиодами: Marker (1) is again power on: avg. 72,5 mA with WiFi enabled and Marker (2) shows the new tuned deep sleep current at avg. 88.8 uA. Peak is still 213 mA as of WiFi boost.
Ну использование MCU типа Attiny13a (8 пинов) (брал в чип и дип по 70 руб на али по 20 руб) вообще не требует навесных элементов но требует разработки программы для AVR и добавит не менее 30 мка, что уже не уменьшает потребление но расширяет возможности .
И тут ошибка.
Не читайте даташиты, а измеряйте в реале! Иначе вам не хватает знаний, какие ещё влезут потребители...
А пока одна реклама - вам уже дал ссылку на стабилизатор от ST на 3.3В от 0.5В до 6В с < 1 nA утечкой с зарядкой АКБ :) Толку от этих значений, если нет полной картины?

 
Последнее редактирование:

nikolz

Well-known member
Это сколько будет в батарейках? В смысле на сколько хватит CR2032 или две ААА при допустим просыпании раз в 15 минут.
Примерно в 1.5 раза больше, чем в расчетах по WIFI (у меня минимальное время по WIFI 0.3 c)
и еще 1.5 раза, так как у меня в расчетах 10 мин. В итоге примерно полтора года.
Но это примерные оценки, так как не учитывается время чтения показаний датчиков и обработка данных.
 

nikolz

Well-known member
У вас опять всё в ошибках. Вот пример замеров, с отключенными светодиодами: Marker (1) is again power on: avg. 72,5 mA with WiFi enabled and Marker (2) shows the new tuned deep sleep current at avg. 88.8 uA. Peak is still 213 mA as of WiFi boost.
И тут ошибка.
Не читайте даташиты, а измеряйте в реале! Иначе вам не хватает знаний, какие ещё влезут потребители...
А пока одна реклама - вам уже дал ссылку на стабилизатор от ST на 3.3В от 0.5В до 6В с < 1 nA утечкой с зарядкой АКБ :) Толку от этих значений, если нет полной картины?
это у Вас в ошибках.
А у меня (как не странно для Вас) даже с документацией совпадает. (Правда удивительно?)
-----------------
Не занимайтесь телепатией, а читайте посты внимательно.
Я же написал, что это МОИ ИЗМЕРЕНИЯ (большими буквами, для телепатов)
 

pvvx

Активный участник сообщества
это у Вас в ошибках.
А у меня (как не странно для Вас) даже с документацией совпадает. (Правда удивительно?)
Где эта документация? Листки от Espressif? Дык в них только реклама и пока в реале ничего не совпало с реальностью. Есть фирмы, которые пишут с завышениями, т.к. если будет больше, то им придется менять продукцию. Espressif к таким не относится. У них один обман.
Я же написал, что это МОИ ИЗМЕРЕНИЯ (большими буквами, для телепатов)
А что измеряли то? Так и не привели.
Я вот тестер включил и меряю - показывает нуль. :)
В прошлый раз вы писали выдернутые цифры из TI PDF какого-то показателя на какой-то режим микросхемы. Вам было уточнено, что это только ток на её ноги, а общий ток в вашей описанной на словах схеме в 5..10 раз больше из-за разных факторов и других элементов, включая утечки самой платы. Теперь вы пишите об этом, т.е. урок усвоили, но данные по току не корректируете на реальные применения и замеры.
Тут уже описывал токи у Flash микросхем и прочие технические данные из-за которых модуль ESP8266 потребляет значительно больше, но модератору это не понравилось, т.к. нарушает сказку о данных, описанных в листках от Espressif :) Т.е. модератор продемонстрировал, что в этой теме технические данные описывать не стоит, с чем я и согласен.
 
Последнее редактирование:

nikolz

Well-known member
Где эта документация? Листки от Espressif? Дык в них только реклама и пока в реале ничего не совпало с реальностью. Есть фирмы, которые пишут с завышениями, т.к. если будет больше, то им придется менять продукцию. Espressif к таким не относится. У них один обман.
А что измеряли то? Так и не привели.
Я вот тестер включил и меряю - показывает нуль. :)
В прошлый раз вы писали выдернутые цифры из TI PDF какого-то показателя на какой-то режим микросхемы. Вам было уточнено, что это только ток на её ноги, а общий ток в вашей описанной на словах схеме в 5..10 раз больше из-за разных факторов и других элементов, включая утечки самой платы. Теперь вы пишите об этом, т.е. урок усвоили, но данные по току не корректируете на реальные применения и замеры.
Тут уже описывал токи у Flash микросхем и прочие технические данные из-за которых модуль ESP8266 потребляет значительно больше, но модератору это не понравилось, т.к. нарушает сказку о данных, описанных в листках от Espressif :) Т.е. модератор продемонстрировал, что в этой теме технические данные описывать не стоит, с чем я и согласен.
Я могу научить Вас как мерить мка без Вашего оборудования простым милливольтветром, но Вам это не надо.
Как бы Вы не пытались все огадить, но факты упрямая вещь.
Я измерил ток ESP12 в режиме дип слип и получил 20 мка с погрешкостью 0.5 мка. меня устраивает.
Я измерил ток потребления Ti таймера, который я просто напаял на переходник и получил 0.3 мка с погрешностью 0.05 мка (выше чем в документации 0.03 мка) но это решение меня тоже устраивает, так как другие решения имею большие токи стоят дороже и более сложные в реализации.
 

nikolz

Well-known member
и еще
мне удалось уменьшить ток дип слип до 3 мка при сохранении скорости реакции в 0.3 с.
При использовании модифицированного загрузчика ( замечу не SDK а лишь загрузчика) это позволяет еще больше увеличить срок службы батареек.
-----------------------
В плане достижения максимального результата экономии энергоресурсов осталась лишь одна не решенная задача - отключить сканирование всех каналов с принудительной установкой заданного. Тогда будет еще в несколько раз экономичнее.
------------------------
Но если не получится, то Attiny+NRF полностью решает проблему малого энергопотребления дешево и просто.
 

pvvx

Активный участник сообщества
Я могу научить Вас как мерить мка без Вашего оборудования простым милливольтветром, но Вам это не надо.
Как бы Вы не пытались все огадить, но факты упрямая вещь.
Я измерил ток ESP12 в режиме дип слип и получил 20 мка с погрешкостью 0.5 мка. меня устраивает.
Я измерил ток потребления Ti таймера, который я просто напаял на переходник и получил 0.3 мка с погрешностью 0.05 мка (выше чем в документации 0.03 мка) но это решение меня тоже устраивает, так как другие решения имею большие токи стоят дороже и более сложные в реализации.
Вы всё и везде придумываете. Это уже доказано не раз. Фактов то нет, а кто измерял, тот везде пишет о большем токе :p
Характеристики ESP8266 кроме Espressif никто не пишет, т.к. они ужасны и дабы не поганить продажи. С другими WiFi-SoC такого не наблюдается - каждый производитель модулей выдает свои замеры и даташиты, да производит сертификацию - откройте сайт сертификации и всё найдете... :p
В плане достижения максимального результата экономии энергоресурсов осталась лишь одна не решенная задача - отключить сканирование всех каналов с принудительной установкой заданного. Тогда будет еще в несколько раз экономичнее.
А у вас этого и нет.
Вы опять что-то выдумываете. Вы же приводили график тока потребления, и сканирования всех каналов там нет - этого невозможно не заметить - пачка подряд следующих запросов-передач (смотрите любые чужие графики - их в сети на ESP8266 полно). Обычное сканирование всех каналов на ESP8266 происходит при авто-реконнекте (когда искомой AP нет) и длиться 1..2 сек, в зависимости от версии SDK. Во всяком случае, желательно ждать на каждом канале время, в период стандартного beacon, а их шаг 0.1024 сек. Помножьте на 11 (13) каналов :) При этом вы получите ещё разные времена соединения, на совмещение со следованием арбитража AP, которую не отразили в графиках и данных, к синхронизации шагу beacon-ов, а выдрали самый короткий из тысячи оборванных по питанию руками соединений (там нет даже передачи отсоединения от AP и паузы связанной с переходом в deep-sleep). Т.е. одно соединение будет t сек, второе может доходить до t+0.1 сек и если в сети была коллизия, то t+n*0.1 сек :p
Так что полное первоначальное соединение с запросом ip через DHCP на бытовых роутерах занимает на ESP8266 от 3.5 до 4.7 сек и зависит больше от роутера и быстродействия обмена ключами (их обработки), где ESP8266 не имеет никаких преимуществ среди других WiFi с более шустрыми CPU или аппаратными блоками криптографии. Но безусловно лучше 11 перестраиваемых каждой по своей полосе антенн :)
 
Последнее редактирование:

Evgeny D

Member
Коллеги, наконец собрвл счётчик импульсов Attiny85+ESP-01E
ток сна 20мкА ESP + 4мкА attiny

dontsovcmc/ImpCounter

Есть проблема: когда геркон в счетчике замкнут, то Attiny не засыпает и потребляет ~20мкА

Буду рад конструктивным советам и замечаниям
 

nikolz

Well-known member
Коллеги, наконец собрвл счётчик импульсов Attiny85+ESP-01E
ток сна 20мкА ESP + 4мкА attiny

dontsovcmc/ImpCounter

Есть проблема: когда геркон в счетчике замкнут, то Attiny не засыпает и потребляет ~20мкА

Буду рад конструктивным советам и замечаниям
У Вас там опечатка:
Потребление
  • в режиме сна: 25 ма (40мкА sect при входе)
  • в режиме передачи данных: 70мА (~2 секунды)
ма надо исправить на мка.
=============================================
интересно было бы сравнить потребление с вариантом реализации лишь на ESP .
Вы не считали какой у вас выигрыш получается?
 

Evgeny D

Member
У Вас там опечатка:

ма надо исправить на мка.
=============================================
интересно было бы сравнить потребление с вариантом реализации лишь на ESP .
Вы не считали какой у вас выигрыш получается?
Спасибо!

Не считал. За основу взят проект другого человека, который привел все графики потребления:
ESP8266 on batteries for years – part 1 – Cron Blog – My personal findings

В комментариях он добавил, почему не использует полное отключение ESP пином EN:
"I tried that and it uses very little current. The problem is that the next time it boots, it takes 3 seconds connection to my wifi instead of 0.5-1 second… All the saved energy is now lost in wifi connection."

У меня ESP-01 подключается где-то секунду. А вот ESP-12 подключалась еще быстрее ~400мс. Не знаю из-за чего разница.
 

nikolz

Well-known member
Спасибо!

Не считал. За основу взят проект другого человека, который привел все графики потребления:
ESP8266 on batteries for years – part 1 – Cron Blog – My personal findings

В комментариях он добавил, почему не использует полное отключение ESP пином EN:
"I tried that and it uses very little current. The problem is that the next time it boots, it takes 3 seconds connection to my wifi instead of 0.5-1 second… All the saved energy is now lost in wifi connection."

У меня ESP-01 подключается где-то секунду. А вот ESP-12 подключалась еще быстрее ~400мс. Не знаю из-за чего разница.
У меня подключается за 290 мс.
А увеличение времени подключения при рестарте через EN происходит потому что при этом происходит очистка памяти RTC а там параметры WIFI соединения хранятся.
Т е старт через EN равносилен отключению и включению питания.
-------------------------
Я видел его расчеты.
---------------------
Вот мой расчет:
Если работаем с датчиком в boot или отключаем в начале WIFI то ток будет не 70 ма, а 13 ма.
при этом время на активность составит 150 мс,
а средний ток при этом будет примерно 20 ма.
Таким образом,
262800 включений потребуют энергию 262800*0.015*0.2/3600=219 ma*ч
-----------------------
В сумме получим для одной ESP потребление 219+345+87=652 ma*h
с использованием Attiny85 у него рассчитано 531.5 ma"h
-------------------------
Экономия энергии составит (652-531)*652 = 18%.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Выходит, что переход на ESP-32 и использование его сопроцессора в задаче сбора замеров каждые 1 минуту и передачи раз в час, более выгоден. С условием использования Ардуино.
Описание своего загрузчика уменьшит потребление ещё в разы.
У меня подключается за 290 мс.
Не "подключается", а пересоединяется.
На ваших графиках всегда нет посылок отсоединения от AP...
Тут надо уточнять, какой роутер, какой глюк его используете...
А увеличение времени подключения при рестарте через EN происходит потому что при этом происходит очистка памяти RTC а там параметры WIFI соединения хранятся.
Данные в RTC копируются из заранее запомненных за несколько us и погоды не делают.
----
На ESP8266 минималка сбора параметров это 30 мс загрузки rapid-loder и около 20 мс на стирание сектора при откладывании замеров. Т.е. его можно разбудить на 35..55 мс для опроса датчика и скидывания показаний. Возможно применение накоплений в RTC, а при заполнении слив в Flash, что даст активность 35 мс, а по заполнению +10..25 мс на сохранение в Flash.

У ESP-32 ULP обеспечивает меньшее время активности, но записи в Flash вроде нет… Ток сна при этом порядка 10 мкА, а активность – тут как напишите программу для ULP (пару мА на несколько мс может и выйдет).

У RTL(B) – время на процедуру выхода и входа из sleep основного CPU до 2 мс…
Т.е. отношение 35 к 2, если сравнивать с ESP8266.

Уменьшить 35 мс у ESP8266 можно только применением внешнего MCU для управления типами загрузки, что пока никто не представлял, но один из вариантов дан давно... Смысл его теряется, т.к. применение PIC12..24 позволяет получить ток сна до 1 мкА со всеми утечками схемы (сам он потребляет до 20 нА).
 
Последнее редактирование:

pvvx

Активный участник сообщества
Для примера из ESP8266 on batteries for years – part 1 – Cron Blog – My personal findings
График среднего потребления ESP8266 при времени между просыпаниями:
Снимок12.gif
Пометка указывает назначенный автором период в 3600 сек.
Если изменить в Arduino ничего нельзя, т.е. период активности оставить тем-же = 1 сек при среднем 60 мА, то разница при отключении ESP8266 и deep_sleep составит не 18%, а в разы:
Снимок14.gif
У зеленого учтена утечка ключа питания в 100 нА.
В итоге можно активировать ESP8266 каждые 1200 сек и получим то-же потребление.
На сколько это скажется при опросе ещё датчиков каждую минуту - неизвестно, т.к. сильно зависит от типа использованного MCU. Т.е. графики рисуем сами и находим оптимумы. :)
 
Последнее редактирование:
Сверху Снизу