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