• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Энергопотребление ESP (esp_now )

nikolz

Well-known member
Продолжаю выкладывать результаты исследований различных режимов работы eSP на стандартном SDK 2.1.0
--------------------
Информация к размышлению.
-------------------
Разработчики eSP8266 сделали свой протокол обмена между ESP8266, который не требует роутера.
По утверждению из документации протокол обеспечивает более экономичный и более быстродействующий режим обмена модулей между собой.
И это правда.
----------------------------------
Вот результат тестирования минимального времени связи по данному протоколу.
алгоритм следующий:
ESP8266 назначенное контроллером посылает широковещательное послание всем ESP
из списка ( в данном тесте их два) После этого ложится спать.
------------------------------------
Картинка потребляемого тока
upload_2017-11-15_22-35-25.png

Как видим, данный протокол существенно быстрее чем WIFI UDP.
-------------------------------------
На данном графике интервал до 126 мс - это стандартный старт ESP
интервал от 126 до 156 мс - это полагаю настройка передатчика и приемника
интервал от 156 до 171 мс - это собственно посылка сообщения.
------------------------------------------
Энергозатраты: 7.5 ma*s или 0.23 дж-
 
Последнее редактирование:

nikolz

Well-known member
это новые результаты с SDK 2.2.0
upload_2018-3-18_11-14-54.png
энергозатраты 6.5 ма*s или 0.02 дж
 

nikolz

Well-known member
В режиме ESP-NOW c SDK 3.0 получаем минимальную длительность сеанса составляет менее 0.1 sec.
------------------------

Пример расчета длительности работы от батарейки 3.7в , емкостью 1200 maH.
в режиме deep-sleep ток потребления в неактивном состоянии составит менее 20 мка,
в режиме прерывания от внешнего датчика на пин EN ток потребления составит менее 10 мка.
При одном сеансе в минуту продолжительность работы не менее 22 000 часов или 2.5 года

upload_2019-5-12_18-38-47.png
 

pvvx

Активный участник сообщества
В режиме ESP-NOW c SDK 3.0 получаем минимальную длительность сеанса составляет менее 0.1 sec.
Очередной регресс?

Ранее, годы назад для ESP8266, было активности 63 мс при передаче значения ADC стандартными WiFi пакетами роутеру, а стало 100 мс при специализированной передаче ESP->ESP only?
https://esp8266.ru/forum/threads/ehnergopotreblenie-esp-itogi.3001/page-2#post-48598
 

nikolz

Well-known member
Очередной регресс?

Ранее, годы назад для ESP8266, было активности 63 мс при передаче значения ADC стандартными WiFi пакетами роутеру, а стало 100 мс при специализированной передаче ESP->ESP only?
https://esp8266.ru/forum/threads/ehnergopotreblenie-esp-itogi.3001/page-2#post-48598
ну, во-первых, на вашем графике по ссылке не 63, а 88.

Во-вторых, я лишь написал про свое решение. Меня оно полностью устраивает.
Непонятно, что Вас так бесит, когда я рассказываю о своих результатах.
Мне например по... ваши достижения.
----------------------------
Но если Вы так взволнованы и не поняли , то поясняю разницу в вашем и моем решении
Разница в 10 ms связана со скоростью работы загрузчика. У вас быстрее на 10 ms. Ну и что?
Я это знаю. По затратам энергии это дает 5%.
Т е Ваше решение будет работать от указанной батарейки не 2.5 года, а 2.6 года. Это существенно?
-------------------------------
Но в настоящее время есть вариант TLSR8266 (ядро тоже) и время активности уже 2 ms, а цена модуля 1.5$.
Почувствуйте разницу?
---------------------------------
Еще раз повторю я использую стандартный SDK
и при работе моей сети нет надобности в роутере и в линуксе и вообще в монстрах.
Меня это устраивает.
У 99% посетителей этого сайта ESP кушает в 10 и более раз больше .
------------------
Поэтому захотят решить эту проблему энергопитания возьмут Ваш вариант,но сомневаюсь, что осилят, или мой .
Мой вариант без nboot, т е полностью на типовом решении даст время активности 120 мс, это хуже, чем c nboot, но проще и
все же обеспечивает в 10-40 раз меньше энергопотребление,чем применяемые большинством решения.
------------------
Ничего не упустил?
------------------------
Успехов Вам желаю.
 

pvvx

Активный участник сообщества
ну, во-первых, на вашем графике по ссылке не 63, а 88.
Во-вторых, я лишь написал про свое решение. Меня оно полностью устраивает.
Потом, при последующих версиях уменьшили до 60, а ссылка на начальные сравнения и не только моего решения, к которому даны описания с исходниками :p
А где вы описали своё решение?
Т е Ваше решение будет работать от указанной батарейки не 2.5 года, а 2.6 года. Это существенно?
Не вижу реальных замеров готового и функционального устройства. И почему 2.5..2.6 года?
По ссылке приведен график - и там различия не на 5%, а в разы, ближе к одному порядку, т.к. шкала логарифмическая :p
Но в настоящее время есть вариант TLSR8266 (ядро тоже) и время активности уже 2 ms, а цена модуля 1.5$.
Почувствуйте разницу?
Это хорошо, но как эти 2 ms передать в интернет? Обычный и стандартный двухдиапазонный роутер как и что примет?
Надо докупать что-то ещё? Где описание? ...
У 99% посетителей этого сайта ESP кушает в 10 и более раз больше .
Это по тому, что нет до сих пор нормальной реализации мало-потребляющих режимов в SDK и для Arduino.
Поэтому захотят решить эту проблему энергопитания возьмут Ваш вариант,но сомневаюсь, что осилят, или мой .
Т.е. вы сначала говорите что используете стандартный SDK, а потом что это не осилят?
Ничего не упустил?
Упустили главное - если требуется минимальное потребление + устойчивая работа + стандартный WiFi, то это реализуется на других модулях WiFi.
 

nikolz

Well-known member
не возражаю.
но я и не заявлял что все решается этим способом.
Это один из возможных вариантов, который требует меньших знаний, чем ваш.
Про 60 мс - не доказали.
Я тестировал Ваш загрузчик который использует и CNLohr
не менее 60 мс лишь загрузчик.
Получается что передача данных у вас за 0 мс?
А сколько надо чтобы установить соединение тоже 0?
А если ваш загрузчик прикрутить со стандартным SDK то вообще получается тормоз.
я вам про это говорил, но вы на это ничего вразумительного не ответили
-----------------
Мой вариант есть в примерах в документации по SDK а nboot - это упрощенный rboot
Поэтому повторить мое решение много знаний не требуется.
А повторить ваше, сомневаюсь что скоро кто-то решится.
--------------------
Про TLSR8266 - это протокол BLE.
В отчете Ti показана устойчивая связь на 1.6 км по протоколу BLE5.0.
------------------------
Теперь про умный дом и выход в интернет.
Ну согласитесь что лишь мазохист сделает доступ к своим устройствам из публичной сети.
----------------------
А правильный умный дом имеет лишь одну точку доступа а вся сеть должна быть скрыта от посторонних глаз.
Но это уже другая история.
 

nikolz

Well-known member
@nikolz я так понял что вы говорили о TLSR8266 в контексте BLE5.0 и дальности 1.5км. нет?
нет я говорил об отчете Ti. Они испытывают свои разработки.
------------------------
TLSR826x предлагает одновременное разрешение IoT multi-протокола на диапазоне 2.4 GHz ISM, включая Bluetooth (BLE4.0 и BLE4.2), сетка BLE, 6LoWPAN, поток, ZigBee, RF4CE, HomeKit и собственнические протоколы 2.4 GHz.
TLSR826x поддерживает OTA 32 бита MCU, BLE/802.15.4/2.4 G, 16k/32KB SRAM, вспышку 128KB-512KB, ADC 14bit с PGA, 6-channel PWM (ИК 2 каналов), один дешифратор квадратуры (QDEC), GPIO, и многошаговое управление потреблением.
----------------------------
BLE 5.0 пока есть лишь у Ti и Nordic.
 

nikolz

Well-known member
@nikolz я так понял что вы говорили о TLSR8266 в контексте BLE5.0 и дальности 1.5км. нет?
вернее сказать , у Telink тоже есть, но купить не получается пока.
----------------------
tlsr8x5x нового поколения Telink представляет современное разрешение IoT ультра низкой мощности (ULP) одновременное multi-протокола на диапазоне 2.4 GHz ISM. поддерживает BLE 5.0 со скоростью передачи данных 2X, 4x LR, 8X расширение (AE), до 8 антенн для внутреннего позиционирования, как Telink proprietary и Sig BLE Mesh, Zigbee, RF4CE, HomeKit, Thread, ANT и 2.4 GHz proprietary. 32-битный MCU, Радио BLE / 802.15.4 2.4 GHz, 64KB SRAM, вспышку 512KB, 14BIT ADC с PGA, AMIC, DMIC, стерео тональнозвуковой выход, 6-channel PWM, один дешифратор квадратуры (QDEC), и гибкие интерфейсы GPIO.
-------------------
 

pvvx

Активный участник сообщества
Теперь про умный дом и выход в интернет.
Ну согласитесь что лишь мазохист сделает доступ к своим устройствам из публичной сети.
----------------------
А правильный умный дом имеет лишь одну точку доступа а вся сеть должна быть скрыта от посторонних глаз.
Но это уже другая история.
Время “вау” эффекта от включения лампочки со смартфона очень давно прошло. Ныне больше всего интересуют возможности интеграции десятков датчиков и исполнительных устройств в общую систему со структурой их управления по задаваемым сценариям.

Датчик, жестко привязанный к исполнительному устройству, типа беспроводный датчик температуры к кондиционеру - это прошлый век.

Какое управление и модификацию сценариев может предоставить ESPxxx или чип с 16 кило RAM (или другие последовательно распределенные системы по принципу датчик -> исполнитель <-> интерфейс “вкл./выкл.”)?

Почитайте вопросы людей купивших наборы IoT и собирающих “вумный дом”. Среди них и найдете, к примеру, такие – “доступа к дому нет, а батарейка сдохла или по другим причинам отвалился датчик от какого-то устройства и дом замерзает и т.д. Как нажать кнопку стыковки на панели управления тупым кондиционером или другим устройством удаленно?” При этом в доме датчиков уже десятки, но они завязаны исключительно на свои исполнительные устройства… А так-же массу вопросов – какой из датчиков какой фирмы стыкуется к какому устройству…

После этого и поймете, где там в доме сдался WiFi и какой внешний доступ-сервис…
 

nikolz

Well-known member
решил обновить тему.
В SDK 3.x.x разработчики ESP8266 исправили много ошибок.
В итоге с помощью функций fpm... удалось получить следующие параметры
Режим связи ESP-NOW время сеанса 18 ms.
При этом в режиме сна ток потребления 0.5 ма.
Просыпается без перезагрузки.
Если будить от GPIO то время реакции составляет 5 ms.
------------------
Интересный можно сделать вариант метеостанции от солнечной панельки.
---------------------
Но этот режим имеет один недостаток.
При пробуждении обязательно включается модем WiFi и происходит скачок тока до 70 ма.
Хотелось бы проснуться без модема с током в 15 ма.
=========
Но для этого надо прояснить лишь один момент.
Дело в том, что мне (как впрочем и pvvx) не удалось получить ток сна с просыпанием без перезагрузки менее 2 ма, а вот разработчики умудрились получить 0.5 ма.
Может быть кто-то знает, как это сделать?
 

pvvx

Активный участник сообщества
Отключите кварц и измерьте - потом будете писать всякие цифры :)
 

pvvx

Активный участник сообщества
решил обновить тему.
В SDK 3.x.x разработчики ESP8266 исправили много ошибок.
В итоге с помощью функций fpm... удалось получить следующие параметры
Режим связи ESP-NOW время сеанса 18 ms.
При этом в режиме сна ток потребления 0.5 ма.
Просыпается без перезагрузки.
Если будить от GPIO то время реакции составляет 5 ms.
Не вижу изменений с 2015 года.
И для уточнения - вы уже измерили ток утечки при отключенном кварце? Это будет тот предел, который можно достичь если есть аппаратные выключатели тактирований.
Отключение ключей питания самого CPU и RAM уже относятся к режиму deep-sleep - в работе остается только RTC.
RTC работает как и в случае с отключением кварца.
Интересный можно сделать вариант метеостанции от солнечной панельки.
Дык вперед :) Где-же пример?

Но этот режим имеет один недостаток.
При пробуждении обязательно включается модем WiFi и происходит скачок тока до 70 ма.
Хотелось бы проснуться без модема с током в 15 ма.
Меняйте кварц на более низкую частоту и/или после старта boot в ROM глушите PLL.
Но для этого надо прояснить лишь один момент.
Дело в том, что мне (как впрочем и pvvx) не удалось получить ток сна с просыпанием без перезагрузки менее 2 ма, а вот разработчики умудрились получить 0.5 ма.
Может быть кто-то знает, как это сделать?
Меня не приплетайте к своим непоняткам.
Смотрим хотя-бы 2015 год:
Там на графиках, при модуле ESP-01 (со светодиодом в питании), указаны минимальные токи потребления в периодах sleep (ваших "fpm..."). (Minimum value: 0.00152A)
При этом потребление светодиода в питании ESP-01 можете найти в других графиках от 2015 года. В среднем это составляет от 0.4 мА (в зависимости от диода, резистора и напряжения питания).
 

nikolz

Well-known member
Не вижу изменений с 2015 года.
И для уточнения - вы уже измерили ток утечки при отключенном кварце? Это будет тот предел, который можно достичь если есть аппаратные выключатели тактирований.
При этом потребление светодиода в питании ESP-01 можете найти в других графиках от 2015 года. В среднем это составляет от 0.4 мА (в зависимости от диода, резистора и напряжения питания).
Очевидно, Вы не поняли. или сами себя опровергаете.
Показываю на ваших же результатах.
Как говорят в Одессе: следите за руками.
смотрим на Ваши картинки по вашей же ссылке:
1603979014364.png

1603979858406.png

Если я правильно понял, то слово Average: означает среднее значение и очевидно тока потребления.
Что же видим?
Самое минимальное значение среднего тока это 21 ма
--------------------
Я тогда получал среднее 2 мА. Вы ругались , что так не бывает что у вас вот эти 21 мА среднее.
сейчас у разработчиков (не у меня) 0.5 мА просто тупо без выбросов в 70 мА.
------------------
И это не мое достижение, а просто работа функций SDK.
Я это получаю на ESP-12 стандартными функциями без изменения кварцев каких либо отключений и прочей хрени которую вы рекомендуете.
Вот меня и интересует как это они добились исключительно программными методами.
Я не смог (у меня лишь 2 мА) , Вы тоже не смогли у Вас лишь 21 мА по вашей ссылке.
-------------------
Если я пропустил Вашу картинку где средний ток у вас был указан меньше, и это не режим DeepSleep
и не требует перезагрузки для выхода, то просто дайте ссылку на картинку.
 

pvvx

Активный участник сообщества
Ещё для информации...
ESP32 имеет большие возможности управления потреблением.
ESP-NOW можно напрямую сравнивать с режимами работы BLE у ESP32.

По ссылке есть некоторые итоги измерений (авто перевод на ru):
Результат испытаний
Ниже приведены некоторые статистические данные о потреблении энергии для типичного сценария использования BLE:
  • MAX частота процессора = 240 МГц
    ADV (adv_interval = 1000,0 мс) средний ток 3,05 мА, макс 149,34 мА, мин 0,71 мА
    SCAN (scan_wiONndow = 500,0 мс, интервал сканирования = 1000,0 мс) средний ток 59,57 мА, максимум 170,26 мА, минимум 0,93 мА
    ПОДКЛЮЧЕНИЕ ( connection_interval = 960.0ms, slave_latency = 0) средний ток 2,07 мА, макс. 152,28 мА, мин. 0,81 мА
  • MAX частота процессора = 160 МГц
    ADV (adv_interval = 1000,0 мс) средний ток 2,51 мА, макс 139,34 мА, мин 0,78 мА
    SCAN (scan_window = 500,0 мс, интервал сканирования = 1000,0 мс) средний ток 50,37 мА, макс 134,85 мА, мин 1,08 мА
    ПОДКЛЮЧЕНИЕ ( connection_interval = 960.0ms, slave_latency = 0) средний ток 2,05 мА, макс. 121,69 мА, мин. 1,11 мА
  • МАКС.частота процессора = 80 МГц
    ADV (adv_interval = 1000,0 мс) средний ток 2,55 мА, макс 114,81 мА, мин 0,79 мА
    SCAN (scan_window = 500,0 мс, интервал сканирования = 1000,0 мс) средний ток 49,05 мА, макс 123,80 мА, мин 0,85 мА
    ПОДКЛЮЧЕНИЕ ( connection_interval = 960,0 мс, slave_latency = 0) средний ток 2,11 мА, макс. 106,01 мА, мин. 0,94 мА

И для сравнения выработанный и подтвержденный график для не лучшего по показателям и возможностям, но самого дешевого на али, чипа BLE 4.0 TLSR8266:
JDY-10-Power.gif
Advertising в 1 сек дает среднее потребление у TLSR8266 в 70 uA, а у ESP32 - 2 мА.
Пояснения:
За базовую функциональность берется типовой BLE маяк (TX + 10Дб): проснулся, передал ADV и опять уснул.
Нижняя шкала указывает период Advertising Interval, боковая - среднее потребление.
deep-sleep, restart - с использованием deep-sleep и каждый раз полный рестарт с полной инициализацией RF и передачей ADV (активность 15 ms).
sleep - с использованием sleep: без рестарта, посылка ADV (активность 6 ms).
deep-sleep, beacon - с использованием deep-sleep: упрошенный рестарт, посылка ADV (активность 6 ms).

Восстановление c выдачей маяка - это активность 6 ms, средние 11.2 мА.
Инициализация c выдачей маяка - это активность 15 ms, средние 11.3 мА.
Потребление в режиме sleep - 17.5 uA,
Потребление в Deep-Sleep +Timer+GPIO - 3.5 uA.
Без активного таймера маяку нельзя.

Примеры замеров:
---------
Новые чипы, пусть даже TLSR8251, имеют ещё более расширенные режимы по отключению внутренностей (частями для RAM и т.д.) и скорости восстановления из "спячки", что уменьшает время активности для Advertising в 2 раза (3 ms).
Меньшее время всё равно не достичь, т.к. требуется передача посылок на 3-х каналах и потребление описывается выходной мощностью тракта RF и ограничено технологией изготовления чипа. Т.е. уменьшить необходимую порцию энергии для выдачи ADV возможно всего до 2-х раз и потребление в x-sleep уже несущественно для периодов до 1 сек.
 

pvvx

Активный участник сообщества
Очевидно, Вы не поняли. или сами себя опровергаете.
Показываю на ваших же результатах.
Как говорят в Одессе: следите за руками.
смотрим на Ваши картинки по вашей же ссылке:
Посмотреть вложение 10039

Посмотреть вложение 10040

Если я правильно понял, то слово Average: означает среднее значение и очевидно тока потребления.
Что же видим?
Самое минимальное значение среднего тока это 21 ма
--------------------
Я тогда получал среднее 2 мА. Вы ругались , что так не бывает что у вас вот эти 21 мА среднее.
сейчас у разработчиков (не у меня) 0.5 мА просто тупо без выбросов в 70 мА.
------------------
И это не мое достижение, а просто работа функций SDK.
Я это получаю на ESP-12 стандартными функциями без изменения кварцев каких либо отключений и прочей хрени которую вы рекомендуете.
Вот меня и интересует как это они добились исключительно программными методами.
Я не смог (у меня лишь 2 мА) , Вы тоже не смогли у Вас лишь 21 мА по вашей ссылке.
-------------------
Если я пропустил Вашу картинку где средний ток у вас был указан меньше, и это не режим DeepSleep
и не требует перезагрузки для выхода, то просто дайте ссылку на картинку.
Вы о чем?
О потреблении бездействующего SoC?
Оно и указано в 2015 году на графиках как минимальное.
 

nikolz

Well-known member
Ещё для информации...
ESP32 имеет большие возможности управления потреблением.
ESP-NOW можно напрямую сравнивать с режимами работы BLE у ESP32.

По ссылке есть некоторые итоги измерений (авто перевод на ru):
Результат испытаний
Ниже приведены некоторые статистические данные о потреблении энергии для типичного сценария использования BLE:
  • MAX частота процессора = 240 МГц
    ADV (adv_interval = 1000,0 мс) средний ток 3,05 мА, макс 149,34 мА, мин 0,71 мА
    SCAN (scan_wiONndow = 500,0 мс, интервал сканирования = 1000,0 мс) средний ток 59,57 мА, максимум 170,26 мА, минимум 0,93 мА
    ПОДКЛЮЧЕНИЕ ( connection_interval = 960.0ms, slave_latency = 0) средний ток 2,07 мА, макс. 152,28 мА, мин. 0,81 мА
  • MAX частота процессора = 160 МГц
    ADV (adv_interval = 1000,0 мс) средний ток 2,51 мА, макс 139,34 мА, мин 0,78 мА
    SCAN (scan_window = 500,0 мс, интервал сканирования = 1000,0 мс) средний ток 50,37 мА, макс 134,85 мА, мин 1,08 мА
    ПОДКЛЮЧЕНИЕ ( connection_interval = 960.0ms, slave_latency = 0) средний ток 2,05 мА, макс. 121,69 мА, мин. 1,11 мА
  • МАКС.частота процессора = 80 МГц
    ADV (adv_interval = 1000,0 мс) средний ток 2,55 мА, макс 114,81 мА, мин 0,79 мА
    SCAN (scan_window = 500,0 мс, интервал сканирования = 1000,0 мс) средний ток 49,05 мА, макс 123,80 мА, мин 0,85 мА
    ПОДКЛЮЧЕНИЕ ( connection_interval = 960,0 мс, slave_latency = 0) средний ток 2,11 мА, макс. 106,01 мА, мин. 0,94 мА

И для сравнения выработанный и подтвержденный график для не лучшего по показателям и возможностям, но самого дешевого на али, чипа BLE 4.0 TLSR8266:
Посмотреть вложение 10038
Advertising в 1 сек дает среднее потребление у TLSR8266 в 70 uA, а у ESP32 - 2 мА.
Пояснения:
За базовую функциональность берется типовой BLE маяк (TX + 10Дб): проснулся, передал ADV и опять уснул.
Нижняя шкала указывает период Advertising Interval, боковая - среднее потребление.
deep-sleep, restart - с использованием deep-sleep и каждый раз полный рестарт с полной инициализацией RF и передачей ADV (активность 15 ms).
sleep - с использованием sleep: без рестарта, посылка ADV (активность 6 ms).
deep-sleep, beacon - с использованием deep-sleep: упрошенный рестарт, посылка ADV (активность 6 ms).

Восстановление c выдачей маяка - это активность 6 ms, средние 11.2 мА.
Инициализация c выдачей маяка - это активность 15 ms, средние 11.3 мА.
Потребление в режиме sleep - 17.5 uA,
Потребление в Deep-Sleep +Timer+GPIO - 3.5 uA.
Без активного таймера маяку нельзя.

Примеры замеров:
---------
Новые чипы, пусть даже TLSR8251, имеют ещё более расширенные режимы по отключению внутренностей (частями для RAM и т.д.) и скорости восстановления из "спячки", что уменьшает время активности для Advertising в 2 раза (3 ms).
Меньшее время всё равно не достичь, т.к. требуется передача посылок на 3-х каналах и потребление описывается выходной мощностью тракта RF и ограничено технологией изготовления чипа. Т.е. уменьшить необходимую порцию энергии для выдачи ADV возможно всего до 2-х раз и потребление в x-sleep уже несущественно для периодов до 1 сек.
Не уходите от ответа. Про TLSR я и без вас могу прочитать на их сайте как и про ESP32.
Покажите Ваш результат для ESP8266 со средним током сна менее 2 ма. не DeepSleep.
причем здесь минимум речь о среднем токе Вы разницу понимаете?
 
Сверху Снизу