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


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

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

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

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

Если у вас не получается организовать взаимодействие NodeMCU ESP8266 с Google Firebase с помощью представленной статьи (поскольку функционал Google Firebase со временем претерпевает определенные изменения), то можете посмотреть более свежую статью на данную тему.

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

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

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Датчик температуры и влажности 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 для считывания данных вы можете прочитать в нашей предыдущей статье по этой тематике.

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

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

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

Комментарии

Передача с помощью 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 не будет опубликован. Обязательные поля помечены *