<!-- Inclua as bibliotecas necessárias -->
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <WiFi.h>
#include <PubSubClient.h>
<!-- Defina o pino do sensor DHT e o tipo de sensor DHT -->
#define DHTPIN 19
#define DHTTYPE DHT22
<!-- Substitua pelas credenciais da sua rede WiFi -->
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
<!-- Endereço IP do servidor MQTT -->
const char* mqtt_server = "192.168.0.13";
<!-- Criação dos objetos cliente WiFi e MQTT -->
WiFiClient espClient;
PubSubClient client(espClient);
<!-- Criação do objeto sensor DHT -->
DHT_Unified dht(DHTPIN, DHTTYPE);
void setup() {
<!-- Inicia a comunicação serial -->
Serial.begin(115200);
delay(10);
<!-- Inicia o sensor DHT -->
dht.begin();
<!-- Conecta ao WiFi -->
WiFi.begin(ssid, password);
<!-- Aguarda até a conexão ser estabelecida -->
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Conectando ao WiFi..");
}
Serial.println("WiFi conectado");
<!-- Configura o servidor MQTT -->
client.setServer(mqtt_server, 1883);
}
void loop() {
<!-- Se não estiver conectado ao servidor MQTT, tenta reconectar -->
if (!client.connected()) {
reconnect();
}
<!-- Mantém a conexão MQTT ativa -->
client.loop();
<!-- Cria um objeto para armazenar os dados do sensor -->
sensors_event_t event;
<!-- Lê a temperatura do sensor DHT -->
dht.temperature().getEvent(&event);
if (isnan(event.temperature)) {
Serial.println("Erro ao ler a temperatura!");
} else {
Serial.print("Temperatura: ");
Serial.print(event.temperature);
Serial.println(" *C");
<!-- Publica a temperatura no servidor MQTT -->
client.publish("esp32/dht22", String(event.temperature).c_str(), true);
}
<!-- Lê a umidade do sensor DHT -->
dht.humidity().getEvent(&event);
if (isnan(event.relative_humidity)) {
Serial.println("Erro ao ler a umidade!");
} else {
Serial.print("Umidade: ");
Serial.print(event.relative_humidity);
Serial.println("%");
<!-- Publica a umidade no servidor MQTT -->
client.publish("esp32/dht22", String(event.relative_humidity).c_str(), true);
}
<!-- Aguarda 2 segundos antes de ler novamente -->
delay(2000);
}
<!-- Função para reconectar ao servidor MQTT -->
void reconnect() {
<!-- Enquanto não estiver conectado, tenta reconectar -->
while (!client.connected()) {
Serial.print("Conectando ao MQTT...");
if (client.connect("ESP8266Client")) {
Serial.println("conectado");
} else {
Serial.print("falhou, rc=");
Serial.print(client.state());
Serial.println(" tentando novamente em 5 segundos");
delay(5000);
}
}
}
Equipe SuaDica