Бесшовная MQTT интеграция: NodeMCU DHT22 сенсоры с Raspberry Pi 3 B+ как брокер
Разверните масштабируемое IoT решение, связывающее NodeMCU микроконтроллеры с DHT22 датчиками температуры/влажности к Raspberry Pi 3 B+, выступающему как MQTT брокер. Данные визуализируются в реальном времени в IoT MQTT Panel App.
В этом гайде я прохожу через аппаратные соединения, настройку ПО и структуру кода, позволяющую добавлять или удалять сенсорные ноды простой правкой MQTT топиков. Когда сеть падает, каждый NodeMCU продолжает паблишить локально; позже можно переподключиться к брокеру для восстановления буферизованных данных.
1. Сетевая архитектура
Типовая раскладка ставит Raspberry Pi в LAN и каждый NodeMCU за тем же Wi-Fi роутером. Сенсоры читают значения каждые 10 секунд и паблишат в отдельные топики вроде /room1/temperature и /room1/humidity. Брокер слушает на порту 1883 и форвардит сообщения в MQTT Panel App.
2. ПО предпосылки
2.1 Arduino IDE библиотеки
- PubSubClient — MQTT клиент для ESP8266
- DHT Sensor Library — драйверы для DHT22/11
- Adafruit Unified Sensor — общий сенсорный интерфейс
- ESP8266WiFi — Wi-Fi связность
2.2 Raspberry Pi Python зависимости
- Встроенный Python
timeмодуль - MQTT клиент:
pip install paho-mqtt— см. Steves Internet Guide для быстрого старта
3. Прошивка прошивки
Прошейте NodeMCU предоставленным скетчем, затем запустите Python скрипт на Raspberry Pi для подписки на топики и хранения данных.
4. Обзор скетча NodeMCU
#include <ESP8266WiFi.h> // ESP8266 Wi‑Fi library
#include <PubSubClient.h> // MQTT client
#include "DHT.h" // DHT sensor library
const char* mqtt_server = "Broker_IP_Address"; // Замените на IP Pi
const char* clientID = "room1"; // Идентификатор ноды
const char* topicT = "/room1/temperature"; // Топик температуры
const char* topicH = "/room1/humidity"; // Топик влажности
const char* willTopic = "/room1/status"; // Will топик
const char* willMessage = "0"; // 0 = disconnected
int willQoS = 0;
boolean willRetain = true;
int counter = 0;
const char* swversion = "1.0";
WiFiClient wifiClient;
PubSubClient client(mqtt_server, 1883, wifiClient);
DHT dhtA(2, DHT22); // DHT22 на NodeMCU пине D4 (GPIO2)
void setup() {
Serial.begin(9600);
Serial.print(swversion);
dhtA.begin();
delay(2000); // Allow Wi‑Fi to settle
if (client.connect(clientID, "", "", willTopic, willQoS, willRetain, willMessage, true)) {
Serial.println("Connected to MQTT broker");
}
}
Замените Broker_IP_Address на локальный IP Pi (напр., 192.168.1.200). Чтобы найти, выполните ifconfig wlan0 на Pi.
willTopic и willMessage позволяют брокеру детектировать неожиданное отключение ноды, паблиша удержанный статус «0», визуализируемый в панели.
5. Скрипт подписчика Raspberry Pi
Python скрипт создает постоянное соединение с брокером, подписывается на релевантные топики и пишет входящие данные в CSV файл для последующего анализа.
6. Масштабирование системы
Чтобы добавить новую комнату, просто продублируйте скетч, измените clientID, topicT, topicH, willTopic на новое имя комнаты, и загрузите на другой NodeMCU. MQTT Panel App автоматически детектирует новые топики, если добавите их в UI.
Когда сетевая связность теряется, NodeMCU продолжает паблишить в локальную очередь брокера. После восстановления связи сообщения сбрасываются, обеспечивая отсутствие потери данных.
Следите за обновлениями, и ждите демо-видео всей системы в действии.
Производственный процесс
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Создание многодатчиковой системы мониторинга температуры и света с Raspberry Pi и DS18B20
- Мастерство управления датчиками и исполнительными механизмами на Raspberry Pi: акселерометр, сервопривод и потоко…
- Raspberry Pi 3 B+ — Обновленные характеристики, спецификации и руководство по покупке
- Создание робота на Raspberry Pi и Python: полное руководство
- Гальваническое покрытие vs Анодирование: ключевые различия для обработки поверхностей металлов
- Черные и цветные металлы: ключевые различия, свойства и применение
- Пайка (бразинг) vs Паяльник (солдеринг): ключевые отличия
- Сверление, растачивание и резьбование: ключевые отличия
- Шуруповальный и строгальный станки: ключевые отличия