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 вы можете довольно сильно экономить емкость источника питания.