Integração MQTT Perfeita: Sensores NodeMCU DHT22 com Raspberry Pi 3 B+ como Broker
Implemente uma solução IoT escalável que acopla microcontroladores NodeMCU com sensores de temperatura/umidade DHT22 a um Raspberry Pi 3 B+ atuando como broker MQTT. Dados são visualizados em tempo real no IoT MQTT Panel App.
Neste guia, percorro as conexões de hardware, configuração de software e estrutura de código que permitem adicionar ou remover nós de sensores simplesmente editando tópicos MQTT. Quando a rede cai, cada NodeMCU continua publicando localmente; você pode reconectar ao broker depois para recuperar os dados em buffer.
1. Arquitetura de Rede
O layout típico coloca o Raspberry Pi na LAN e cada NodeMCU atrás do mesmo roteador Wi-Fi. Sensores leem valores a cada 10 segundos e publicam em tópicos distintos como /room1/temperature e /room1/humidity. O broker escuta na porta 1883 e encaminha mensagens para o MQTT Panel App.
2. Pré-requisitos de Software
2.1 Bibliotecas Arduino IDE
- PubSubClient – Cliente MQTT para ESP8266
- DHT Sensor Library – Drivers para DHT22/11
- Adafruit Unified Sensor – Interface genérica de sensor
- ESP8266WiFi – Conectividade Wi-Fi
2.2 Dependências Python do Raspberry Pi
- Módulo
timeembutido do Python - Cliente MQTT:
pip install paho-mqtt– veja Steves Internet Guide para início rápido
3. Carregando Firmware
Flasheie o NodeMCU com o sketch fornecido, então execute o script Python no Raspberry Pi para assinar os tópicos e armazenar os dados.
4. Visão Geral do Sketch NodeMCU
#include <ESP8266WiFi.h> // biblioteca Wi-Fi ESP8266 #include <PubSubClient.h> // cliente MQTT #include "DHT.h" // biblioteca sensor DHT const char* mqtt_server = "Broker_IP_Address"; // Substitua pelo IP do Pi const char* clientID = "room1"; // Identificador do nó const char* topicT = "/room1/temperature"; // Tópico temperatura const char* topicH = "/room1/humidity"; // Tópico umidade const char* willTopic = "/room1/status"; // Tópico will const char* willMessage = "0"; // 0 = desconectado 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 no pino D4 do NodeMCU (GPIO2) void setup() { Serial.begin(9600); Serial.print(swversion); dhtA.begin(); delay(2000); // Permite Wi-Fi estabilizar if (client.connect(clientID, "", "", willTopic, willQoS, willRetain, willMessage, true)) { Serial.println("Conectado ao broker MQTT"); } }
Substitua Broker_IP_Address pelo IP local do Pi (ex: 192.168.1.200). Para encontrá-lo, execute ifconfig wlan0 no Pi.
O willTopic e willMessage permitem que o broker detecte quando um nó desconecta inesperadamente, publicando um status "0" retido que pode ser visualizado no painel.
5. Script Assinante do Raspberry Pi
O script Python cria conexão persistente ao broker, assina os tópicos relevantes e grava dados recebidos em arquivo CSV para análise posterior.
6. Escalando o Sistema
Para adicionar um novo cômodo, simplesmente duplique o sketch, altere clientID, topicT, topicH e willTopic para o novo nome do cômodo, e faça upload para outro NodeMCU. O MQTT Panel App detectará automaticamente os novos tópicos se você os adicionar na UI.
Quando a conectividade de rede é perdida, o NodeMCU continua publicando em sua fila local do broker. Uma vez restaurada a conexão, as mensagens são liberadas, garantindo nenhuma perda de dados.
Siga-me para atualizações, e fique atento para um vídeo demo do sistema completo em ação.
Processo de manufatura
- Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo
- Construa um Sistema de Monitoramento de Temperatura e Luz Multi-Sensor com Raspberry Pi e DS18B20
- Dominando Controle de Sensores e Atuadores no Raspberry Pi: Acelerômetro, Servo e Streaming de Dados
- Raspberry Pi 3 B+ – Recursos Atualizados, Especificações e Guia de Compra
- Construa um Robô com Raspberry Pi e Python: Guia Completo
- Galvanoplastia vs. Anodização: Diferenças-Chave para Tratamentos de Superfície Metálica
- Metais Ferrosos vs. Não Ferrosos: Diferenças, Usos e Propriedades Essenciais
- Brasagem vs Solda Branda: Principais Diferenças Explicadas
- Entendendo Furação, Alargamento e Rebaixamento: Diferenças-Chave Explicadas
- Plainadora vs Plainadora de Mesa: Principais Diferenças Explicadas