Integrasi MQTT yang Lancar: Sensor NodeMCU DHT22 dengan Raspberry Pi 3 B+ sebagai Broker
Terapkan solusi IoT yang terukur yang menggabungkan mikrokontroler NodeMCU dengan sensor suhu/kelembaban DHT22 ke Raspberry Pi 3 B+ yang bertindak sebagai broker MQTT. Data divisualisasikan secara real-time pada IoT MQTT Panel App.
Dalam panduan ini saya memandu melalui koneksi perangkat keras, pengaturan perangkat lunak, dan struktur kode yang memungkinkan Anda menambah atau menghapus node sensor hanya dengan mengedit topik MQTT. Saat jaringan terputus, setiap NodeMCU terus menerbitkan secara lokal; Anda kemudian dapat menyambungkan kembali ke broker untuk memulihkan data yang tertunda.
1. Arsitektur Jaringan
Tata letak umum menempatkan Raspberry Pi di LAN dan setiap NodeMCU di belakang router Wi-Fi yang sama. Sensor membaca nilai setiap 10 detik dan menerbitkan ke topik yang berbeda seperti /room1/temperature dan /room1/humidity. Broker mendengarkan pada port 1883 dan meneruskan pesan ke IoT MQTT Panel App.
2. Prasyarat Perangkat Lunak
2.1 Pustaka Arduino IDE
2.2 Dependensi Python Raspberry Pi
- Modul bawaan Python
time - Klien MQTT:
pip install paho-mqtt – lihat Steves Internet Guide untuk quick start
3. Mengunggah Firmware
Flash NodeMCU dengan sketsa yang disediakan, lalu jalankan skrip Python pada Raspberry Pi untuk berlangganan ke topik dan menyimpan data.
4. Ringkasan Sketsa NodeMCU
#include <ESP8266WiFi.h> // perpustakaan Wi-Fi ESP8266 #include <PubSubClient.h> // klien MQTT #include "DHT.h" // perpustakaan sensor DHT const char* mqtt_server = "Broker_IP_Address"; // Ganti dengan IP Pi const char* clientID = "room1"; // pengenal node const char* topicT = "/room1/temperature"; // topik suhu const char* topicH = "/room1/humidity"; // topik kelembaban const char* willTopic = "/room1/status"; // topik will const char* willMessage = "0"; // 0 = terputus 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 pada pin NodeMCU D4 (GPIO2) void setup() { Serial.begin(9600); Serial.print(swversion); dhtA.begin(); delay(2000); // Biarkan Wi-Fi tenang if (client.connect(clientID, "", "", willTopic, willQoS, willRetain, willMessage, true)) { Serial.println("Terhubung ke broker MQTT"); } }
Ganti Broker_IP_Address dengan IP lokal Pi (misalnya, 192.168.1.200). Untuk menemukannya, jalankan ifconfig wlan0 pada Pi.
willTopic dan willMessage memungkinkan broker untuk mendeteksi saat node terputus secara tidak terduga, menerbitkan status yang dipertahankan "0" yang dapat divisualisasikan di panel.
5. Skrip Pelanggan Raspberry Pi Python
Skrip Python membuat koneksi persisten ke broker, berlangganan ke topik yang relevan, dan menulis data yang masuk ke file CSV untuk analisis nanti.
6. Mengukur Skala Sistem
Untuk menambahkan ruangan baru, cukup duplikasi sketsa, ubah clientID, topicT, topicH, dan willTopic ke nama ruangan baru, dan unggah ke NodeMCU lain. IoT MQTT Panel App akan secara otomatis mendeteksi topik baru jika Anda menambahkannya di UI.
Ketika konektivitas jaringan hilang, NodeMCU terus menerbitkan ke antrean broker lokalnya. Setelah koneksi dipulihkan, pesan-dipesan disalurkan, memastikan tidak ada kehilangan data.
Ikuti saya untuk pembaruan, dan tetap setia untuk video demo seluruh sistem dalam tindakan.