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

admin

Share
Published by
admin

Recent Posts

Настройка Mercurial по HTTPS

Иногда mercurial, при скачивании и комитах ругается на https. Особенно на самоподписанные сертификаты. Чтобы заработал…

4 недели ago

Компиляция libvirt в Ubuntu

Компиляция libvirt Подробнее

4 недели ago

Ошибка libvirt permission denied: решение

Если возникает ошибка libvirt destroy lxc permission denied , при попытке остановить контейнер: _x000D_# virsh…

4 недели ago

Настройка редиректа в NGINX

Файлы с примерами редиректа для nginx Подробнее

4 недели ago

Включение gzip в NGINX

Как включить gzip сжатие в Nginx ? Подробнее

4 недели ago

Удаление postinst-скрипта в Linux

Иногда возникает ситуация, когда криво настроенные пакеты не устанавливаются в системе. У меня это произошло…

4 недели ago