#define BLYNK_TEMPLATE_ID "TMPL2aLuDKjqL"
#define BLYNK_TEMPLATE_NAME "Iot cloud teste"
#define BLYNK_AUTH_TOKEN "imtiaHboIgl-19eh7FKAuJB4Bz_QqZaj"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#define DHTPIN 15 // Pino onde o sensor DHT está conectado
#define DHTTYPE DHT22 // Tipo do sensor DHT (DHT11 ou DHT22)
#define LEDPIN 2 // Pino onde o LED está conectado
#define LDRPIN 36 // Pino onde o LDR está conectado
#define TEMPERATURE_THRESHOLD 40 // Limite para notificação de temperatura alta
#define LUMINOSITY_THRESHOLD 500 // Limite para notificação de baixa luminosidade
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
bool tempNotificationSent = false; // Flag para controle de notificação de temperatura
bool lightNotificationSent = false; // Flag para controle de notificação de luminosidade
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Função para enviar dados do sensor
void sendSensorData() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
int rawLuminosity = analogRead(LDRPIN);
int luminosity = map(rawLuminosity, 0, 4095, 0, 1000);
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Falha ao ler o sensor DHT!");
return;
}
Serial.print("Temperatura: ");
Serial.print(temperature);
Serial.print("°C Umidade: ");
Serial.print(humidity);
Serial.print("% Luminosidade: ");
Serial.println(luminosity);
Blynk.virtualWrite(V0, temperature); // Enviar temperatura para o pino virtual V0
Blynk.virtualWrite(V1, humidity); // Enviar umidade para o pino virtual V1
Blynk.virtualWrite(V3, luminosity); // Enviar luminosidade para o pino virtual V3
if (temperature > TEMPERATURE_THRESHOLD && !tempNotificationSent) {
Blynk.logEvent("temperatura_alta", String("Temperatura alta: ") + temperature + "°C");
tempNotificationSent = true; // Marca que a notificação foi enviada
} else if (temperature <= TEMPERATURE_THRESHOLD) {
tempNotificationSent = false; // Reseta a flag quando a temperatura volta ao normal
}
if (luminosity < LUMINOSITY_THRESHOLD && !lightNotificationSent) {
Blynk.logEvent("luminosidade_baixa", String("Luminosidade baixa: ") + luminosity);
lightNotificationSent = true; // Marca que a notificação foi enviada
} else if (luminosity >= LUMINOSITY_THRESHOLD) {
lightNotificationSent = false; // Reseta a flag quando a luminosidade volta ao normal
}
}
// Função para controlar o LED
BLYNK_WRITE(V2) {
int ledState = param.asInt();
digitalWrite(LEDPIN, ledState);
if (ledState == 1)
Serial.println("LED Ligado");
else
Serial.println("LED Desligado");
}
void setup() {
Serial.begin(115200);
pinMode(LEDPIN, OUTPUT); // Define o pino do LED como saída
analogReadResolution(12);
Blynk.begin(auth, ssid, pass);
dht.begin();
timer.setInterval(5000L, sendSensorData); // Enviar dados a cada 5 segundos
}
void loop() {
Blynk.run();
timer.run(); // Executar BlynkTimer
}