Esp 01 глубокий сон

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Как сделать так, чтобы ESP8266 работал годы на одной батарейке с помощью режима глубокого сна

ESP8266, безусловно, является универсальным устройством, способным выступать в роли WiFi модуля и микроконтроллера с довольно богатой периферией. Однако использование этих возможностей увеличивает энергопотребление, особенно при обмене данными в сетях WiFi. Но в большинстве проектов желательно, чтобы модуль ESP8266 был автономным устройством, то есть питался от батарейки или аккумулятора и потреблял как можно меньше энергии.

Чтобы сэкономить драгоценную энергию батарейки и существенно продлить срок эксплуатации, не нужно держать устройство в рабочем режиме постоянно, вместо этого следует переводить его в режим сна, когда операции не выполняются. Например, при постоянной работе модуля литий-полимерного аккумулятора емкостью 2500 мАч хватит всего лишь на 30 часов. Поэтому в данном материале будет показано, как с помощью режима глубокого сна эффективно снизить энергопотребление ESP8266.

В данном примере будет использоваться модуль SparkFun ESP8266 Thing. Также потребуется адаптер USB-TTL типа FTDI, плата для прототипирования, соединительные провода, источник питания с креплением на плату, мультиметр и аккумулятор. Также для программирования ESP8266 потребуется последняя версия Arduino IDE.

Итак, чтобы иметь возможность эффективно задействовать режим сна, нужно для начала соединить выводы DTR и XPD друг с другом, что будет свидетельствовать о том, что ESP8266 сможет выйти из режима глубокого сна. Поскольку мы будем измерять энергопотребление, то к линиям питания и земли следует подключить мультиметр. Вот так это выглядит:

Чтобы производить измерения, нужно заставить работать ESP8266. Для этого загрузите приведенный ниже скетч в ESP8266. Этот код будет отправлять простое сообщение на сайт dweet.io, который представляет собой облачный сервис для устройств Интернета вещей с целью логирования различных данных. Отправка сообщения выполняется раз в 10 минут, остальное время модуль находится в режиме глубокого сна. Не забудьте изменить логин и пароль сети WiFi на свои значения. При программировании ESP8266 выводы DTR и XPD не должны быть соединены между собой.

Итак, как мы видим, организация режима глубокого сна осуществляется довольно просто. По сути, для этого была задействована только одна функция ESP.deepSleep, в аргументе которой задается время пребывания ESP8266 в неактивном режиме. Если ваш мультиметр уже подключен, то сразу после старта программы он может показать такую картину:

Это потребление тока в момент, когда ESP8266 работает, то есть отсылает сообщение на сайт. Это довольно таки не мало, поскольку при таком энергопотреблении заряда аккумулятора на долго не хватит. Но через пару секунд значение тока существенно уменьшается (практически в 10 раз), что свидетельствует о том, что модуль перешел в режим глубокого сна.

Это, конечно, существенная экономия, но все равно при этом модуль ESP8266 будет работать не более полмесяца на одном заряде. Чтобы еще больше сократить энергопотребление, нужно избавиться от одного лишнего потребителя – светодиода. Поскольку теперь он берет на себя львиную долю энергии. После его демонтажа получаем на экране мультиметра значение тока 77 мкА или 0.077 мА. Вот теперь ESP8266 может прослужить автономно более трех лет!

Источник

Как использовать Deep Sleep на ESP8266 (NodeMCU)?

• 17-11-2018 •
Быстрые ссылки на Aliexpress

Предположим мы хотим ввести график температуры вашей комнаты, при этом не использовать никаких проводов, а только wi-fi. Если использовать батарейку по схеме предыдущей статьи, то батарейки хватит не больше чем пару недель, что не очень то и приятно.

К счастью, у esp8266 есть возможность сна.

Типы снов

Существует четыре типа режимов сна для ESP8266: No-sleep, Modem-sleep, Light-sleep и Deep-sleep.

Все они имеют разные функции.

Без сна

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

Modem-sleep

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

Light-sleep

Выполняет ту же функцию, что и «Modem-sleep», но также отключает системные часы и приостанавливает работу CPU.

Deep-sleep

Все выключено, но часы реального времени (RTC), будут работать. Это то-же самое, как и компьютер сохраняет время, когда он выключен. Поскольку все выключено, то это самый эффективный энергосберегающий вариант.

Глубокий сон, это то что нам надо, для того чтобы отправлять данные температуры по wi-fi.

И работать это будет следующим образом:

Пример использования Deep sleep

Давайте рассмотрим простой пример:

Для начало нам нужно на самом контроллере соединить 2 контакта

Это обязательная процедура, чтобы заработал deep-sleep

С данным кодом, ответ на majordomo мы видим следующим образом:

А на этом все, надеюсь статья вам была полезна! В следующих записях мы разберем как запускать MQTT и перехватывать сообщения в Majordomo!

3 thoughts on “ Как использовать Deep Sleep на ESP8266 (NodeMCU)? ”

Users/alex/Documents/Arduino/deep_sleep_DHT11/deep_sleep_DHT11.ino: In function ‘void connect()’:
deep_sleep_DHT11:67:14: error: a function-definition is not allowed here before ‘ void setup() ^
deep_sleep_DHT11:125:1: error: expected ‘>’ at end of input
>
^
exit status 1
a function-definition is not allowed here before ‘

Спасибо, исправил, проверил, сейчас код рабочий (Видимо случайно удалил фигурную скобку)

В открытой печати надо бы было написать по русски — «….запускаем снова». Жаль, что коверкаете язык.

Источник

Esp 01 глубокий сон

Режим экономии энергии ESP8266 (DEEP SLEEP)


Итак, вы создали потрясающий проект, используя аппаратное обеспечение ESP8266, в котором есть LiPo аккумулятор, или вы просто подключили свой NodeMCU к USB-аккумулятору. Но после запуска вы понимаете, что питание от аккумулятора длится недолго.

Поскольку мы много времени не контролируем аппаратное обеспечение / компоненты в микроконтроллере, мы не можем оптимизировать оборудование. Но мы можем написать прошивку, которая будет отключать оборудование, чтобы сэкономить электроэнергию. Во время сна устройство потребляет гораздо меньше энергии, чем при пробуждении.

В этой статье мы сосредоточимся на режиме DEEP SLEEP (режим экономии электроенергии) с ESP8266.

ТИПЫ СНА
Существует четыре режима сна для ESP8266: No-sleep, Modem-sleep, Light-sleep и Deep-sleep.

Все они имеют разные функции.

NO-SLEEP

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

MODEM-SLEEP

В режиме «MODEM-SLEEP» ESP8266 отключает модем (WiFi) на как возможно дольше. Он отключает модем между интервалами DTIM Beacon. Этот интервал устанавливается вашим маршрутизатором.

LIGHT-SLEEP

Light-sleep выполняет ту же функцию, что и «MODEM-SLEEP», но также отключает системные часы и приостанавливает работу CPU. CPU не выключен. Это просто холостой ход.

DEEP-SLEEP

Все выключено, но часы реального времени (RTC) включены потому что нужно контролировать время. Поскольку все выключено, это наиболее энергоэффективный вариант.

Если вам нужна дополнительная информация, обязательно ознакомьтесь с документацией.


С Deep-sleep структура наших приложений будет выполнять следующие шаги:

Выполните некоторые действия (считывание информации с датчика)
Сон на n микросекунд
Повторение

Важно отметить, что время сна указано в микросекундах (мкс).

Забавный факт, вы не можете отключить ESP8266 на вечно. Согласно SDK ESP8266, вы можете отключить его только на 4 294 967 295 мкс, что составляет около

Теперь давайте посмотрим код. В этих примерах я собираюсь использовать IDE Arduino.

Давайте рассмотрим простой пример:

Несмотря на то, что мы ничего не подключаем, чтобы включить Deep-sleep, нам нужно связать контакт RST с GPIO 16 на ESP8266. На NodeMCU GPIO 16 представлен как D0.

Если мы посмотрим на распиновку для NodeMCU, мы увидим, что GPIO 16 является специальным выводом:

Вывод RST поддерживается сигналом HIGH при запуске ESP8266. Однако, когда контакт RST получает сигнал LOW, он перезапускает микроконтроллер. Когда ваше устройство находится в режиме глубокого сна, он отправит сигнал LOW на GPIO 16, когда таймер сна будет включен. Вам необходимо подключить GPIO 16 к RST для пробуждения (или сброса) устройства, когда Deep-sleep закончился.

Вот пример кода:

В этом примере мы заходим в Serial, спим в течение 20 секунд и повторяем. Вы можете использовать этот пример в качестве шаблона для других программ.

DEEP-SLEEP W/ ПОДКЛЮЧЕНИЕ

В реальном мире мы хотим выполнить действие, например, сделать сетевой запрос, в то время как устройство отключено. Давайте рассмотрим пример отправки показаний датчика температуры в Losant каждые 20 секунд и сон между ними.

Вот код:
В этом примере мы выполняем следующие шаги:

Вывод
Теперь, когда вы знаете, как использовать режим экономии энергии (DEEP-SLEEP), вы можете сделать свое оборудование более энергоэффективным.

Источник

Русские Блоги

Спящий режим модуля ESP8266

Тип спящего режима

Существует три различных режима сна: режим сна модема, легкий сон и глубокий сон. В следующей таблице показаны различия между каждым режимом (информация в листе данных ESP8266).

Решение для разряда батареи espОфициальный документ

Режим сна

WiFi.forceSleepBegin(); // Wifi off
delay();
WiFi.forceSleepWake(); // Wifi on

Когда вам нужно перейти в спящий режим, используйте первую инструкцию
Когда вам нужно проснуться, используйте вторую инструкцию.
можно использовать в цикле.
пример

void loop() data();
delay(200);
Serial.println(“Going to sleep now”);
WiFi.forceSleepBegin(); // Wifi Off
delay(1000*10); // sleep for 10 seconds
WiFi.forceSleepWake(); // Wifi On
Serial.println(“Wake up”);
>

Функция data () предназначена для получения значения датчика и отправки его с помощью mqtt.
Вы можете видеть, что после получения значения позвольте модулю esp войти в спящий режим и проснуться после 10 секунд сна. Повторите операцию еще раз.
Ссылка на ссылку

Легкий сон

Light sleep。
все еще может спать в цикле.
вызов может использовать light_sleep ()

void light_sleep() wifi_station_disconnect();
wifi_set_opmode_current(NULL_MODE);
wifi_fpm_set_sleep_type(LIGHT_SLEEP_T);
wifi_fpm_open(); // Enables force sleep
gpio_pin_wakeup_enable(GPIO_ID_PIN(2), GPIO_PIN_INTR_LOLEVEL);
wifi_fpm_do_sleep(0xFFFFFFF); // Sleep for longest possible time
>

Установленное здесь время сна является самым длинным, а GPIO2 заземляется с помощью кнопки для пробуждения.
Вы можете регулярно отправлять данные, регулируя время сна.
После пробуждения подключитесь к Wi-Fi. Следовательно, вам нужно подключиться к Wi-Fi в первом предложении цикла

глубокий сон

esp01 использует время для перехода в спящий режим, что не так просто, вам нужно подключить очень маленький контакт

дополнение

Получите значение температуры dht11 для теста режима легкого сна
может быть из-за модуля. Полученное значение неточно, потому что исходное значение, получаемое каждый раз, может быть проблематичным. (Пока не ясно, связано ли это с легким сном)

Дополнительные учебные пособия

Основы развития и обучения ESP

Базовые знания включают понимание модуля esp и понимание протокола mqtt, Arduino IDE с использованием написания кода и так далее.

esp разрабатывает приложение для Интернета вещей

Приложения IoT на основе модулей esp8266 и других модулей на основе реальных сценариев и требований приложений

Источник

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

Все мы знаем то, что потребление у ESP8266 в режиме бодрствования довольно больше

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

Режимы сна ESP8266

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

Без сна

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

Modem-sleep

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

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

Источник