Передача с помощью NodeMCU ESP8266 данных температуры и влажности на Google Firebase


В последние годы наблюдается тенденция ко все большему увеличению объемов памяти современных микроконтроллеров, однако ее все равно недостаточно, к примеру, для таких задач как хранение в режиме реального времени данных, считываемых с датчиков. В этом случае приходят на помощью облачные хранилища данных, которые в настоящее время становятся все более популярными. Таким образом, микроконтроллер по каким-нибудь каналам связи (обычно это GSM или WiFi) передает данные, считываемые с подключенных к нему датчиков, на это облачное хранилище данных, с которого, в свою очередь, вы можете считать данные из любой точки земного шара, где есть доступ к сети Интернет.

Внешний вид проекта передачи с помощью NodeMCU ESP8266 данных температуры и влажности на Google Firebase

Одним из самых известных подобных хранилищ данных является сервис Thingspeak, который активно используется в настоящее время для различных проектов из сферы интернета вещей. И на нашем сайте вы можете посмотреть достаточно много проектов с использованием сервиса Thingspeak. Но если вы, к примеру, являетесь поклонниками продуктов от компании Google, то вы можете для целей хранения в режиме реального времени данных от датчиков использовать сервис Firebase, подробно работу с которым мы рассматривали в нашей предыдущей статье про управление светодиодом с помощью NodeMCU ESP8266 и Firebase – рекомендуем ознакомиться с ней прежде чем переходить к чтению данной статьи.

В данной статье мы рассмотрим передачу данных температуры и влажности на сервер Firebase с помощью NodeMCU ESP8266.

Необходимые компоненты

  1. Модуль NodeMCU ESP8266 (купить на AliExpress).
  2. Датчик температуры и влажности DHT11 (купить на AliExpress).

Датчик температуры и влажности DHT11

Датчик DHT11 осуществляет измерение температуры и влажности окружающего воздуха и передает эту информацию через свой цифровой выход. Датчик отличается высокой надежностью и стабильностью работы, и приемлемой для большинства проектов точностью измерений (если вам нужен более точный датчик температуры, то рекомендуем присмотреться к датчику DS18B20, подключение которого к плате Arduino мы рассматривали в этой статье).

Датчик DHT11 содержит в своем составе резистивный элемент для измерения влажности и компонент измерения температуры NTC типа (с отрицательным температурным коэффициентом). Также датчик оснащается недорогим 8-битным микроконтроллером с быстрым временем ответа и поставляется в виде модуля с 4-мя выходам. Внешний вид датчика показан на следующем рисунке.

Внешний вид датчика DHT11

Также на нашем сайте вы можете посмотреть все проекты с использованием датчика DHT11 – их достаточно много.

Схема проекта

Схема проекта для передачи данных температуры и влажности на сервер Firebase с помощью NodeMCU ESP8266 представлена на следующем рисунке.

Схема проекта для передачи данных температуры и влажности на сервер Firebase с помощью NodeMCU ESP8266

Как видите, схема крайне проста.

Объяснение программы для NodeMCU ESP8266

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Первым делом в программе подключим библиотеки для работы с модулем ESP8266 и сервером Firebase.

Эти библиотеки можно скачать по следующим ссылкам:

https://github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h

https://github.com/bblanchon/ArduinoJson

Если во время компиляции программы у вас будет выдаваться ошибка о том, что библиотека ArduinoJson.h у вас не установлена, то скачайте ее по приведенной выше ссылке и установите.

В программе мы будем с помощью NodeMCU ESP8266 считывать данные с датчика DHT11 и передавать их на сервер Firebase с 5-секундным интервалом. Для этого нам необходим будет путь, по которому мы будем передавать данные. Данные температуры и влажности мы будем передавать по одному и тому же родительскому пути, но разным наследуемым от него (дочерним) путям.

Также в программе нам необходимо задать два параметра (FIREBASE_HOST и FIREBASE_AUTH), которые нам понадобятся для взаимодействия с Google Firebase. Эти параметры сделают возможным обмен данными между ESP8266 и Firebase. Как получить эти параметры, описано в нашей предыдущей статье по работе с сервисом Google Firebase. После того как вы их получите, внесите соответствующие изменения в эти две строчки кода.

Следующие два параметра необходимы для подключения модуля ESP8266 к сети Wi-Fi. Замените идентификатор сети (SSID) и пароль (password) на значения для своей сети Wi-Fi.

Определим контакт NodeMCU ESP8266 для подключения к нему контакта данных датчика DHT11. Вы можете использовать для этого любой цифровой контакт NodeMCU, мы использовали контакт D4.

Библиотека для работы с датчиком DHT (DHT library) универсальна и может работать со всеми известными датчиками DHT, поэтому в программе вы должны указать с каким датчиком вы будете работать  - с DHT11 или DHT22.

Подключимся к выбранной Wi-Fi сети и к выбранной базе данных сервера firebase.

Начнем считывать данные с датчика DHT11 – он подключен у нас к контакту D4 NodeMCU.

Считаем данные температуры и влажности с датчика DHT11 и сохраним их в переменных типа float.

Проверим работоспособен ли датчик DHT11 и правильно ли он подключен. Если данные с него не считываются, то, скорее всего, он не работоспособен или не подключен, в этом случае мы будем выводить на экран сообщение об ошибке и будем снова возвращаться к проверке работоспособности датчика.

Также в целях отладки мы будем выводить в окно монитора последовательной связи (serial monitor) считанные данные с датчика DHT11 и передавать их в виде строковых переменных на сервер firebase. Также обратите внимание на то, что минимальная задержка между последовательными считываниями данных с датчика DHT11 составляет 2 секунды, поэтому убедитесь в том, что используете в программе задержку большую чем 2 секунды.

И, наконец, мы будем передавать данные температуры и влажности на сервер firebase используя путь “your-project.firebaseio.com/DHT11/Humidity/”.

Вы можете посмотреть все переданные вами данные в своем аккаунте в firebase. Для этого перейдите в раздел “Database” (база данных) в вашем проекте (“Your Project”) в вашей консоли (“My console”) в Firebase.

Тестирование работы проекта

Более подробно про настройку Firebase для считывания данных вы можете прочитать в нашей предыдущей статье по этой тематике.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
2 957 просмотров

Комментарии

Передача с помощью NodeMCU ESP8266 данных температуры и влажности на Google Firebase — 5 комментариев

  1. Спасибо за очень качественные уроки. Все получилось и работает хорошо. Была проблемма сначала , но догадался как ее решить и все пошло нормально.Суть проблемы (возможно еще кто то столкнулся с этим):
    #define DHTPIN D4 -в таком виде при компиляции показывало ошибку в этой строке , я убрал "D" , оставил 4 , ошибка не повторилась , но и результат измерения не появился.
    Посмотрел на какую ногу идет GPIO4 -это D2, переставил контакт данных с D4 на D2 и все заработало.

    • Спасибо и вам за то, что оценили наш труд, и за конструктивный комментарий к статье

  2. Сделал все как написано в статье, в терминале вижу передаваемые данные а в базе они не появляются. Можете объяснить почему?

  3. Добрый день.

    Полезная информация.
    Спасибо.
    Тоже заинтересовался этой темой.
    Но с применением связки "ESP-12F WeMos D1 WiFi", "Arduino UNO" и внешнего приложения.
    Рабочее название: «Метеостанция с охранной сигнализацией».
    Результат, в целом, удовлетворительный (в рамках поставленных целей).
    Если интересно, то можно посмотреть здесь:
    roamer55.ru/my_projs/arduino_prj/my_ts/005_step/ex_grp_03/ex_03_001.pdf ;
    roamer55.ru/main_programming/arduino/arduino_technosphere_000/arduino_technosphere_000_005/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *