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

Энергосбережение в устройствах с WIFI

nikolz

Well-known member
Вообще не понятно, каким образом, без выделения каналов, ресурсов на AP, схемы связи и прочего вы пытаетесь соединиться с внешней AP? Через грубый хак, работающий только на ваших устройствах?

У меня вообще не требуется никакого времени при периодической связи через несколько beacon периодов (у вас указанно - в 1 сек, можно и больше), с некоторыми WiFi свистками. Для них связь типа не разрывалась и аутентификация отключена. Соединились с AP по стандарту и засыпаете, просыпаетесь и продолжаете сессию… Но это не всегда работает, т.к. надо синхронизироваться и использовать тупой неполноценной WiFi-свисток.
При множественных устройствах такая схема не годиться - будет много коллизий. А как раз для множества устройств вы и делаете... :)
Нет у меня все стандартно.
стоит роутер TP-Link к нему по сети (кабелю 0 подключены через свич компы) ESP соединяется с роутером по wI-FI все как обычно. так же по WI-FI подключены телевизоры и нотбук. Программа сервера на компе который через кабель .
Если интересно могу показать пакеты.
У меня в eSP реализована настройка и подключение по WI-FI которая используется при запуске и в случае потери связи.
При просыпании настройки нет, так как я запоминаю все настройки от предыдущей активности.
Единственно что вылезает каждый раз это этот бессмысленный ARP.
Время на пакеты я смотрю в пакетах.
 

nikolz

Well-known member
сейчас попробовал Ваш рапид загрузчик.
ESP просыпается и засыпает но WI-FI перестал работать.
 

nikolz

Well-known member
Что еще заметил, что от момента начала работы программы до момента посылки пакета проходит 150 ms.
 

pvvx

Активный участник сообщества
сейчас попробовал Ваш рапид загрузчик.
ESP просыпается и засыпает но WI-FI перестал работать.
А он его отключает на время загрузки для уменьшения потребления. Нет никакого смысла его держать включенным, т.к. частоты в PLL при перезагрузке через RESET не те :). Ваш вариант программы не включает WiFi - по этому он и отключен.
Что еще заметил, что от момента начала работы программы до момента посылки пакета проходит 150 ms.
И на что это время уходит? И сколько времени стартует кварц при тестируемой температуре до срабатывания счетчика в чипе, что кварц стабилен и можно стартовать?
Время настройки PLL, т.е. выхода на стабильность после смены у ESP8266 достаточно долгая... а оно переключается несколько раз, т.к. в ROM-BIOS расчет идет на другую частоту кварца... Подстройка, расчет периода таков RTC генератора организованного на RC цепи в чипе, тоже требует времени - оно используется для задания времени нахождения в deep_slеep и сильно зависит от температуры и напряжения питания чипа... В ESP нет возможности сделать калибровку RTC вторым тредом, во время исполнения другой части ПО. Но, если сильно захотеть и иметь разобранную часть этого закрытого в SDK куска, то вроде прерывание от RTC работает, а счетчик тактов всегда есть.
 
Последнее редактирование:

nikolz

Well-known member
А он его отключает на время загрузки для уменьшения потребления. Ваш вариант программы не включает WiFi - по этому он и отключен.
Я использую 2 режим deep-sleep и
wifi_set_opmode(STATION_MODE).
а также проверку режима wi-fi и его включение если он ноль.
Надо eще какие-то специальные команды
 

pvvx

Активный участник сообщества
Я использую 2 режим deep-sleep и
wifi_set_opmode(STATION_MODE).
а также проверку режима wi-fi и его включение если он ноль.
Надо eще какие-то специальные команды
Надо выкинуть и переписать большую часть SDK - тогда и получите указанные мной ранее 50 ms в периоде с засыпанием и просыпанием по deep_sleep (т.е. через GPIO16 с проводком на RESET).
Т.ч. вам ещё долго - у вас пока за 350 ms :)
Придется учесть всё:
// ROM-BIOS запускает код с адреса 0x40100000
// при опциях перезагрузки 'Jump Boot', если:
// GPIO0 = "0", GPIO1 = "1", GPIO2 = "0" (boot mode:(2,x))
Т.е. после первой загрузки устанавливаете GPIO в соответствии и грузиться с flash он не будет, на чем сэкономите ещё...
esp8266web/app_main.c at master · pvvx/esp8266web · GitHub

А в итоге, вы просто повторите режим sleep: LIGHT для WiFi (а он есть во всех SDK на все чипы). Там просыпание быстрее ещё быстрее (каждый beacon) и только настройка PLL, вроде 2 ms всего… По этой причине ваши ковыряния мне не поняты. Вы же не устанавливаете связь с новой AP и т.д. а поддерживаете ранее открытую сессию... Ну пинг устройства будет более 100 ms и всё.
 
Последнее редактирование:

nikolz

Well-known member
Надо выкинуть и переписать большую часть SDK - тогда и получите указанные мной ранее 50 ms в периоде с засыпанием и просыпанием по deep_sleep (т.е. через GPIO16 с проводком на RESET).
Т.ч. вам ещё долго - у вас пока за 350 ms :)
Придется учесть всё:
// ROM-BIOS запускает код с адреса 0x40100000
// при опциях перезагрузки 'Jump Boot', если:
// GPIO0 = "0", GPIO1 = "1", GPIO2 = "0" (boot mode:(2,x))
Т.е. после первой загрузки устанавливаете GPIO в соответствии и грузиться с flash он не будет, на чем сэкономите ещё...
esp8266web/app_main.c at master · pvvx/esp8266web · GitHub

А в итоге, вы просто повторите режим sleep: LIGHT для WiFi (а он есть во всех SDK на все чипы). Там просыпание быстрее ещё быстрее (каждый beacon) и только настройка PLL, вроде 2 ms всего… По этой причине ваши ковыряния мне не поняты. Вы же не устанавливаете связь с новой AP и т.д. а поддерживаете ранее открытую сессию...
я как-то даже и не удивился.
Но Вам надо выкинуть редми к Вашему загрузчику,
эту фразу
"Может использоваться для ускорения загрузки любого стандартного <br>
проекта на ESP8266, путем копирования в начало первого блока кода:<br>"
или написать, что это ложь.
--------------------------------------------
Ну что же, выкинем это в корзину. Очередной фитиш.
 

pvvx

Активный участник сообщества
я как-то даже и не удивился.
Но Вам надо выкинуть редми к Вашему загрузчику,
эту фразу
"Может использоваться для ускорения загрузки любого стандартного <br>
проекта на ESP8266, путем копирования в начало первого блока кода:<br>"
или написать, что это ложь.
Он работает с другими стандартными проектами. Мои проекты ускоряет и уменьшает потребление. Не работает с вашим Lua, т.к. Lua на ESP является нестандартным и до сих пор не отлаженным проектом. :( Из местных никто не виновен, что Lua настолько кривая и требует включенного WiFi на нестандартной частоте перед пуском. Видимо там стоит очень старый SDK с кучей ошибок... Тем более все исходники лоадера даны и можно добавить включение WiFi части на кривой частоте и для увеличения потребления по окончанию загрузки. :)
И в моей Lua он прекрасно работает, после правки той старой SDK. EspLua/Makefile at master · pvvx/EspLua · GitHub . А сам проект ESPLua заброшен, т.к. исправлять такое кол-во ошибок в исходном проекте надоело... Пиар Lua на ESP прошел и он, в такой реализации, оказался нужен только вам.
Ну что же, выкинем это в корзину. Очередной фитиш.
Выкидывайте что хотите, если не справились. :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
nikolz - вы уже разобрались, что вы постоянно сравниваете "два esp модуля общаются между собой без установки wifi соединения" и полную установку и завершение сессии WiFi соединения по стандарту?
Выкладываю результаты исследований китайских товарищей:
....
На картинках наглядно видно время работы передатчика при UDP и при ESP-now
В результате
средний ток потребления UDP -30ма
средний ток потребления ESP-now - 6.8 ma
В режиме экономии энергии в RTL00 средний ток при соединении по полному стандарту с внешней AP колеблется от 7 mA, в зависимости от кол-ва передаваемых данных и активности сети. У ESP8266 показатели в режиме sleep: LIGHT практически схожие.
Тут и не понятно "исследований китайских товарищей" - почему у них простое использование RF части для передачи одного пакета "раз в сутки" дает одинаковые показания с режимом работы модуля с полной поддержкой протокола WiFi и передачей данных хоть через HTTPS?
 
Последнее редактирование:

nikolz

Well-known member
Приступил к разработке для умного дома самого маленького, самого экономичного и самого дешевого модуля в мире .
В его основе два чипа SE8R01 и AVR Tinny13.
Поначалу было сомнение в возможности запихнуть все в 1 Kбайт flash.
В результате запихнул в 600 байт.
 

pvvx

Активный участник сообщества
Приступил к разработке для умного дома самого маленького, самого экономичного и самого дешевого модуля в мире .
В его основе два чипа SE8R01 и AVR Tinny13.
Тема то про WiFi :)
Вот вам пример оформления замеров по питанию:
CC3200 Power Management Optimizations and Measurements - Texas Instruments Wiki
Со сравнением потребления при TCP-TLS/SSL и UDP.
Когда изучите, поймете в чем самые главные проблемы и с чем боролись TI.
Это я вам уже описывал - время старта модуля с инициализациями. Остальное зависит от внешних факторов (время пинга до сервера) и скорости обработки шифрования TLS/SSL TCP пакетов. В итоге TI получили примерно одинаковые с RTL871x времена.

Условия теста там:
  1. Работа со статическим IP (если это возможно), чтобы избежать DHCP.
  2. Настройте политику подключения для работы с Fast Connect, которая означает, что устройство попытается сначала подключиться к предыдущему соединению.
  3. Отключить сканирование, так как в этом случае мы, вероятно, останется в том же канале и сети (AP).
  4. Отключить MDNS.
Я проверял со всеми включенными опциями - поиск AP по имени на всех каналах, новое соединение с AP с полной шифрацией по последним стандартам, выдача IP через DHCP, прием-передача данных, отключение от AP (полное высвобождение её ресурсов путем подачи всех команд отключения), засыпание (deep_sleep), т.к. мне нужен такой вариант. Укоротить всегда можно.
 
Последнее редактирование:

nikolz

Well-known member
Тема то про WiFi :)
Вот вам пример оформления замеров по питанию:
CC3200 Power Management Optimizations and Measurements - Texas Instruments Wiki
Со сравнением потребления при TCP-TLS/SSL и UDP.
Когда изучите, поймете в чем самые главные проблемы и с чем боролись TI.
Это я вам уже описывал - время старта модуля с инициализациями. Остальное зависит от внешних факторов (время пинга до сервера) и скорости обработки шифрования TLS/SSL TCP пакетов. В итоге TI получили примерно одинаковые с RTL871x времена.

Условия теста там:
  1. Работа со статическим IP (если это возможно), чтобы избежать DHCP.
  2. Настройте политику подключения для работы с Fast Connect, которая означает, что устройство попытается сначала подключиться к предыдущему соединению.
  3. Отключить сканирование, так как в этом случае мы, вероятно, останется в том же канале и сети (AP).
  4. Отключить MDNS.
Я проверял со всеми включенными опциями - поиск AP по имени на всех каналах, новое соединение с AP с полной шифрацией по последним стандартам, выдача IP через DHCP, прием-передача данных, отключение от AP (полное высвобождение её ресурсов путем подачи всех команд отключения), засыпание (deep_sleep), т.к. мне нужен такой вариант. Укоротить всегда можно.
То, что Вы написали, я по-возможности делаю. Конечно в рамках SDK.
У меня другой подход нежели у Вас.
Моя концепция такая:
сеть для умных домов и производств трех уровней.
Первый уровень - это сеть типа BLE , NRF (что почти одно и то же)
Второй и третий уровень - это WIFI.
Второй - это UDP, и только третий - это глобальная сеть - это TCP.
--------------------
Судя по Вашим постам, Вы занимаетесь (в терминах моей концепции ) третьим уровнем.
А меня этот уровень в настоящее время не волнует.
 

vad7

Active member
В его основе два чипа SE8R01 и AVR Tinny13.
Поначалу было сомнение в возможности запихнуть все в 1 Kбайт flash.
В результате запихнул в 600 байт.
Так там кроме общение с nrf еще логика прикладного уровня должна быть, датчики всякие и т.д..
 

nikolz

Well-known member
Так памяти маловато, почему бы tiny85 не использовать?
на tiny85 любой сможет.
В том то и прелесть, чтобы сделать на 13.
Пока получается и памяти еще 40% свободной.
Как минимум можно реализовать розетку или выключатель а также датчик температуры на терморезисторе.
В результате получается умный модуль по цене в 1 доллар и с питанием от батарейки на год.
 

pvvx

Активный участник сообщества
Второй - это UDP, и только третий - это глобальная сеть - это TCP.
Судя по предыдущим вашим сообщениям 2-ой уровень - это глушилки WiFi, которые никогда не соединяются и не отсоединяются по протоколу с AP и лезут в эфир когда им непопадя для создания коллизий другим?
 
Сверху Снизу