Проверка/Оформление/Редактирование: Мякишев Е.А.
|
|
|
Черновик
|
Использование ESP8266 в режиме глубокого сна при помощи IDE Arduino
В этом руководстве мы разберемся, что такое режим глубокого сна, и как переключить в этот режим ESP8266 при помощи IDE Arduino.
Допустим, вы сделали проект на базе ESP8266, питаемый от батареи или подключили ESP NodeMCU к пауэрбанку.
Но спустя какое-то время вы понимаете, что заряд батареи/пауэрбанка расходуется очень быстро.
И как же в таком случае сэкономить электроэнергию? С помощью кода! Если использовать в скетче ESP8266-проекта функции режима сна, этот проект будет тянуть меньше электроэнергии, благодаря чему ваши батареи будут работать дольше. В этом руководстве мы как раз разберемся, как использовать режим сна ESP8266.
Необходимое оборудование
- Плата ESP8266 - 1шт.;
- Провод перемычка;
Справочная информация
Типы режима сна
Есть три типа режима сна: модемный, легкий и глубокий.
Все они используются для разных целей и потому предназначены для разных типов проектов.
Режим глубокого сна
Для нашего проекта нужно, чтобы все компоненты ESP8266 были выключены, за исключением часов реального времени (RTC), благодаря которым ESP8266 следит за временем.
В нашем проекте мы будем использовать режим глубокого сна – это самый энергоэффективный режим сна, в котором ESP8266 тянет лишь 20 мкА (но если к ESP8266 будут подключены другие устройства, то эта цифра будет выше).
Другие режимы сна
Другие режимы сна – вроде легкого и модемного – полезны, когда вам нужно сберечь заряд источника питания, но при этом сохранить некоторый функционал ESP8266 в рабочем состоянии, или когда вам просто нужны какие-то альтернативные режимы питания. Но если вам нужно, чтобы заряд батареи/пауэрбанка действительно держался долго, то режим глубокого сна – это вариант номер один.
При использовании режима глубокого сна работа проекта выглядит следующим образом:
- ESP8266 подключается к WiFi;
- ESP8266 выполняет действие (считывает данные от датчика, публикует MQTT-сообщение и т.д.);
- Переходит в режим сна и спит заданное количество микросекунд;
- Три стадии выше повторяются снова и снова;
Простой проект-пример с использованием режима глубокого сна
Давайте начнем с простого. Подключите друг к другу при помощи провода-перемычки контакты RST и GPIO16 (на плате он обозначен как D0) модуля NodeMCU. Это делается очень просто:
Если взглянуть на распиновку NodeMCU, то можно увидеть, что GPIO16 – это специальный контакт, оснащенный функцией WAKE (т.е. «пробуждение»).
Контакт RST модуля ESP8266 всегда находится в состоянии «HIGH» во время работы ESP8266. Однако если этот контакт получит сигнал «LOW», это выполняет сброс микроконтроллера.
Суть этого проекта-примера в том, что мы задаем таймер для ESP8266, а когда это время заканчивается, контакт GPIO16 отправляет контакту RST сигнал «LOW». Это значит, что контакт GPIO16, будучи подключенным к RST, будет пробуждать ESP8266 каждый раз, когда отсчет таймера будет подходить к концу.
Пишем скетч для ESP-12E
Ниже – код, который нужно будет загрузить на ESP8266:
/*
* Скетч-пример, демонстрирующий,
* как перевести ESP8266 в режим глубокого сна
* Автор – Руи Сантос
* Более подробно о проекте на: http://randomnerdtutorials.com
*/
void setup() {
Serial.begin(115200);
Serial.setTimeout(2000);
// Ждем инициализации последовательной коммуникации:
while(!Serial) { }
// Переводим ESP8266 в режим глубокого сна на 30 секунд;
// ESP8266 будет пробуждать себя сама,
// пока контакт GPIO16 (D0 на плате NodeMCU)
// будет подключен к контакту RST:
Serial.println("I'm awake, but I'm going into deep sleep mode for 30 seconds");
// "Я проснулся, но перехожу
// в режим глубокого сна на 30 секунд"
ESP.deepSleep(30e6);
// Режим глубокого сна будет длиться,
// пока на контакт RST не будет подан сигнал «LOW»
// (например, с помощью кнопки или геркона):
//Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal");
// "Я проснулся, но перейду в режим глубокого сна,
// и буду там находиться,
// пока на контакт RST не будет подан сигнал «LOW»"
//ESP.deepSleep(0);
}
void loop() {
}
В этом коде мы печатаем сообщение в монитор порта, затем ESP8266 переходит в режим сна на 30 секунд, и так повторяется снова и снова. Но с помощью режима глубокого сна можно, разумеется, сделать и что-то полезное – например, когда ESP8266 проснется, сделать какой-нибудь запрос.
Обратите внимание, что время сна в методе deepSleep() указывается в микросекундах (мкс).
О модуле ESP-01
Если вы хотите собрать аналогичную цепь при помощи ESP-01, то вам нужно будет припаять провод как показано на схеме ниже, т.к. этот маленький контакт на чипе – это и есть GPIO16, и его нужно подключить к контакту RST.
Но эти контакты очень маленькие, и выполнить такую спайку будет довольно сложно...
Еще скетч
Вы также можете запрограммировать ESP8266 таким образом, чтобы он постоянно был в режиме глубокого сна, пока не будет разбужен каким-либо действием.
/*
* Скетч-пример, демонстрирующий,
* как перевести ESP8266 в режим глубокого сна.
* Автор – Руи Сантос
* Более подробно о проекте на: http://randomnerdtutorials.com
*/
void setup() {
Serial.begin(115200);
Serial.setTimeout(2000);
// Ждем инициализации последовательной коммуникации:
while(!Serial) { }
// Переводим ESP8266 в режим глубокого сна на 30 секунд;
// ESP8266 будет пробуждать сама себя,
// пока контакт GPIO16 (D0 на плате NodeMCU)
// будет подключен к контакту RST:
//Serial.println("I'm awake, but I'm going into deep sleep mode for 30 seconds");
// "Я проснулся, но перехожу
// в режим глубокого сна на 30 секунд"
//ESP.deepSleep(30e6);
// Режим глубокого сна будет длиться,
// пока на контакт RST будет подаваться сигнал «LOW»
// (например, с помощью кнопки или геркона):
Serial.println("I'm awake, but I'm going into deep sleep mode until RESET pin is connected to a LOW signal");
// "Я проснулся, но перейду в режим глубокого сна,
// и буду там находиться,
// пока на контакт RST не будет подан сигнал «LOW»"
ESP.deepSleep(0);
}
void loop() {
}
Как видите, параметром в методе deepSleep() в этот раз служит значение «0». Следовательно, ESP8266 будет пробуждаться только если что-то сбросит плату – это может быть, например, нажатие на кнопку, срабатывание геркона или что-то другое.
Вот так будет выглядеть вариант с кнопкой:
В этом случае, если нажать на кнопку, это разбудит ESP8266, он выполнит запрограммированное действие, а затем снова перейдет в режим сна, пока кто-то снова не нажмет на кнопку не разбудит его.
Измерение силы тока
Теперь давайте при помощи мультиметра измерим силу тока ESP8266 в режиме глубокого сна. На схеме ниже показано, в каких местах нужно разместить щупы мультиметра.
В режиме глубокого сна ESP-01 потребляет лишь 0.3 мА (300 мкА).
Теперь, когда я нажму на кнопку, ESP8266 выполнит запрограммированное действие – напечатает сообщение в монитор порта IDE Arduino – и через несколько миллисекунд перейдет в режим глубокого сна.
При обычной эксплуатации с использованием WiFi модуль ESP8266 потребляет в диапазоне между 50 и 170 мА.
Итого
Итак, теперь вы знаете, как использовать режим глубокого сна, а следовательно – как сделать так, чтобы ваши батарейные ESP8266-проекты работали максимально долго.
См.также
Партнерские ресурсы |
---|
Криптовалюты |
|
---|
Магазины |
|
---|
Хостинг |
|
---|
Разное |
- Викиум - Онлайн-тренажер для мозга
- Like Центр - Центр поддержки и развития предпринимательства.
- Gamersbay - лучший магазин по бустингу для World of Warcraft.
- Ноотропы OmniMind N°1 - Усиливает мозговую активность. Повышает мотивацию. Улучшает память.
- Санкт-Петербургская школа телевидения - это федеральная сеть образовательных центров, которая имеет филиалы в 37 городах России.
- Lingualeo.com — интерактивный онлайн-сервис для изучения и практики английского языка в увлекательной игровой форме.
- Junyschool (Джунискул) – международная школа программирования и дизайна для детей и подростков от 5 до 17 лет, где ученики осваивают компьютерную грамотность, развивают алгоритмическое и креативное мышление, изучают основы программирования и компьютерной графики, создают собственные проекты: игры, сайты, программы, приложения, анимации, 3D-модели, монтируют видео.
- Умназия - Интерактивные онлайн-курсы и тренажеры для развития мышления детей 6-13 лет
- SkillBox - это один из лидеров российского рынка онлайн-образования. Среди партнеров Skillbox ведущий разработчик сервисного дизайна AIC, медиа-компания Yoola, первое и самое крупное русскоязычное аналитическое агентство Tagline, онлайн-школа дизайна и иллюстрации Bang! Bang! Education, оператор PR-рынка PACO, студия рисования Draw&Go, агентство performance-маркетинга Ingate, scrum-студия Sibirix, имидж-лаборатория Персона.
- «Нетология» — это университет по подготовке и дополнительному обучению специалистов в области интернет-маркетинга, управления проектами и продуктами, дизайна, Data Science и разработки. В рамках Нетологии студенты получают ценные теоретические знания от лучших экспертов Рунета, выполняют практические задания на отработку полученных навыков, общаются с экспертами и единомышленниками. Познакомиться со всеми продуктами подробнее можно на сайте https://netology.ru, линейка курсов и профессий постоянно обновляется.
- StudyBay Brazil – это онлайн биржа для португалоговорящих студентов и авторов! Студент получает уникальную работу любого уровня сложности и больше свободного времени, в то время как у автора появляется дополнительный заработок и бесценный опыт.
- Автор24 — самая большая в России площадка по написанию учебных работ: контрольные и курсовые работы, дипломы, рефераты, решение задач, отчеты по практике, а так же любой другой вид работы. Сервис сотрудничает с более 70 000 авторов. Более 1 000 000 работ уже выполнено.
- StudyBay – это онлайн биржа для англоязычных студентов и авторов! Студент получает уникальную работу любого уровня сложности и больше свободного времени, в то время как у автора появляется дополнительный заработок и бесценный опыт.
|
---|
Внешние ссылки
ESP8266 AT-команды |
---|
Список AT-команд |
---|
Базовые команды |
- AT - Проверка запуска
- AT+RST - Рестарт
- AT+GMR - Просмотр информации о версиях
- AT+GSLP - Активация режима глубокого сна
- ATE - Активация/деактивация эха
- AT+RESTORE - Сброс к заводским настройкам
- AT+UART Настройка UART [Устарела]
- AT+UART_CUR - Настройка UART в текущей сессии
- AT+UART_DEF - Дефолтная настройка UART (записывается на FLASH)
- AT+SLEEP - Режим сна
|
---|
Команды для WiFi |
- AT+CWMODE - WiFi-режим (клиент / точка доступа / клиент + точка доступа).
- AT+CWMODE_CUR - WiFi-режим (клиент / точка доступа / клиент + точка доступа). Запись на FLASH не идет.
- AT_CWMODE_DEF - WiFi-режим (клиент / точка доступа / клиент + точка доступа). Запись идет на FLASH.
- AT+CWJAP - Подключение к точке доступа.
- AT+CWJAP_CUR - Подключение к точке доступа. Запись на FLASH не идет.
- AT+CWJAP_DEF - Подключение к точке доступа. Запись идет на FLASH.
- AT+CWLAP - Вывод списка доступных точек доступа.
- AT+CWQAP - Отключение от точки доступа
- AT+CWSAP - Настройка параметров для режима точки доступа
- AT+CWSAP_CUR - Настройка параметров для режима точки доступа. На FLASH запись не идет.
- AT+CWSAP_DEF - Настройка параметров для режима точки доступа. Запись идет на FLASH.
- AT+CWLIF - Получение IP-адресов клиентов, подключенных к точке доступа ESP8266.
- AT+CWDHCP - Включение/выключение DHCP. [Эта команда устарела].
- AT+CWDHCP_CUR - Включение/выключение DHCP. На FLASH не записывается.
- AT+CWDHCP_DEF - Включение/выключение DHCP. Сохранение идет на FLASH.
- AT+CWAUTOCONN - Автоматическое подключение к точке доступа при включении ESP8266.
- AT+CIPSTAMAC - Задает MAC-адрес для клиента ESP8266
- AT+CIPSTAMAC_CUR - Задает MAC-адрес для клиента ESP8266. На FLASH запись не идет.
- AT+CIPSTAMAC_DEF - Задает MAC-адрес для клиента ESP8266. Запись идет на FLASH.
- AT+CIPAPMAC - Задает MAC-адрес для точки доступа ESP8266.
- AT+CIPAPMAC_CUR - Задает MAC-адрес для точки доступа ESP8266. Запись на FLASH не идет.
- AT+CIPAPMAC_DEF - Задает MAC-адрес для точки доступа ESP8266. Запись идет на FLASH.
- AT+CIPSTA - Задает IP-адрес клиента ESP8266.
- AT+CIPSTA_CUR - Задает IP-адрес клиента ESP8266. Запись на FLASH не идет.
- AT+CIPSTA_DEF - Задает IP-адрес клиента ESP8266. Запись идет на FLASH.
- AT+CIPAP - Задает IP-адрес точки доступа ESP8266
- AT+CIPAP_CUR - Задает IP-адрес точки доступа ESP8266. На FLASH запись не идет.
- AT+CIPAP_DEF - Задает IP-адрес точки доступа ESP8266. Запись идет на FLASH.
- AT+CWSTARTSMART - Запуск SmartConfig
- AT+CWSTOPSMART - Остановка SmartConfig
|
---|
Команды для TCP/IP |
|
---|
Телепорт |
---|
Arduino |
Примеры Arduino |
---|
Стандартные функции |
---|
Основы |
|
---|
Цифровой сигнал |
|
---|
Аналоговый сигнал |
|
---|
Связь |
- ReadASCIIString - Анализ строки, состоящей из разделенных запятыми int-значений, и их последующее использование для управления RGB-светодиодом.
- ASCII Table - Демонстрирует продвинутые способы вывода данных на Serial Monitor.
- Dimmer - Изменение яркости светодиода при помощи движения мышкой.
- Graph - Отправка данных на компьютер и их графическое отображение в скетче Processing.
- Physical Pixel - Включение/выключение светодиода путем отправки данных со скетча Processing (или Max/MSP) на Arduino.
- Virtual Color Mixer - Отправка с Arduino на компьютер сразу нескольких значений, а затем их считывание при помощи скетча для Processing или Max/MSP.
- Serial Call Response - Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»).
- Serial Call Response ASCII - Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»). До передачи данные зашифровываются в ASCII.
- SerialEvent - Демонстрирует использование SerialEvent().
- Serial input (Switch (case) Statement) - Как совершать различные действия, беря за основу символы, присланные через последовательный порт.
- MIDI - Передача через последовательный порт сообщений с MIDI-нотами.
- MultiSerialMega - Использование двух последовательных портов на Arduino Mega.
|
---|
Управляющие структуры |
- If Statement - Как использовать оператор «if» для создания условий, опирающихся на входные аналоговые данные, при которых светодиод будет либо включаться, либо оставаться выключенным.
- For Loop - Управление несколькими светодиодами, чтобы они мигали, как LED-полоска у автомобиля Китт из сериала «Рыцарь дорог».
- Array - Вариация примера «For Loop», но с использованием массива.
- While Loop - Использование цикла while() для калибровки датчика. Калибровка включается при нажатии на кнопку.
- Switch Case - Как совершать какие-либо действия в зависимости от значений, полученных от датчика. Эквивалент примера «If Statement», но если бы условий было не два, а четыре. Этот пример демонстрирует, как дробить диапазон данных от датчика на четыре «суб-диапазона», а затем в зависимости от полученных результатов совершать одно из четырех действий.
- Switch Case 2 - Второй пример, демонстрирующий использование оператора switch. Показывает, как совершать различные действия в зависимости от определенных символов, полученных через последовательный порт.
|
---|
Датчики |
- ADXL3xx - Считывание данных с акселерометра ADXL3xx.
- Knock - Определение стука при помощи пьезоэлемента.
- Memsic2125 - Считывание данных с 2-осевого акселерометра Memsic2125.
- Ping - Определение объектов при помощи ультразвукового дальномера.
|
---|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
---|
Строки |
|
---|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
---|
Клавиатура |
- KeyboardMessage - Отправка текстовой строки при нажатии на кнопку.
- KeyboardLogout - Выход из текущей пользовательской сессии при помощи клавиатурных комманд.
- KeyboardSerial - Считывает байт, присланный через последовательный порт, а в ответ отсылает другой байт.
- KeyboardReprogram - Открывает новое окно в среде разработки Arduino, а затем перешивает Leonardo скетчем «Моргание».
|
---|
Мышь |
|
---|
Разное |
---|
|
---|
Espruino |
|
---|
ESP8266 |
ESP8266 AT-команды |
---|
Список AT-команд |
---|
Базовые команды |
- AT - Проверка запуска
- AT+RST - Рестарт
- AT+GMR - Просмотр информации о версиях
- AT+GSLP - Активация режима глубокого сна
- ATE - Активация/деактивация эха
- AT+RESTORE - Сброс к заводским настройкам
- AT+UART Настройка UART [Устарела]
- AT+UART_CUR - Настройка UART в текущей сессии
- AT+UART_DEF - Дефолтная настройка UART (записывается на FLASH)
- AT+SLEEP - Режим сна
|
---|
Команды для WiFi |
- AT+CWMODE - WiFi-режим (клиент / точка доступа / клиент + точка доступа).
- AT+CWMODE_CUR - WiFi-режим (клиент / точка доступа / клиент + точка доступа). Запись на FLASH не идет.
- AT_CWMODE_DEF - WiFi-режим (клиент / точка доступа / клиент + точка доступа). Запись идет на FLASH.
- AT+CWJAP - Подключение к точке доступа.
- AT+CWJAP_CUR - Подключение к точке доступа. Запись на FLASH не идет.
- AT+CWJAP_DEF - Подключение к точке доступа. Запись идет на FLASH.
- AT+CWLAP - Вывод списка доступных точек доступа.
- AT+CWQAP - Отключение от точки доступа
- AT+CWSAP - Настройка параметров для режима точки доступа
- AT+CWSAP_CUR - Настройка параметров для режима точки доступа. На FLASH запись не идет.
- AT+CWSAP_DEF - Настройка параметров для режима точки доступа. Запись идет на FLASH.
- AT+CWLIF - Получение IP-адресов клиентов, подключенных к точке доступа ESP8266.
- AT+CWDHCP - Включение/выключение DHCP. [Эта команда устарела].
- AT+CWDHCP_CUR - Включение/выключение DHCP. На FLASH не записывается.
- AT+CWDHCP_DEF - Включение/выключение DHCP. Сохранение идет на FLASH.
- AT+CWAUTOCONN - Автоматическое подключение к точке доступа при включении ESP8266.
- AT+CIPSTAMAC - Задает MAC-адрес для клиента ESP8266
- AT+CIPSTAMAC_CUR - Задает MAC-адрес для клиента ESP8266. На FLASH запись не идет.
- AT+CIPSTAMAC_DEF - Задает MAC-адрес для клиента ESP8266. Запись идет на FLASH.
- AT+CIPAPMAC - Задает MAC-адрес для точки доступа ESP8266.
- AT+CIPAPMAC_CUR - Задает MAC-адрес для точки доступа ESP8266. Запись на FLASH не идет.
- AT+CIPAPMAC_DEF - Задает MAC-адрес для точки доступа ESP8266. Запись идет на FLASH.
- AT+CIPSTA - Задает IP-адрес клиента ESP8266.
- AT+CIPSTA_CUR - Задает IP-адрес клиента ESP8266. Запись на FLASH не идет.
- AT+CIPSTA_DEF - Задает IP-адрес клиента ESP8266. Запись идет на FLASH.
- AT+CIPAP - Задает IP-адрес точки доступа ESP8266
- AT+CIPAP_CUR - Задает IP-адрес точки доступа ESP8266. На FLASH запись не идет.
- AT+CIPAP_DEF - Задает IP-адрес точки доступа ESP8266. Запись идет на FLASH.
- AT+CWSTARTSMART - Запуск SmartConfig
- AT+CWSTOPSMART - Остановка SmartConfig
|
---|
Команды для TCP/IP |
|
---|
|
---|
Node-RED |
|
---|
Processing |
Справочник языка Processing |
---|
Конструкции языка |
|
---|
Окружение |
|
---|
Данные |
|
---|
Управление |
|
---|
Форма |
|
---|
Ввод |
|
---|
Вывод |
|
---|
Преобразование |
|
---|
Свет, камера |
|
---|
Цвет |
|
---|
Изображение |
|
---|
Рендер |
|
---|
Типография |
|
---|
Математика |
|
---|
Константы |
|
---|
Примеры на Processing |
---|
Основы |
- Структуры и конструкции:
- Фигуры:
- Данные:
- Массивы:
- Управляющие конструкции:
- Работа с изображением:
- Работа с цветом:
- Применение математических функций:
|
---|
Продвинутые графические эффекты |
- Рисование:
- Анимация:
- Графический интерфейс пользователя:
- Движение:
- Взаимодействие:
- Обработка изображения:
- Advanced Data:
- File IO:
- Simulate:
- Vectors:
- Fractals and L-Systems:
- Cellular Automata:
|
---|
Примеры из сторонних библиотек |
|
---|
|
---|
Электроника |
|
---|