#include <WiFi.h>
#include "DHT.h"
#define PIN_DHT 15
#define PIN_LED_VERDE 25
#define PIN_LED_AMARELO 26
#define PIN_LED_VERMELHO 27
#define DHTTYPE DHT22
DHT dht(PIN_DHT, DHTTYPE);
const char* DEVICE_ID = "ESP32_SALA_01";
const char* WIFI_SSID = "Wokwi-GUEST";
const char* WIFI_PASS = "";
void conectarWiFi() {
Serial.print("Conectando ao Wi-Fi ");
Serial.println(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASS, 6);
int tentativas = 0;
while (WiFi.status() != WL_CONNECTED && tentativas < 20) {
delay(500);
Serial.print(".");
tentativas++;
}
Serial.println();
if (WiFi.status() == WL_CONNECTED) {
Serial.println("Wi-Fi conectado!");
Serial.print("Dispositivo: ");
Serial.println(DEVICE_ID);
Serial.print("IP: ");
Serial.println(WiFi.localIP());
} else {
Serial.println("Falha na conexao Wi-Fi (seguindo sem rede).");
}
}
void apagarLeds() {
digitalWrite(PIN_LED_VERDE, LOW);
digitalWrite(PIN_LED_AMARELO, LOW);
digitalWrite(PIN_LED_VERMELHO, LOW);
}
void atualizarEstado(float temp) {
const char* status;
const char* ledAtivo;
apagarLeds();
if (temp < 25.0) {
status = "NORMAL";
ledAtivo = "VERDE";
digitalWrite(PIN_LED_VERDE, HIGH);
} else if (temp <= 30.0) {
status = "ATENCAO";
ledAtivo = "AMARELO";
digitalWrite(PIN_LED_AMARELO, HIGH);
} else {
status = "CRITICO";
ledAtivo = "VERMELHO";
digitalWrite(PIN_LED_VERMELHO, HIGH);
}
Serial.println("SISTEMA DE MONITORAMENTO IoT");
Serial.print("Dispositivo: ");
Serial.println(DEVICE_ID);
Serial.print("Temperatura: ");
Serial.print(temp, 2);
Serial.println(" C");
Serial.print("Status: ");
Serial.println(status);
Serial.print("LED Ativo: ");
Serial.println(ledAtivo);
Serial.println("--------------------------------");
}
void setup() {
Serial.begin(115200);
pinMode(PIN_LED_VERDE, OUTPUT);
pinMode(PIN_LED_AMARELO, OUTPUT);
pinMode(PIN_LED_VERMELHO, OUTPUT);
apagarLeds();
dht.begin();
conectarWiFi();
}
void loop() {
float temperatura = dht.readTemperature();
if (isnan(temperatura)) {
Serial.println("Erro ao ler o DHT22!");
} else {
atualizarEstado(temperatura);
}
delay(2000);
}