Uncategorized

ESP32 MQTT Casa Inteligente: Dados na Nuvem em 30 Minutos

O Problema

Você montou uma estação meteorológica com ESP32. Temperatura e umidade aparecem perfeitamente no serial monitor. Mas aqui está o problema — esses dados estão presos no seu laptop. Você não consegue ver do celular. Não consegue registrar. Não consegue disparar automações.

O MQTT resolve isso. É o protocolo de comunicação que alimenta a maioria dos sistemas de IoT do mundo — de fábricas inteligentes a instalações de Home Assistant.

O Que Você Vai Construir

Um nó sensor ESP32 que:

  • Lê temperatura e umidade a cada 30 segundos
  • Publica os dados num broker MQTT gratuito na nuvem
  • Deixa você monitorar tudo de qualquer navegador, em qualquer lugar

Dificuldade: Iniciante  |  Tempo: 30 minutos  |  Custo: ~US$ 23 em peças

Hardware Necessário (Lista de Materiais)

Peça Modelo Qtd Preço Comprar
Microcontrolador ESP32 DevKitC V4 1 $13.49 Ver Produto
Sensor de Temp./Umidade DHT22 1 $5.24 Ver Produto
Display (opcional) 0.96″ OLED SSD1306 1 $5.99 Ver Produto
Protoboard 830 pontos 1 $4.49 Ver Produto
Cabos Jumper M-M 40pcs 1 $2.99 Ver Produto

Passo 1: Fiação

ESP32 ↔ DHT22

Pino DHT22 Pino ESP32 Nota
VCC 3V3 Alimentação
GND GND Terra
DATA GPIO 13 Linha de dados

ESP32 ↔ OLED (opcional)

Pino OLED Pino ESP32 Nota
VCC 3V3 Alimentação
GND GND Terra
SDA GPIO 21 Dados I2C
SCL GPIO 22 Clock I2C

Passo 2: Instalar as Bibliotecas

Abra a Arduino IDE → Sketch → Include Library → Manage Libraries e instale:

  1. PubSubClient de Nick O’Leary (comunicação MQTT)
  2. DHT sensor library da Adafruit (driver do DHT22)
  3. Adafruit SSD1306 (display OLED, se for usar)

Passo 3: Envie o Código

#include <WiFi.h>
#include <PubSubClient.h>
#include "DHT.h"

// --- WiFi Settings ---
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

// --- MQTT Settings ---
const char* mqtt_server = "broker.hivemq.com";
const int mqtt_port = 1883;
const char* temp_topic = "sensbench/home/temperature";
const char* hum_topic = "sensbench/home/humidity";

// --- Sensor Settings ---
#define DHTPIN 13
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

// --- Globals ---
WiFiClient espClient;
PubSubClient client(espClient);

void setup_wifi() {
  delay(10);
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("nWiFi connected! IP: ");
  Serial.println(WiFi.localIP());
}

void reconnect() {
  while (!client.connected()) {
    Serial.print("Connecting to MQTT...");
    String clientId = "sensbench-" + String(random(0xffff), HEX);
    if (client.connect(clientId.c_str())) {
      Serial.println("connected!");
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" retrying in 5s");
      delay(5000);
    }
  }
}

void setup() {
  Serial.begin(115200);
  dht.begin();
  setup_wifi();
  client.setServer(mqtt_server, mqtt_port);
}

void loop() {
  if (!client.connected()) reconnect();
  client.loop();

  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    Serial.println("Sensor read failed!");
    return;
  }

  char tempStr[8], humStr[8];
  dtostrf(t, 4, 2, tempStr);
  dtostrf(h, 4, 2, humStr);

  client.publish(temp_topic, tempStr);
  client.publish(hum_topic, humStr);

  Serial.printf("Temp: %s°C  Humidity: %s%%n", tempStr, humStr);
  delay(30000);
}

Passo 4: Veja Seus Dados na Nuvem

  1. Abra https://www.hivemq.com/mqtt-web-client/ no seu navegador
  2. Clique em Connect
  3. Em Subscriptions, adicione o tópico: sensbench/home/#
  4. Assista seu ESP32 enviar dados em tempo real a cada 30 segundos

E Depois?

Agora que seus dados estão na nuvem, você pode:

  • Montar um dashboard com Node-RED ou Home Assistant para visualizar os dados
  • Adicionar mais sensores — BME280 para pressão do ar, umidade do solo para as plantas
  • Disparar automações — “se temperatura > 30°C, ligue o ventilador”
  • Ir para bateria — adicione o modo deep sleep para meses de operação

Leave a Reply

Your email address will not be published. Required fields are marked *