Naadloze MQTT Integratie: NodeMCU DHT22 Sensoren Met Raspberry Pi 3 B+ Als Broker
Implementeer een schaalbare IoT-oplossing die NodeMCU microcontrollers koppelt met DHT22 temperatuur/vochtigheidssensoren aan een Raspberry Pi 3 B+ die fungeert als MQTT-broker. Data wordt in real-time gevisualiseerd op de IoT MQTT Panel App.
In deze gids loop ik door de hardwareverbindingen, software-setup en codestructuur die je in staat stelt sensor-nodes toe te voegen of te verwijderen door simpelweg MQTT-topics te bewerken. Wanneer het netwerk wegvalt, blijft elke NodeMCU lokaal publiceren; je kunt later opnieuw verbinden met de broker om de gebufferde data te herstellen.
1. Netwerkarchitectuur
De typische layout plaatst de Raspberry Pi op het LAN en elke NodeMCU achter dezelfde Wi-Fi-router. Sensoren lezen waarden elke 10 seconden en publiceren naar distincte topics zoals /room1/temperature en /room1/humidity. De broker luistert op poort 1883 en stuurt berichten door naar de MQTT Panel App.
2. Software Vereisten
2.1 Arduino IDE Bibliotheken
- PubSubClient – MQTT-client voor ESP8266
- DHT Sensor Library – drivers voor DHT22/11
- Adafruit Unified Sensor – generieke sensorinterface
- ESP8266WiFi – Wi-Fi connectiviteit
2.2 Raspberry Pi Python Dependencies
- Python's ingebouwde
timemodule - MQTT-client:
pip install paho-mqtt– zie Steves Internet Guide voor een snelle start
3. Firmware Uploaden
Flash de NodeMCU met de geleverde sketch, draai dan het Python-script op de Raspberry Pi om te abonneren op de topics en de data op te slaan.
4. NodeMCU Sketch Overzicht
#include <ESP8266WiFi.h> // ESP8266 Wi-Fi bibliotheek
#include <PubSubClient.h> // MQTT client
#include "DHT.h" // DHT sensor bibliotheek
const char* mqtt_server = "Broker_IP_Address"; // Vervang met Pi IP
const char* clientID = "room1"; // Node identificatie
const char* topicT = "/room1/temperature"; // Temperatuur topic
const char* topicH = "/room1/humidity"; // Vochtigheid topic
const char* willTopic = "/room1/status"; // Will topic
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 op NodeMCU pin D4 (GPIO2)
void setup() {
Serial.begin(9600);
Serial.print(swversion);
dhtA.begin();
delay(2000); // Laat Wi-Fi rusten
if (client.connect(clientID, "", "", willTopic, willQoS, willRetain, willMessage, true)) {
Serial.println("Verbonden met MQTT broker");
}
}
Vervang Broker_IP_Address met het lokale IP van de Pi (bijv. 192.168.1.200). Om het te vinden, voer ifconfig wlan0 uit op de Pi.
De willTopic en willMessage stellen de broker in staat om te detecteren wanneer een node onverwacht disconnects, een bewaarde "0" status publicerend die in het panel gevisualiseerd kan worden.
5. Raspberry Pi Subscriber Script
Het Python-script creëert een persistente verbinding met de broker, abonneert op de relevante topics, en schrijft binnenkomende data naar een CSV-bestand voor latere analyse.
6. Het Schalen Van Het Systeem
Om een nieuwe kamer toe te voegen, dupliceer simpelweg de sketch, wijzig clientID, topicT, topicH, en willTopic naar de nieuwe kamernaam, en upload naar een andere NodeMCU. De MQTT Panel App zal de nieuwe topics automatisch detecteren als je ze in de UI toevoegt.
Wanneer netwerkconnectiviteit verloren gaat, blijft de NodeMCU publiceren naar zijn lokale broker-wachtrij. Eenmaal de verbinding hersteld, worden de berichten geflusht, wat geen dataverlies garandeert.
Volg me voor updates, en blijf getuned voor een demovideo van het hele systeem in actie.
Productieproces
- Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
- Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
- Raspberry Pi-sensor- en actuatorbeheersing onder de knie: versnellingsmeter, servo en datastreaming
- Raspberry Pi 3 B+ – Bijgewerkte Functies, Specificaties & Aankoopgids
- Een Robot Bouwen met Raspberry Pi en Python: Een Complete Gids
- Galvaniseren vs. anodiseren: belangrijkste verschillen voor metaaloppervlaktebehandelingen
- Ferrometalen vs. Non-ferrometalen: Belangrijkste Verschillen, Toepassingen en Eigenschappen
- Hardlossen vs. Solderen: Belangrijkste Verschillen Uitgelegd
- Boren, Uittrekken & Affrezen: Belangrijkste Verschillen Uitgelegd
- Schaafmachine vs. Plandermachine: Belangrijkste Verschillen Uitgelegd
- Centrifugale vs. Waaierpompen: Belangrijkste Verschillen en Toepassingen