- Необходими компоненти
- Електрическа схема
- DHT11 Сензор за температура и влажност
- Програмиране NodeMCU ESP8266 Мониторинг на температура и влажност на живо
Микроконтролерите имат малка вътрешна памет, която не е достатъчна за запазване на генерирани данни от сензори за дълго време, или трябва да използвате някакво външно устройство с памет, или можете да запазите данните в някакъв облак с помощта на интернет. Също така понякога става трудно да се управлява, когато сензорът е разположен на място с екстремни условия, където човек не може да достигне или е трудно да го посещавате често. За да отстраним този вид проблеми, ние винаги разглеждаме начините, по които искаме да наблюдаваме данните на сензора в реално време от всяко място, без физическо присъствие на това място.
На бази данни в реално време могат да бъдат използвани в този сценарий, при който ние просто трябва да се намесвам някои контролер, който може да бъде свързан към интернет и може да бъде в състояние да обменя данни с облак сървър. Данните на сървъра могат да бъдат полезни при наблюдение на поведението на системата в реално време, анализ на бази данни, статистически анализ и обработка и интерпретация за бъдещи случаи на употреба. Има много IoT хардуерни платформи и облачни платформи, които служат за тази цел. Ако откриете затруднения при намирането на подходящата платформа за вашето приложение за IoT, последвайте връзката.
Преди това вече покривахме ThingSpeak, Adafruit IO и много други IoT софтуери. Днес ще изграждаме подобен проект, където ще използваме сензор за температура и влажност DHT11 и модул NodeMCU ESP8266, за да регистрираме температурата и влажността в реално време на сървъра на базата данни на Google Firebase.
Ще разделим проекта на два раздела. Първо, ще започнем със сглобяването на хардуерните компоненти и качването на фърмуер в него. И второ, ще използваме Firebase за настройка с NodeMCU за обмен на данни в реално време. Ако не сте запознати с ESP8266 или Firebase, следвайте нашия предишен урок за управление на LED с помощта на Firebase.
Необходими компоненти
- Модул NodeMCU ESP8266
- DHT11 Сензор за температура и влажност
Електрическа схема
DHT11 Сензор за температура и влажност
Модулът DHT11 разполага с комплекс за влажност и температура с калибриран изход за цифров сигнал, което означава, че модулът DHT11 сензор е комбиниран модул за определяне на влажност и температура, който дава калибриран цифров изходен сигнал. DHT11 ни дава много точна стойност на влажността и температурата и осигурява висока надеждност и дългосрочна стабилност. Този сензор има компонент за измерване на влажност с резистивен тип и компонент за измерване на температурата от тип NTC с вграден 8-битов микроконтролер, който има бърза реакция и рентабилност и се предлага в 4-пинов едноредов пакет.
Преди това използвахме ESP12E за актуализиране на показанията на DHT11 на уеб сървър, освен че можете да проверите всички проекти, базирани на DHT11, където използвахме DHT11 за взаимодействие с много други микроконтролери като Arduino, PIC, Raspberry и вградена метеорологична станция, използвайки ги.
Програмиране NodeMCU ESP8266 Мониторинг на температура и влажност на живо
Пълна програма с работещо видео е дадена в края. Тук обясняваме няколко важни части от кода.
Първо включете библиотеките за използване на ESP8266 и firebase.
#include
Изтеглете и инсталирайте библиотеките, като следвате връзките по-долу:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Докато компилирате , ако получите грешка, че библиотеката ArduinoJson.h не е инсталирана, моля, инсталирайте я, като използвате връзката, дадена по-горе.
Ще програмираме NodeMCU да взема показания от сензора DHT11 и да го избутва към Firebase на всеки 5 секунди интервал. Ще зададем път за избутване на данни. В момента два параметъра, а именно. влажността и температурата се изпращат по един и същ родителски път и по различен детски път.
Тези два параметъра са много важни за комуникация с firebase. Задаването на тези параметри ще даде възможност за обмен на данни между и ESP8266 и firebase. За да намерите тези параметри за вашия проект, следвайте нашия предишен урок за настройка на Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // адрес на името на проекта от id на firebase #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // тайният ключ, генериран от firebase
След като успешно намерите идентификационните данни, просто заменете горния код.
Въведете своя Wi-Fi SSID и парола, за да се свържете с вашата мрежа.
#define WIFI_SSID "network_name" // въведете вашето домашно или обществено име на wifi #define WIFI_PASSWORD "парола" // парола на wifi ssid
Дефинирайте DHT пина за данни в NodeMCU. Можете да използвате всеки цифров GPIO щифт в NodeMCU.
#define DHTPIN D4
DHT библиотеката е създадена за всички варианти на DHT и се предлага с опция, която DHT сензор искате да използвате например DHT11 или DHT22. Просто изберете правилния DHT сензор и продължете.
#define DHTTYPE DHT11 // изберете тип dht като DHT 11 или DHT22 DHT dht (DHTPIN, DHTTYPE);
Свържете се с избраната Wi-Fi мрежа и също така се свържете със сървъра на базата данни на firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Започнете да четете на щифт D4 на NodeMCU.
dht.begin ();
Вземете показанията за влажност и температура от DHT сензор и запишете като плаваща стойност.
float h = dht.readHuminity (); // Отчитането на температурата или влажността отнема около 250 милисекунди! float t = dht.readTemperature (); // Отчитане на температурата като Целзий (по подразбиране)
Просто проверете дали DHT сензорът е правилно свързан или не е повреден и контролерът може да чете показанията от него. Ако показанията не се показват, вероятно сензорът е повреден, просто покажете съобщение за грешка и се върнете, за да проверите отново, без да продължите напред.
if (isnan (h) - isnan (t)) {// Проверете дали някое четене е неуспешно и излезте рано (за да опитате отново). Serial.println (F („Неуспешно четене от DHT сензор!“)); връщане; }
Отпечатайте данните от сензора в сериен монитор за отстраняване на грешки и запазете стойностите на температурата и влажността под формата на низове, за да ги изпратите на firebase. Също така имайте предвид, че минималното закъснение, необходимо между две показания от сензора DHT11, е 2 секунди, така че винаги използвайте забавяне по-голямо от 2 секунди. За да научите повече за DHT11, можете да разгледате официалния лист с данни.
Serial.print ("Влажност:"); Serial.print (h); String fireHumid = String (h) + String ("%"); // преобразуване на целочислената влажност във влажност на низа Serial.print ("% Температура:"); Serial.print (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); забавяне (4000);
Най-накрая изпратете данните за температурата и влажността до firebase на пътя „your-project.firebaseio.com/DHT11/Humidity/“.
Firebase.pushString ("/ DHT11 / Влажност", fireHumid); // настройка на пътя и изпращане на показания Firebase.pushString ("/ DHT11 / Температура", fireTemp); // настройка на път и изпращане на показания
Можете да видите всички данни във вашия акаунт във firebase. Просто отидете в раздела „ База данни “ във „ Вашият проект “ в „ Моята конзола “ във Firebase.
За да настроите Firebase за изпращане и наблюдение на данните, можете да се обърнете към предишния ни урок.
Пълният код и видео за това наблюдение на температурата и влажността въз основа на IoT е дадено по-долу.