ESP8266. Режимы сна или как экономить заряд батарейки

ESP8266 - это модуль от компании Espressif Systems и он был разработан специально для мобильных устройств, носимой электроники и IoT-приложений.  Модуль обладает Wi-Fi - приемопередатчиком с встроенной поддержкой стека TCP/ IP и является универсальным устройством, способным выступать в роли WiFi модуля и микроконтроллера с довольно богатой периферией. Однако использование этих возможностей увеличивает энергопотребление, особенно при обмене данными в сетях WiFi. 

Модуль esp8266

Все мы знаем то, что потребление у ESP8266 в режиме бодрствования довольно больше ~80мА, а в пике может достигать и все 250мА! А при автономном питании ESP8266 для нас очень важно будет экономия энергии аккумулятора или батарейки от которой питается наш микроконтроллер, при таком большом потреблении (80 - 250мА) наш источник не проработает очень долго и его заряд быстро закончиться и наше устройство не сможет нормально выполнять свои функции. Например, при постоянной работе литий-полимерного аккумулятора емкостью 2500 мАч хватит всего лишь на 30 часов. Так какой же есть способ экономить энергию источника питания?

Способ для экономии используют довольно простой и он заключается в том, что мы периодически уходим в режим сна и потом просыпаемся и так по кругу, снова и снова. Режим сна это режим при котором потребление микроконтроллера резко снижается и составляет порядка нескольких десятков микроампер. В этом режиме основная часть программы останавливает свою работу и потом через заданное время происходит "пробуждение" микроконтроллера и выполнение программы продолжается. 

За счет чего же достигается такое низкое потребление энергии? Все просто, за счет отключения не нужных "блоков" (блок - это часть в микропроцессоре которая отвечает за определенную деятельность, допустим АЦП или математический блок) в микропроцессоре, которые потребляют очень много, а оставляют только те блоки которые нужно что бы обратно вернуться в рабочий режим. Обычно это блоки с таймером, при срабатывании которого просыпается наш микропроцессор.

Режимы сна ESP8266

Существует несколько режимов сна для ESP8266: No-sleep, Modem-sleep, Light-sleep, Deep-sleep и Power-down. Режимы задаются через управляющие команды ESP8266, допустим в Arduino есть команда ESP.deepSleep() которая отвечает за переход в режим Deep-sleep. Ниже перечислены все режимы и их характеристики:

Без сна

В режиме No-Sleep, будет работать все по максимуму. Очевидно, что это наиболее неэффективно.

Modem-sleep

Это режим по умолчанию для ESP8266. Тем не менее, он используется только когда вы подключены к точке доступа. Потребление при этом порядка 15мА.

В режиме «Modem-sleep» контроллер отключает wi-fi между интервалами маяка DTIM . Этот интервал устанавливается вашим маршрутизатором.

Light-sleep

Выполняет ту же функцию, что и «Modem-sleep», но также отключает системные часы и приостанавливает работу CPU. Потребление при этом режиме еще меньше и составляет порядка 1мА.

Deep-sleep

В режиме глубокого сна Deep Sleep модуль ESP8266 отключает Wi-Fi и проводной интерфейс и оставляет в активном состоянии только часы реального времени RTC для периодических пробуждений. В этом случае потребление снижается до 20-80 мкА, в зависимости от параметров конфигурации.

Power-down

В режиме ожидания Power-Down выключается даже модуль RTC. Это означает, что сигнал пробуждения должен быть внешним, при этом потребление тока уменьшается до 1 мкА. Использование режима ожидания Power Down с выключенным RTC совместно с внешней микропотребляющей схемой пробуждения помогает значительно снизить потребление системы в спящем состоянии. Таким образом, общий ток в состоянии сна оказывается примерно в 10 раз меньше, чем при использовании режима глубокого сна Deep Sleep с включенным RTC.

Характеристики режимов

Вывод

Как мы увидели микроконтроллер обладает довольно большими возможностями для того что бы успешно и довольно долго работать автономно. Используя различные режимы ESP8266 вы можете довольно сильно экономить емкость источника питания.