Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Железные вопросы по esp8266", создана пользователем nikolz, 14 дек 2017.

  1. nikolz

    nikolz Гуру

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

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.135
    Симпатии:
    226
    @nikolz Вы вроде о трёх вариантах говорили, какой третий?
     
  3. nikolz

    nikolz Гуру

    Сообщения:
    4.133
    Симпатии:
    431
    третий вариант -это развитие первых двух с добавлением внешних микросхем.
    Добавление внешних микросхем с мка потреблением позволяет не только сократить потребление 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 и имеют очень простые схемы и малое потребление.
     
    Последнее редактирование: 15 дек 2017
  4. nikolz

    nikolz Гуру

    Сообщения:
    4.133
    Симпатии:
    431
    В итоге у меня получилась такая схема
    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 сек.
     
    Последнее редактирование: 15 дек 2017
    Andy Korg нравится это.
  5. Andy Korg

    Andy Korg Moderator Команда форума

    Сообщения:
    413
    Симпатии:
    74
    Это сколько будет в батарейках? В смысле на сколько хватит CR2032 или две ААА при допустим просыпании раз в 15 минут.
     
  6. goodwin

    goodwin Читатель

    Сообщения:
    123
    Симпатии:
    22
    CR2032 ни на сколько (см. импульсный ток элемента).
     
  7. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    У вас опять всё в ошибках. Вот пример замеров, с отключенными светодиодами: 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 утечкой с зарядкой АКБ :) Толку от этих значений, если нет полной картины?

     
    Последнее редактирование: 15 дек 2017
  8. nikolz

    nikolz Гуру

    Сообщения:
    4.133
    Симпатии:
    431
    Примерно в 1.5 раза больше, чем в расчетах по WIFI (у меня минимальное время по WIFI 0.3 c)
    и еще 1.5 раза, так как у меня в расчетах 10 мин. В итоге примерно полтора года.
    Но это примерные оценки, так как не учитывается время чтения показаний датчиков и обработка данных.
     
  9. nikolz

    nikolz Гуру

    Сообщения:
    4.133
    Симпатии:
    431
    это у Вас в ошибках.
    А у меня (как не странно для Вас) даже с документацией совпадает. (Правда удивительно?)
    -----------------
    Не занимайтесь телепатией, а читайте посты внимательно.
    Я же написал, что это МОИ ИЗМЕРЕНИЯ (большими буквами, для телепатов)
     
  10. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Где эта документация? Листки от Espressif? Дык в них только реклама и пока в реале ничего не совпало с реальностью. Есть фирмы, которые пишут с завышениями, т.к. если будет больше, то им придется менять продукцию. Espressif к таким не относится. У них один обман.
    А что измеряли то? Так и не привели.
    Я вот тестер включил и меряю - показывает нуль. :)
    В прошлый раз вы писали выдернутые цифры из TI PDF какого-то показателя на какой-то режим микросхемы. Вам было уточнено, что это только ток на её ноги, а общий ток в вашей описанной на словах схеме в 5..10 раз больше из-за разных факторов и других элементов, включая утечки самой платы. Теперь вы пишите об этом, т.е. урок усвоили, но данные по току не корректируете на реальные применения и замеры.
    Тут уже описывал токи у Flash микросхем и прочие технические данные из-за которых модуль ESP8266 потребляет значительно больше, но модератору это не понравилось, т.к. нарушает сказку о данных, описанных в листках от Espressif :) Т.е. модератор продемонстрировал, что в этой теме технические данные описывать не стоит, с чем я и согласен.
     
    Последнее редактирование: 16 дек 2017
  11. nikolz

    nikolz Гуру

    Сообщения:
    4.133
    Симпатии:
    431
    Я могу научить Вас как мерить мка без Вашего оборудования простым милливольтветром, но Вам это не надо.
    Как бы Вы не пытались все огадить, но факты упрямая вещь.
    Я измерил ток ESP12 в режиме дип слип и получил 20 мка с погрешкостью 0.5 мка. меня устраивает.
    Я измерил ток потребления Ti таймера, который я просто напаял на переходник и получил 0.3 мка с погрешностью 0.05 мка (выше чем в документации 0.03 мка) но это решение меня тоже устраивает, так как другие решения имею большие токи стоят дороже и более сложные в реализации.
     
  12. nikolz

    nikolz Гуру

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

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Вы всё и везде придумываете. Это уже доказано не раз. Фактов то нет, а кто измерял, тот везде пишет о большем токе :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 перестраиваемых каждой по своей полосе антенн :)
     
    Последнее редактирование: 18 дек 2017
  14. Evgeny D

    Evgeny D Новичок

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

    dontsovcmc/ImpCounter

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

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

    nikolz Гуру

    Сообщения:
    4.133
    Симпатии:
    431
    У Вас там опечатка:
    ма надо исправить на мка.
    =============================================
    интересно было бы сравнить потребление с вариантом реализации лишь на ESP .
    Вы не считали какой у вас выигрыш получается?
     
  16. Evgeny D

    Evgeny D Новичок

    Сообщения:
    72
    Симпатии:
    0
    Спасибо!

    Не считал. За основу взят проект другого человека, который привел все графики потребления:
    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мс. Не знаю из-за чего разница.
     
  17. nikolz

    nikolz Гуру

    Сообщения:
    4.133
    Симпатии:
    431
    У меня подключается за 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%.
     
    Последнее редактирование: 24 мар 2018
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Выходит, что переход на ESP-32 и использование его сопроцессора в задаче сбора замеров каждые 1 минуту и передачи раз в час, более выгоден. С условием использования Ардуино.
    Описание своего загрузчика уменьшит потребление ещё в разы.
    Не "подключается", а пересоединяется.
    На ваших графиках всегда нет посылок отсоединения от AP...
    Тут надо уточнять, какой роутер, какой глюк его используете...
    Данные в 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 нА).
     
    Последнее редактирование: 24 мар 2018
  19. Evgeny D

    Evgeny D Новичок

    Сообщения:
    72
    Симпатии:
    0
    Отличные расчеты! Только вопрос: а для внешних прерываний они подходят? Это больше про чтение датчика.
    Я не видел ни одного примера программы.
     
  20. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    8.395
    Симпатии:
    1.271
    Для примера из 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. Т.е. графики рисуем сами и находим оптимумы. :)
     
    Последнее редактирование: 24 мар 2018

Поделиться этой страницей