Большинство устройств на ESP используют режим deep-sleep для экономии питания.
При этом работа устройства как правило состоит из трех этапов.
На первом этапе ESP просыпается опрашивает датчики, выполняет вычисления.
На втором этапе ESP передает данные по WiFi,либо решает, что передача откладывается.
На третьем этапе переходит в режим глубокого сна.
-----------------
При этом, WiFi приемник включается в начале первого этапа и выключается лишь в конце третьего.
При этом ток потребления ESP8266 составляет 70 ма.
------------------
Если включить WiFi лишь в случае надобности передачи, то ток потребления без WiFi составит 11-15 ма
при активном процессоре и 2-3 ма , при реализации ожидания прерывания от GPIO или RTC.
Но к сожалению это не реализовано в SDK, поэтому ESP8266 всегда кушает в активном режиме 70 ма вместо 10 т е затраты энергии в 6 раз больше необходимого.
-----------------------
Решить задачу избирательного включения WiFi при необходимости можно простым костылем.
Для этого надо изменить имя функции call_user_start в библиотеке libmain.a на другое
например такое call2user_start и добавить в скетч такую функцию
void call_user_start()
{
// здесь работаем с датчиками и делаем вычисления
call2user_start(); //переходим в обычный режим с включением WIFI
}
При этом работа устройства как правило состоит из трех этапов.
На первом этапе ESP просыпается опрашивает датчики, выполняет вычисления.
На втором этапе ESP передает данные по WiFi,либо решает, что передача откладывается.
На третьем этапе переходит в режим глубокого сна.
-----------------
При этом, WiFi приемник включается в начале первого этапа и выключается лишь в конце третьего.
При этом ток потребления ESP8266 составляет 70 ма.
------------------
Если включить WiFi лишь в случае надобности передачи, то ток потребления без WiFi составит 11-15 ма
при активном процессоре и 2-3 ма , при реализации ожидания прерывания от GPIO или RTC.
Но к сожалению это не реализовано в SDK, поэтому ESP8266 всегда кушает в активном режиме 70 ма вместо 10 т е затраты энергии в 6 раз больше необходимого.
-----------------------
Решить задачу избирательного включения WiFi при необходимости можно простым костылем.
Для этого надо изменить имя функции call_user_start в библиотеке libmain.a на другое
например такое call2user_start и добавить в скетч такую функцию
void call_user_start()
{
// здесь работаем с датчиками и делаем вычисления
call2user_start(); //переходим в обычный режим с включением WIFI
}