- Различные методы минимизации энергопотребления
- Необходимые компоненты
- Типы спящих режимов в ESP8266
- ESP8266 Программирование режима глубокого сна
- Тестирование DeepSleep на ESP8266
Поскольку революция Интернета вещей стремительно растет с каждым днем, количество подключенных устройств очень быстро растет. В будущем большинство устройств будут связаны друг с другом и будут обмениваться данными в режиме реального времени. Одна из проблем, с которыми сталкиваются эти устройства, - это энергопотребление. Этот коэффициент энергопотребления является одним из критических и решающих факторов для любого устройства Интернета вещей и проектов Интернета вещей.
Поскольку мы знаем, что ESP8266 - один из самых популярных модулей для создания любого проекта IoT, поэтому в этой статье мы узнаем об экономии энергии при использовании ESP8266 в любом приложении IoT. Здесь мы загружаем данные датчика температуры LM35 в облако ThingSpeak с интервалом 15 секунд, и в течение этих 15 секунд ESP8266 остается в режиме DeepSleep для экономии энергии.
Различные методы минимизации энергопотребления
Есть несколько способов оптимизировать энергопотребление встроенных устройств и устройств Интернета вещей. Оптимизация может быть сделана на аппаратном и программном обеспечении. Иногда мы не можем оптимизировать аппаратные компоненты для снижения энергопотребления, но, безусловно, мы можем сделать это на программной стороне, изменив и оптимизируя инструкции и функции кода. Не только это, разработчики также могут изменять тактовую частоту, чтобы снизить энергопотребление микроконтроллера.Мы можем написать прошивку, которая переводит оборудование в спящий режим, когда нет обмена данными, и выполняет определенную задачу в определенном интервале. В спящем режиме подключенное оборудование потребляет очень мало энергии, и, следовательно, батарея может работать долго. Вы также можете прочитать «Минимизация энергопотребления в микроконтроллерах», если хотите узнать больше о методах энергопотребления.
Модули ESP8266 являются наиболее широко используемыми модулями Wi-Fi и имеют множество функций небольшого размера, имеющих разные режимы, включая спящий режим, и к этим режимам можно получить доступ с помощью некоторых модификаций аппаратного и программного обеспечения. Чтобы узнать больше о ESP8266, вы можете проверить наши проекты на основе Интернета вещей с использованием модуля Wi-Fi ESP826, некоторые из них перечислены ниже:
- Взаимодействие ESP8266 NodeMCU с микроконтроллером Atmega16 для отправки электронной почты
- Отправка данных датчика температуры и влажности в базу данных Firebase Real-Time с использованием NodeMCU ESP8266
- Светодиодный индикатор, управляемый IoT с использованием консоли Google Firebase и ESP8266 NodeMCU
Здесь мы объясним различные режимы сна, доступные в ESP8266, и продемонстрируем их, отправив данные о температуре на сервер Thingspeak через регулярные промежутки времени с использованием режима глубокого сна.
Необходимые компоненты
- Модуль Wi-Fi ESP8266
- Датчик температуры LM35
- Перемычки
Типы спящих режимов в ESP8266
Модуль Esp8266 работает в следующих режимах:
- Активный режим: в этом режиме весь чип включен, и чип может принимать и передавать данные. Очевидно, что это наиболее энергоемкий режим.
- Режим ожидания модема: в этом режиме ЦП работает, а радиомодули Wi-Fi отключены. Этот режим можно использовать в приложениях, требующих работы ЦП, например, в ШИМ. Это заставляет цепь модема Wi-Fi отключаться при подключении к точке доступа Wi-Fi без передачи данных для оптимизации энергопотребления.
- Режим легкого сна: в этом режиме ЦП и все периферийные устройства приостановлены. Любое пробуждение, такое как внешние прерывания, разбудит микросхему. Без передачи данных цепь модема Wi-Fi может быть отключена, а ЦП приостановлен для экономии энергии.
- Режим глубокого сна: в этом режиме работает только RTC, а все остальные компоненты чипа отключены. Этот режим полезен, когда данные передаются через длительные промежутки времени.
Подключите датчик температуры LM35 к контакту A0 NodeMCU.
Когда модуль ESP имеет высокий уровень на выводе RST, он находится в рабочем состоянии. Как только он получает сигнал LOW на выводе RST, ESP перезапускается.
Установите таймер с использованием режима глубокого сна, после того, как таймер закончится, вывод D0 отправит сигнал LOW на вывод RST, и модуль проснется, перезапустив его.
Теперь оборудование готово и хорошо настроено. Показания температуры будут отправлены на сервер Thingspeak. Для этого зарегистрируйтесь на сайте thingspeak.com и создайте канал, выполнив следующие шаги.
Теперь скопируйте ключ API записи. Что будет использоваться в коде ESP.
ESP8266 Программирование режима глубокого сна
Легкодоступная IDE Arduino будет использоваться для программирования модуля ESP8266. Убедитесь, что установлены все файлы платы ESP8266.
Начните с включения всех необходимых библиотек.
#включают
После того, как все библиотеки включены для доступа к функциям, назначьте ключ записи API, настройте имя и пароль Wi-Fi. Затем объявите все переменные для дальнейшего использования в местах хранения данных.
Строка apiWritekey = "*************"; // замените здесь ключом THINGSPEAK WRITEAPI char ssid = "******"; // ваше имя SSID Wi-Fi char password = "******"; // пароль Wi-Fi
Теперь создайте функцию для подключения модуля к сети Wi-Fi с помощью функции wifi.begin (), а затем непрерывно проверяйте, пока модуль не будет подключен к сети Wi-Fi, используя цикл while.
void connect1 () { WiFi.disconnect (); задержка (10); WiFi.begin (ssid, пароль); while (WiFi.status ()! = WL_CONNECTED) {
Сделайте еще одну функцию для отправки данных на сервер thingspeak. Здесь будет отправлена строка, содержащая ключ записи API, номер поля и данные, которые необходимо отправить. Затем отправьте эту строку с помощью функции client.print ().
void data () { if (client.connect (server, 80)) { String tsData = apiWritekey; tsData + = "& field1 ="; tsData + = Строка (tempF); tsData + = "\ г \ п \ г \ п"; client.print ("POST / обновление HTTP / 1.1 \ n"); client.print ("Хост: api.thingspeak.com \ n");
Вызовите функцию connect1, которая вызовет функцию подключения к Wi-Fi, затем снимет показания температуры и преобразует их в градусы Цельсия.
void setup () { Serial.begin (115200); Serial.println («устройство находится в режиме пробуждения»); connect1 (); значение int = analogRead (A0); вольты с плавающей запятой = (значение / 1024,0) * 5,0; tempC = вольт * 100,0;
Теперь вызовите функцию data (), чтобы загрузить данные в облако thingspeak. Наконец, важная функция для вызова - ESP.deepSleep (); это переведет модуль в спящий режим на определенный интервал времени в микросекундах.
данные(); Serial.println («глубокий сон в течение 15 секунд»); ESP.deepSleep (15e6);
Функция цикла останется пустой, так как все задачи необходимо выполнить один раз, а затем сбросить модуль через определенный интервал времени.
Рабочее видео и полный код приведены в конце этого руководства. Загрузите код в модуль ESP8266. Перед загрузкой программы отсоедините соединительный провод RST и D0, иначе будет выдана ошибка.
Тестирование DeepSleep на ESP8266
После загрузки программы вы увидите, что показания температуры загружаются в облако ThingSpeak каждые 15 секунд, а затем модуль переходит в режим глубокого сна.
На этом руководство по использованию Deep Sleep в модуле ESP8266 завершено. Глубокий сон - очень важная функция, и она включена в большинство устройств. Вы можете обратиться к этому руководству и применить этот метод для разных проектов. В случае каких-либо сомнений или предложений, напишите и прокомментируйте ниже. Также вы можете посетить наш форум.