- Необходимые компоненты
- Принципиальная электрическая схема
- Датчик температуры и влажности DHT11
- Программирование NodeMCU ESP8266 Мониторинг температуры и влажности в реальном времени
Микроконтроллеры имеют небольшую внутреннюю память, которой недостаточно для хранения данных, сгенерированных датчиками, в течение длительного времени, вам либо нужно использовать какое-то внешнее запоминающее устройство, либо вы можете сохранить данные в каком-то облаке через Интернет. Кроме того, иногда становится трудно управлять, когда датчик развертывается в каком-либо месте с экстремальными условиями, куда человек не может добраться или его трудно часто посещать. Чтобы исправить такие проблемы, мы всегда ищем способы, с помощью которых мы хотим отслеживать данные датчиков в реальном времени из любого места без какого-либо физического присутствия в этом месте.
В этом сценарии можно использовать базы данных в реальном времени, где нам просто нужно подключить какой-то контроллер, который может быть подключен к Интернету и может обмениваться данными с облачным сервером. Данные сервера могут быть полезны для мониторинга поведения системы в реальном времени, аналитики базы данных, статистического анализа и обработки, а также интерпретации для будущего использования. Для этой цели доступно множество аппаратных платформ Интернета вещей и облачных платформ. Если вы столкнетесь с трудностями при поиске подходящей платформы для своего IoT-приложения, перейдите по ссылке.
Ранее мы уже рассказывали о ThingSpeak, Adafruit IO и многих других программах для Интернета вещей. Сегодня мы будем создавать аналогичный проект, в котором мы будем использовать датчик температуры и влажности 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 "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // секретный ключ, сгенерированный из firebase
После успешного нахождения учетных данных просто замените в приведенном выше коде.
Введите свой SSID и пароль Wi-Fi для подключения к вашей сети.
#define WIFI_SSID "network_name" // введите имя вашего домашнего или общедоступного Wi-Fi #define WIFI_PASSWORD "пароль" // пароль Wi-Fi 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.readHumidity (); // Считывание температуры или влажности занимает около 250 миллисекунд! float t = dht.readTemperature (); // Считываем температуру в градусах Цельсия (по умолчанию)
Просто проверьте, правильно ли подключен датчик DHT или он не поврежден, и контроллер может считывать показания с него. Если показания не отображаются, возможно, датчик поврежден, просто покажите сообщение об ошибке и вернитесь для повторной проверки, не продолжая.
if (isnan (h) - isnan (t)) {// Проверяем, нет ли сбоев при чтении, и завершаем работу раньше (чтобы повторить попытку). Serial.println (F («Не удалось прочитать с датчика DHT!»)); возвращение; }
Распечатайте данные датчика в последовательном мониторе для отладки и сохраните значения температуры и влажности в строковой форме, чтобы отправить их на базу огня. Также обратите внимание, что минимальная задержка между двумя показаниями датчика DHT11 составляет 2 секунды, поэтому всегда используйте задержку более 2 секунд. Чтобы узнать больше о DHT11, вы можете посмотреть официальное техническое описание.
Serial.print ("Влажность:"); Серийный отпечаток (ч); Строка fireHumid = Строка (ч) + Строка ("%"); // преобразовываем целочисленную влажность в строку влажности Serial.print ("% Temperature:"); Serial.print (t); Serial.println («° C»); Строка fireTemp = Строка (t) + Строка («° C»); задержка (4000);
Наконец, отправьте данные о температуре и влажности на базу firebase по пути your-project.firebaseio.com/DHT11/Humidity/.
Firebase.pushString ("/ DHT11 / Humidity", fireHumid); // устанавливаем путь и отправляем показания Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // устанавливаем путь и отправляем показания
Вы можете увидеть все данные в своей учетной записи firebase. Просто перейдите в раздел « База данных » в « Ваш проект » в « Моя консоль » в Firebase.
Чтобы настроить Firebase для отправки и мониторинга данных, вы можете обратиться к нашему предыдущему руководству.
Полный код и видео для этого мониторинга температуры и влажности на основе IoT приведены ниже.