Intégration MQTT transparente : capteurs NodeMCU DHT22 avec Raspberry Pi 3 B+ comme broker
Déployez une solution IoT évolutive qui couple des microcontrôleurs NodeMCU avec des capteurs de température/humidité DHT22 à un Raspberry Pi 3 B+ agissant comme broker MQTT. Les données sont visualisées en temps réel sur l'application IoT MQTT Panel.
Dans ce guide, je parcours les connexions matérielles, la configuration logicielle et la structure de code qui vous permettent d'ajouter ou supprimer des nœuds capteurs simplement en modifiant les topics MQTT. Quand le réseau tombe, chaque NodeMCU continue de publier localement ; vous pouvez vous reconnecter plus tard au broker pour récupérer les données mises en tampon.
1. Architecture réseau
La disposition typique place le Raspberry Pi sur le LAN et chaque NodeMCU derrière le même routeur Wi-Fi. Les capteurs lisent les valeurs toutes les 10 secondes et publient vers des topics distincts tels que /room1/temperature et /room1/humidity. Le broker écoute sur le port 1883 et transfère les messages vers l'application MQTT Panel.
2. Prérequis logiciels
2.1 Bibliothèques Arduino IDE
- PubSubClient – Client MQTT pour ESP8266
- DHT Sensor Library – Pilotes pour DHT22/11
- Adafruit Unified Sensor – Interface capteur générique
- ESP8266WiFi – Connectivité Wi-Fi
2.2 Dépendances Python Raspberry Pi
- Module
timeintégré de Python - Client MQTT :
pip install paho-mqtt– voir Steves Internet Guide pour un démarrage rapide
3. Téléversement du firmware
Flashez le NodeMCU avec le sketch fourni, puis exécutez le script Python sur le Raspberry Pi pour vous abonner aux topics et stocker les données.
4. Aperçu du sketch NodeMCU
#include <ESP8266WiFi.h> // Bibliothèque Wi‑Fi ESP8266 #include <PubSubClient.h> // Client MQTT #include "DHT.h" // Bibliothèque capteur DHT const char* mqtt_server = "Broker_IP_Address"; // Remplacer par IP du Pi const char* clientID = "room1"; // Identifiant du nœud const char* topicT = "/room1/temperature"; // Topic température const char* topicH = "/room1/humidity"; // Topic humidité const char* willTopic = "/room1/status"; // Topic will const char* willMessage = "0"; // 0 = déconnecté 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 sur broche NodeMCU D4 (GPIO2) void setup() { Serial.begin(9600); Serial.print(swversion); dhtA.begin(); delay(2000); // Laisser le Wi‑Fi se stabiliser if (client.connect(clientID, "", "", willTopic, willQoS, willRetain, willMessage, true)) { Serial.println("Connecté au broker MQTT"); } }
Remplacez Broker_IP_Address par l'IP locale du Pi (ex: 192.168.1.200). Pour la trouver, exécutez ifconfig wlan0 sur le Pi.
Le willTopic et willMessage permettent au broker de détecter quand un nœud se déconnecte inopinément, publiant un statut « 0 » retenu qui peut être visualisé dans le panneau.
5. Script abonné Raspberry Pi
Le script Python crée une connexion persistante au broker, s'abonne aux topics pertinents et écrit les données entrantes dans un fichier CSV pour analyse ultérieure.
6. Faire évoluer le système
Pour ajouter une nouvelle pièce, dupliquez simplement le sketch, changez clientID, topicT, topicH et willTopic avec le nouveau nom de pièce, et téléversez sur un autre NodeMCU. L'application MQTT Panel détectera automatiquement les nouveaux topics si vous les ajoutez dans l'UI.
Quand la connectivité réseau est perdue, le NodeMCU continue de publier dans sa file d'attente locale du broker. Une fois la connexion restaurée, les messages sont vidés, assurant aucune perte de données.
Suivez-moi pour les mises à jour, et restez à l'écoute pour une vidéo de démo du système complet en action.
Processus de fabrication
- Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
- Construire un système de surveillance température et lumière multi-capteurs avec Raspberry Pi et DS18B20
- Maîtriser le contrôle des capteurs et actionneurs sur Raspberry Pi : Accéléromètre, Servo et Streaming de données
- Raspberry Pi 3 B+ — Fonctionnalités, Spécifications et Guide d'Achat Mis à Jour
- Construire un robot avec Raspberry Pi et Python : Guide complet
- Électrodéposition vs Anodisation : Différences clés pour traitements de surface métalliques
- Métaux ferreux vs non ferreux : différences clés, utilisations et propriétés
- Brasage vs Soudure : Différences Clés Expliquées
- Perçage, Alésage et Alésage de Finition : Différences Clés