Метеостанция на ESP32/ESP8266 и BME680 с мониторингом качества воздуха по MQTT


В этом проекте на основе технологии Интернета вещей (IoT) мы соединим датчик BME680 с модулем ESP32 или NodeMCU ESP8266. Мы создадим собственную метеостанцию ​​и систему мониторинга IAQ (Index of Air Quality - индекс качества воздуха). Проект основан на протоколе MQTT с использованием интегрированного датчика окружающей среды BME680. Платформа MQTT, которую мы будем использовать, — это Ubidots. Используя платформу Ubidots, мы можем отправлять данные в облако с любого устройства с доступом в Интернет.

Метеостанция на ESP32/ESP8266 и BME680 с мониторингом качества воздуха по MQTT

MQTT — это легкий протокол, очень популярный для устройств IoT. MQTT позволяет отправлять команды для регулирования выходов, считывать неопубликованные данные с узла датчика и многое другое. Таким образом, он значительно упрощает установление связи между несколькими устройствами. BME680 измеряет температуру, влажность, высоту, давление, точку росы и индекс качества воздуха (AQI) и публикует их в облаке Ubidots через MQTT. Панель управления Ubidots будет отображать данные датчиков в реальном времени в красивых виджетах.

Отображение данных с наших датчиков на панели инструментов Ubidots

Что касается аппаратной части, нам просто нужен датчик BME680 и модуль WiFi ESP8266 или ESP32. Для настройки оборудования достаточно 4-проводного соединения I2C между датчиком и контроллером. ESP32/ESP8266 подключается к сети WiFi и с помощью ключа API Ubidots данные об окружающей среде загружаются на панель управления Ubidots через фиксированный интервал времени. Вы можете получить доступ к панели управления как с компьютера, так и с помощью смартфона из любой точки мира.

Ранее комбинированный датчик BME680 мы использовали в следующих проектах на нашем сайте:

Если вы хотите больше узнать о работе с протоколом с MQTT, то можете посмотреть следующие статьи:

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

  1. Модуль ESP32 (купить на AliExpress) или NodeMCU ESP8266 (купить на AliExpress).
  2. Датчик BME680 (купить на AliExpress).
  3. Макетная плата.
  4. Соединительные провода.

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

Интегрированный датчик окружающей среды BME680

BME680 — это цифровой датчик 4-в-1 с измерением газа, влажности, давления и температуры на основе проверенных принципов измерения. BME680 — это улучшенная и усовершенствованная версия предыдущих версий датчиков, таких как BMP180, BMP280 или BME280. Датчик газа на BME680 может обнаруживать широкий спектр летучих органических соединений для мониторинга качества воздуха в помещении. Датчик имеет высокую линейность и точность.

Интегрированный датчик окружающей среды BME680

BME680 специально разработан для мобильных приложений и носимых устройств, где размер и низкое энергопотребление являются критическими требованиями. Для измерения качества воздуха газовый датчик внутри BME680 может обнаруживать широкий спектр газов, таких как летучие органические соединения (volatile organic compounds, VOC).

Датчик работает в диапазоне от 1,7 В до 3,6 В. Потребляемая мощность этого модуля в режиме ожидания составляет от 0,29 до 0,8 мкА , а в спящем режиме потребление мощности составляет от 0,15 до 1 мкА. Диапазон измерения температуры датчика BME680 составляет от -40 до +85 ℃. Диапазон измерения влажности составляет 0-100% . Он может измерять индекс качества воздуха (IAQ) от 0 до 500 PPM.

Адрес I2C датчика по умолчанию — 0x76 , но его можно изменить на 0x77, просто подключив SDO к GND. Чтобы узнать больше о датчике BME680, вы можете проверить спецификацию BME680.

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

Подключение ESP8266 и BME680

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

Схема подключения датчика BME680 к плате NodeMCU ESP8266

Подключите контакты VCC и GND датчика BME680 к контактам NodeMCU ESP8266 3.3V и GND. Аналогично подключите контакты BME680 SDA и SCL к контактам ESP8266 D2 и D1 соответственно. Вы можете включить устройство, используя порт Micro-USB 5 В платы NodeMCU или литий-ионную батарею 3.7 В.

Подключение датчика BME680 к плате NodeMCU ESP8266 с помощью макетной платы

Подключение ESP32 и BME680

Схема подключения датчика BME680 к плате ESP32 представлена на рисунке ниже. Для сборки схемы можно использовать макетную плату.

Схема подключения датчика BME680 к плате ESP32

Подключите контакты VCC и GND датчика BME680 к контактам ESP32 3.3V и GND. Аналогично подключите контакты SDA и SCL BME680 к контактам GPIO21 и GPIO22 ESP32 соответственно. Вы можете включить устройство, используя порт Micro-USB 5 В ESP32 или литий-ионную батарею 3.7 В.

Подключение датчика BME680 к плате ESP32

Настройка Ubidots

Нам нужно настроить панель управления Ubidots чтобы получать данные BME680 от ESP32 или ESP8266 по протоколу MQTT. Чтобы настроить Ubidots, посетите https://ubidots.com/ и создайте новую учетную запись, используя свой адрес электронной почты.

Главная страница сервиса Ubidots

После входа в панель инструментов Ubidots нам понадобится API Key. Чтобы получить API key, нажмите в правом верхнем углу панели на опцию профиля. Вы увидите опцию под названием «API Credentials». Нажмите на нее.

Пункт меню панели инструментов Ubidots для получения API Key

Теперь, когда вы нажимаете на Default Token и копируете API Token вы потом сможете вставить этот API Token в код программы.

Получение API Token в панели инструментов Ubidots

Исходный код программы 

Исходные коды программ для BME680 с ESP32 и ESP8266 приведены ниже. Но перед этим вам понадобятся несколько библиотек. Вы можете скачать эти библиотеки по следующим ссылкам.

1. Библиотека PubSubClienthttps://github.com/knolleary/pubsubclient
2. Библиотека BME680 Adafruithttps://github.com/adafruit/Adafruit_BME680
3. Унифицированная библиотека датчиков Adafruithttps://github.com/adafruit/Adafruit_Sensor

Измените SSID и пароль WiFi в строках ниже на свои SSID и пароль.

Измените токен аутентификации Ubidots в следующей строке кода. Используйте токен, который вы получили при создании учетной записи Ubidots, как описано выше.

Исходный код: ESP32 + BME680 + MQTT

Исходный код: ESP8266 + BME680 + MQTT

Результаты тестирования

Приведенный выше код для ESP32 и BME680 для MQTT Ubidots удовлетворяет всем требованиям проекта. Вы можете подключить датчик BME680 либо к ESP32, либо к NodeMCU ESP8266. Вы можете загрузить код в модуль WiFi. После загрузки кода плата ESP32/ESP8266 попытается подключиться к локальной сети WiFi, данные для подключения которой указаны в программе. После подключения к сети WiFi вы можете открыть Serial Monitor (окно монитора последовательной связи).

Тестирование работы проекта в окне монитора последовательной связи

Последовательный монитор будет отображать температуру, влажность, давление, высоту, точку росы, а также IAQ (индекс качества воздуха). Таким образом, вы можете измерять не только параметры окружающей среды, но и IAQ с помощью ESP32 и BME680. Если есть успешное подключение по Wi-Fi и дальнейшее подключение к Ubidots, данные будут автоматически загружаться после каждого установленного интервала.

Дальнейшая настройка панели инструментов Ubidots

Изначально на панели инструментов Ubidots не будет отображаться ни одного устройства. Но как только устройство будет подключено к компьютеру и включено, вы увидите устройство, появившееся в разделе устройств Ubidots.

Появившееся в разделе устройств Ubidots новое устройство

Теперь щелкните по устройству, которое отображается на панели инструментов Ubidots. В моем случае отображается esp32, поскольку я использую плату ESP32 для подключения по протоколу MQTT. На этой панели инструментов вы увидите данные о температуре, влажности, давлении, высоте, точке росы и IAQ. Соединение MQTT работает в режиме реального времени. Поэтому данные изменяются через определенный интервал.

Отображение данных с датчика на панели инструментов Ubidots

Теперь вернитесь к панели управления. В правом верхнем углу панели управления нажмите на символ «+». Вы увидите множество виджетов. Вы можете нажать и создать виджет для отображения всех отдельных параметров от температуры до качества воздуха в помещении. Например, вы можете выбрать Gauge для отображения влажности.

Выбор виджета Gauge для отображения влажности

После выбора датчика или любого другого виджета выберите переменную из списка, нажав “Add Variables“ («Добавить переменные»). Затем дайте ей любое имя и нажмите зеленую кнопку, чтобы продолжить.

Добавление переменной в панели инструментов Ubidots

Сделайте то же самое для всех остальных 5 переменных. Наконец, после проектирования панели с помощью виджетов, вы получите красивую панель в реальном времени, как показано на изображении ниже.

Созданная для нашего проекта панель с виджетами в Ubidots

Вы также можете посетить мобильную версию панели инструментов Ubidots, на мобильном экране также будут отображаться зарегистрированные данные BME680 на дисплее виджетов.

Мобильная версия панели инструментов Ubidots

Итак, вот как мы можем соединить интегрированный датчик окружающей среды BME680 с модулем Wifi ESP32 или ESP8266 и измерить IAQ и все другие параметры окружающей среды. Аналогично, отправка данных на панель управления Ubidots с помощью MQTT брокера требует высокого уровня навыков программирования. Вы можете отправлять данные с других датчиков на платформу Ubidots, используя тот же метод.

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

Ссылка на видео на YouTube

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

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

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