Оглавление:
- Запасы
- Шаг 1: Измерьте температуру и влажность
- Шаг 2. Создайте и настройте проект
- Шаг 3. Установите библиотеки
- Шаг 4: Подключите датчик DHT11
- Шаг 5: отправка данных в облако
- Шаг 6: Диагностика
- Шаг 7: запуск и отладка проекта
- Шаг 8: Конфигурация приборной панели
- Шаг 9: Заключение
Видео: Подключение датчика DHT11 / DHT22 к облаку с помощью платы на базе ESP8266: 9 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
В предыдущей статье я подключил свою плату NodeMCU на базе ESP8266 к сервису Cloud4RPi. Пришло время для настоящего проекта!
Запасы
Требования к оборудованию:
- Любая плата на базе микросхемы ESP8266 (например, NodeMCU)
- Датчик DHT11 или DHT22
Программное обеспечение и услуги:
- Библиотека датчиков DHT от Adafruit - v1.3.7
- Унифицированный датчик Adafruit - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI - облачная панель управления для устройств IoT
- PlatformIO IDE для VSCode
Шаг 1: Измерьте температуру и влажность
У меня уже был датчик DHT11, поэтому я решил использовать его для измерения температуры и влажности. Давайте выберем библиотеку Arduino для чтения данных датчиков.
Реестр Arduino содержит несколько библиотек, из которых я выбрал самую популярную.
Согласно их репозиторию GitHub, мы также должны добавить пакет Adafruit Unified Sensor.
Шаг 2. Создайте и настройте проект
Я уже описывал, как создать проект PlatformIO и установить библиотеки в первой части. Мой проект называется «MyNodeMCU». Структура показана выше.
Этот проект представляет собой немного измененный пример Cloud4RPi. Я решил хранить токен устройства и учетные данные Wi-Fi в файле конфигурации вместо кода.
Файл platform.io выглядит следующим образом:
[platformio] default_envs = nodemcuv2 [env: nodemcuv2] platform = espressif8266 framework = arduino board = nodemcuv2
Шаг 3. Установите библиотеки
Установка библиотек довольно проста. Вы можете сделать это из графического интерфейса IDE или добавив имена необходимых библиотек в раздел lib_deps файла platform.io:
; … Lib_deps = cloud4rpi-esp-arduino Библиотека датчиков DHT для унифицированного датчика Adafruit build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D CLOUD4RPI_DEBUG = 0 -D CLOUD4RPI_DEBUG = 0 -D SSID_NAME_ / "_PASS_WI_ID_YB_ID_IN_D_WI_ID_IN_IN_IN_IN_IN_IN_IN_IN_IN_IN_IN_IN_IN_D_W_ID_IN_S_W_ID_IN_D_W_ID_IN_ _ D CLOUD4RPI_TOKEN = / "_ ВАШЕ_УСТРОЙСТВО_ТОКЕН _ \"
Добавленные библиотеки будут автоматически установлены во вложенную папку проекта.
Заголовок main.cpp выглядит следующим образом:
#include #include #include #include "DHT.h"
Шаг 4: Подключите датчик DHT11
Adafruit предоставляет DHTtester.ino пример подключения датчика.
Этот код инициализирует датчик и определяет структуру для хранения результата измерения (в случае успеха):
#define DHTPIN 2 // Цифровой вывод, подключенный к датчику DHT # define DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; float t; }; DHT_Result dhtResult;
Следующая функция показывает, как считывать данные датчика и сохранять их в структуре данных, описанной выше.
недействительными readSensors () {float h = dht.readHumidity (); // Считываем температуру в градусах Цельсия (по умолчанию) float t = dht.readTemperature ();
// Проверяем, нет ли сбоев при чтении, и выходим
if (isnan (h) || isnan (t)) {Serial.println (F («Не удалось прочитать с датчика DHT!»)); возвращение; } dhtResult.h = h; dhtResult.t = t; }
Шаг 5: отправка данных в облако
Когда у нас есть эти данные, следующим шагом будет их отправка в сервис Cloud4RPi.
Страница Cloud4RPi для Arduino описывает библиотечный API, который представляет собой набор методов, используемых для:
- создавать, читать и обновлять переменные,
- отправлять значения переменных в облако по протоколу MQTT.
Библиотека поддерживает три типа переменных: Bool, Numeric и String.
Рабочий процесс библиотеки начинается с создания экземпляра API с использованием токена устройства с веб-сайта cloud4rpi.io (подробности см. В части 1 статьи).
#if defined (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ NO_DEVICE_TOKEN _ !!!"); #endif
Затем объявите переменные для показаний DHT11:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Затем получите данные с датчика, сохраните их в переменных и опубликуйте данные в Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
Температура и влажность не меняются быстро, поэтому отправка более одного значения за 5 минут не требуется.
Шаг 6: Диагностика
Cloud4RPi поддерживает диагностические данные вместе со значениями переменных. Я использовал время безотказной работы, мощность сигнала Wi-Fi и IP-адрес в качестве диагностических данных:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // Уровень сигнала WiFi c4r.declareDiagVariable ("Время работы");
Примечание. Миллис-функция, которую я использую для получения значения времени безотказной работы, сбрасывается до нуля каждые ~ 50 дней. Этого более чем достаточно для моего проекта.
Следующий код устанавливает значения диагностических переменных:
c4r.setDiagVariable ("RSSI", (String) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Время работы", uptimeHumanReadable (currentMillis)); c4r.publishDiag ();
Функция uptimeHumanReadable преобразует миллисекунды в удобную форму:
Строка uptimeHumanReadable (длинные миллисекунды без знака) {static char uptimeStr [32]; беззнаковые длинные секунды = миллисекунды / 1000; беззнаковые длинные минуты = секунд / 60; беззнаковое int часы = мин / 60; беззнаковое целое число дней = часы / 24; сек - = мин * 60; мин - = часы * 60; часы - = дней * 24; sprintf (uptimeStr, "% d дней% 2.2d:% 2.2d:% 2.2d", (байтовые) дни, (байтовые) часы, (байтовые) минуты, (байтовые) секунды); возврат строки (uptimeStr); }
Функция выводит такую строку 5 days 10:23:14 вместо странного большого числа.
Шаг 7: запуск и отладка проекта
После компиляции созданного кода и его прошивки в NodeMCU устройство подключается к облачной службе и начинает отправку данных.
Вы можете повысить уровень детализации журнала, установив для переменной препроцессора CLOUD4RPI_DEBUG значение 1 (добавьте -D CLOUD4RPI_DEBUG = 1 в раздел build_flags в файле platform.io).
Затем откройте сайт cloud4rpi.io и обратите внимание на новое устройство в сети. Откройте его, чтобы увидеть все значения переменных, полученные от устройства: датчик и диагностика.
Шаг 8: Конфигурация приборной панели
На этом этапе подключение для передачи данных в облако работает. Теперь давайте настроим визуальное представление данных.
Я использовал пользовательский интерфейс конфигурации Dashboard, чтобы создать следующую панель.
Панелью управления можно делиться, поэтому я сразу же делюсь ею со своим другом.
Шаг 9: Заключение
Полный код проекта доступен в gist.
На этом пока все!
Вопросы и предложения приветствуются в комментариях.
Рекомендуемые:
Подключение Arduino WiFi к облаку с помощью ESP8266: 7 шагов
Подключение Arduino WiFi к облаку с помощью ESP8266: в этом руководстве мы объясним вам, как подключить Arduino к облаку IoT через Wi-Fi. Мы настроим настройку, состоящую из модуля Wi-Fi Arduino и ESP8266, как вещь IoT и подготовим ее. для связи с облаком AskSensors.L
Основы Интернета вещей: подключение Интернета вещей к облаку с помощью ОС Mongoose: 5 шагов
Основы IoT: подключение вашего IoT к облаку с помощью Mongoose OS: если вы человек, который занимается мастерингом и электроникой, чаще всего вы встретите термин Интернет вещей, обычно сокращенно IoT, и что он относится к набору устройств, которые могут подключаться к Интернету! Быть таким человеком
Монитор погоды M5Stack M5stick C на базе ESP32 с DHT11 - Мониторинг температуры, влажности и теплового индекса на M5stick-C с помощью DHT11: 6 шагов
Монитор погоды M5Stack M5stick C на базе ESP32 с DHT11 | Мониторинг температуры, влажности и теплового индекса на M5stick-C С помощью DHT11: Привет, ребята, в этой инструкции мы узнаем, как связать датчик температуры DHT11 с m5stick-C (плата разработки от m5stack) и отобразить его на дисплее m5stick-C. Итак, в этом уроке мы прочитаем температуру, влажность и влажность. тепло я
NODEMCU LUA ESP8266 Подключение к базе данных MySQL: 6 шагов
NODEMCU LUA ESP8266 Подключение к базе данных MySQL: это руководство не для слабонервных, поскольку оно использует XAMPP (Apache, MySQL и PHP), HTML и, конечно же, LUA. Если вы уверены, что справитесь с этим, читайте дальше! Я использую XAMPP, так как его можно настроить на флэш-накопитель или на жесткий диск, и он настроен
Создание устройства датчика температуры Apple HomeKit (DHT22) с использованием RaspberryPI и DHT22: 11 шагов
Создайте устройство с датчиком температуры Apple HomeKit (DHT22) с использованием RaspberryPI и DHT22: я искал недорогой датчик температуры / влажности, который я мог бы использовать для отслеживания того, что происходит в моем пространстве для ползания, так как обнаружил, что этой весной было очень влажно , и было много сырости. Поэтому я искал датчик по разумной цене, который я мог бы