Рубрики
Проекты на ESP8266

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

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

Одним из самых известных подобных хранилищ данных является сервис 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 – их достаточно много.

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

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

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

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

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

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

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

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

Леонид, так сразу сложно сказать, не видя ничего что у вас происходит, почему они не появляются в базе. Ключ секретный в программе изменили на свой? А у вас заработал более простой проект данной тематики — управление светодиодом с помощью Google Firebase?

Добрый день.

Полезная информация.
Спасибо.
Тоже заинтересовался этой темой.
Но с применением связки «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 не будет опубликован. Обязательные поля помечены *