#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include <ESP8266WebServer.h>
#define DHTPIN 2
#define DHTTYPE DHT22
#define LED_T 12 // Pino do LED da temperatura
#define LED_U 7 // Pino do LED da umidade
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
bool isAlertActive = false; // Flag para controlar se o alerta está ativo
ESP8266WebServer server(80);
void setup() {
lcd.init(); // Inicializa o display LCD
lcd.backlight(); // Liga a iluminação do LCD
lcd.print("Temp: "); // Exibe "Temp: " na primeira linha do LCD
lcd.setCursor(0, 1); // Move o cursor para a segunda linha do LCD
lcd.print("Umidade: "); // Exibe "Humidade: " na segunda linha do LCD
dht.begin(); // Inicializa o sensor DHT
pinMode(LED_T, OUTPUT); // Define o pino do LED de temperatura como saída
pinMode(LED_U, OUTPUT); // Define o pino do LED de umidade como saída
// Define as rotas para a página web
server.on("/", HTTP_GET, handleRoot);
server.begin();
}
void loop() {
server.handleClient(); // Lida com as solicitações da página web
float temperatura = dht.readTemperature(); // Lê a temperatura do sensor
float umidade = dht.readHumidity(); // Lê a umidade do sensor
if (!isnan(temperatura) && !isnan(umidade)) { // Verifica se os dados do sensor são válidos
lcd.setCursor(6, 0); // Move o cursor para a posição 6 na primeira linha
lcd.print(temperatura, 1); // Exibe a temperatura com uma casa decimal e "C"
lcd.print("C");
lcd.setCursor(10, 1); // Move o cursor para a posição 10 na segunda linha
lcd.print(umidade, 1); // Exibe a umidade com uma casa decimal e "%"
lcd.print(" %");
if (temperatura > 40.0) {
digitalWrite(LED_T, HIGH); // Liga o LED da temperatura
} else {
digitalWrite(LED_T, LOW); // Desliga o LED da temperatura
}
if (umidade < 30.0) {
digitalWrite(LED_U, HIGH); // Liga o LED da umidade
} else {
digitalWrite(LED_U, LOW); // Desliga o LED da umidade
}
if (temperatura > 30.0) {
if (!isAlertActive) {
lcd.setCursor(12, 0); // Move o cursor para a posição 12 na primeira linha
lcd.print("Alto!!"); // Exibe "AL!!" como alerta
isAlertActive = true; // Define a bandeira de alerta como verdadeira
}
} else {
lcd.setCursor(12, 0); // Move o cursor para a posição 12 na primeira linha
lcd.print(" "); // Limpa a mensagem de alerta
isAlertActive = false; // Limpa a bandeira de alerta
}
} else {
lcd.setCursor(0, 0); // Move o cursor para a posição 0 na primeira linha
lcd.print("Erro no Sensor!"); // Exibe "Erro no Sensor!" como mensagem de erro
lcd.setCursor(0, 1); // Move o cursor para a posição 0 na segunda linha
lcd.print("Verifique a Conexão!"); // Exibe "Verifique a Conexão!" como mensagem de erro
}
delay(2000); // Aguarda 2 segundos antes de realizar a próxima leitura
}
void handleRoot() {
String html = "<html><body>";
html += "<h1>Leituras do Sensor:</h1>";
html += "<p>Temperatura: " + String(dht.readTemperature(), 1) + " C</p>";
html += "<p>Umidade: " + String(dht.readHumidity(), 1) + " %</p>";
html += "</body></html>";
server.send(200, "text/html", html);
}
Loading
esp-01
esp-01