- Потрібні компоненти
- Кругова діаграма
- DHT11 Датчик температури та вологості
- Програмування NodeMCU ESP8266 Моніторинг температури та вологості в реальному часі
Мікроконтролери мають невелику внутрішню пам'ять, якої недостатньо для тривалого збереження даних, що генеруються датчиками, або вам доведеться використовувати якийсь зовнішній пристрій пам'яті, або ви можете зберегти дані на якійсь хмарі за допомогою Інтернету. Крім того, іноді стає важко управляти, коли датчик розміщений в якомусь екстремальному місці, куди людина не може дістатись, або його важко часто відвідувати. Щоб усунути подібні проблеми, ми завжди розглядаємо способи, за допомогою яких ми хочемо відстежувати дані датчика в реальному часі з будь-якого місця без будь-якої фізичної присутності в цьому місці.
У базах даних в режимі реального часу можуть бути використані в цьому випадку, коли ми просто повинні взаємодіяти деякий контролер, який може бути підключений до Інтернету і може мати можливість обмінюватися даними з сервером хмари. Дані сервера можуть бути корисними для моніторингу поведінки системи в режимі реального часу, аналізу бази даних, статистичного аналізу та обробки, а також інтерпретації для майбутнього випадку використання. Для цього існує безліч апаратних платформ IoT та хмарних платформ. Якщо у вас виникають труднощі з пошуком відповідної платформи для вашої програми IoT, перейдіть за посиланням.
Раніше ми вже охоплювали ThingSpeak, Adafruit IO та багато інших програм IoT. Сьогодні ми будуємо подібний проект, де ми будемо використовувати датчик температури та вологості DHT11 та модуль NodeMCU ESP8266 для реєстрації температури та вологості в режимі реального часу на сервері бази даних Google Firebase.
Ми розділимо проект на два розділи. По-перше, ми почнемо зі складання апаратних компонентів та завантаження в нього прошивки. А по-друге, ми будемо використовувати Firebase для налаштування за допомогою NodeMCU для обміну даними в реальному часі. Якщо ви новачок у ESP8266 або Firebase, дотримуйтесь нашого попереднього підручника з управління світлодіодами за допомогою Firebase.
Потрібні компоненти
- Модуль NodeMCU ESP8266
- DHT11 Датчик температури та вологості
Кругова діаграма
DHT11 Датчик температури та вологості
Модуль DHT11 має комплекс вологості та температури з каліброваним цифровим вихідним сигналом, що означає, що модуль датчика DHT11 - це комбінований модуль для вимірювання вологості та температури, який дає калібрований цифровий вихідний сигнал. DHT11 дає нам дуже точне значення вологості та температури та забезпечує високу надійність та довготривалу стабільність. Цей датчик має компонент вимірювання вологості резистивного типу та компонент вимірювання температури типу NTC із вбудованим 8-бітним мікроконтролером, який має швидку реакцію та економічно вигідний і доступний у 4-контактному однорядному пакеті
Раніше ми використовували ESP12E для оновлення показань DHT11 на веб-сервері, крім того, що ви можете перевірити всі проекти на основі DHT11, де ми використовували DHT11 для взаємодії з багатьма іншими мікроконтролерами, такими як Arduino, PIC, Raspberry та вбудована метеостанція, використовуючи їх.
Програмування NodeMCU ESP8266 Моніторинг температури та вологості в реальному часі
Повна програма з робочим відео подається в кінці. Тут ми пояснюємо кілька важливих частин коду.
По-перше, включіть бібліотеки для використання ESP8266 та firebase.
#включати
Завантажте та встановіть бібліотеки за посиланнями нижче:
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" // адреса імені проекту з ідентифікатора firebase #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxQDDkhN" // секретний ключ, створений з firebase
Після успішного пошуку облікових даних просто замініть наведений вище код.
Введіть свій SSID і пароль Wi-Fi, щоб підключитися до вашої мережі.
#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 ();
Візьміть показники вологості та температури з датчика ДГТ і збережіть як плаваюче значення.
float h = dht.readHumidity (); // Зчитування температури або вологості займає близько 250 мілісекунд! float t = dht.readTemperature (); // Зчитування температури за Цельсієм (за замовчуванням)
Просто перевірте, чи правильно підключений датчик DHT, чи він не пошкоджений, і контролер зможе зчитувати з нього показання. Якщо показання не відображаються, тоді, ймовірно, датчик пошкоджений, просто покажіть повідомлення про помилку і поверніться, щоб перевірити ще раз, не продовжуючи вперед.
if (isnan (h) - isnan (t)) {// Перевірте, чи не вдалося прочитати, і вийдіть достроково (щоб спробувати ще раз). Serial.println (F ("Не вдалося прочитати з датчика DHT!")); повернення; }
Роздрукуйте дані датчика на послідовному моніторі для налагодження та збережіть значення температури та вологості у вигляді рядків, щоб надіслати їх у базу даних. Також зауважте, що мінімальна затримка, необхідна між двома показаннями датчика DHT11, становить 2 секунди, тому завжди використовуйте затримку, більшу за 2 секунди. Щоб дізнатись більше про DHT11, ви можете переглянути офіційну таблицю.
Serial.print ("Вологість:"); Serial.print (h); Рядок fireHumid = Рядок (h) + Рядок ("%"); // перетворення цілочисельної вологості у вологість рядків 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 наведено нижче.