/* --- WIFI --- */
#include <WiFi.h>
#include <WiFiClient.h>
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
/* --- BLYNK --- */
#define BLYNK_FIRMWARE_VERSION "0.1.0"
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL42lW-UQrP"
#define BLYNK_TEMPLATE_NAME "Wokwi ESP32"
#define BLYNK_AUTH_TOKEN "Lm6d1CrJsALzagQrCDafTc__Jbl7CLuM"
#include <BlynkSimpleEsp32.h>
BlynkTimer timer;
/* --- DHT11 --- */
#include <DHT.h>
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
/* --- BUTTON --- */
#define BUTTON 17
int q=0;
/* --- LED --- */
#define SAFE_LED 32
#define ALERT_LED 33
WidgetLED ALERT(V0); // LED'den gelen veriler
/*
BLYNK_WRITE(V0) {
int as = param.asInt();
as ? digitalWrite(SAFE_LED, HIGH) : digitalWrite(SAFE_LED, LOW);
} */
void blink(int a)
{
digitalWrite(a,!digitalRead(a));
delay(200);
}
BLYNK_WRITE(V2) { // sıfırlama butonu
int bs = param.asInt();
bs ? q=1 : q=0;
}
void readbutton(int a)
{
if(digitalRead(a)==LOW)
{
delay(20);
if(digitalRead(a)==LOW)
{
q+=1;
if(q>=2) q=0;
while(digitalRead(a)==LOW);
}
}
}
void SendData() {
float h = dht.readHumidity();
float t = dht.readTemperature();
int b = digitalRead(BUTTON);
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
if (isnan(b)) {
Serial.println("Failed to read from BUTTON!");
return;
}
if(t<=20||t>=40||h<40||h>60||q!=0)
{
digitalWrite(SAFE_LED,LOW);
blink(ALERT_LED);
}
else digitalWrite(SAFE_LED,HIGH), digitalWrite(ALERT_LED,LOW);
Blynk.virtualWrite(V1, digitalRead(SAFE_LED)); //durum LEDi
Blynk.virtualWrite(V0, digitalRead(ALERT_LED)); //uyarı LEDi
Blynk.virtualWrite(V4, t); //sıcaklık göstergesi
Blynk.virtualWrite(V3, h); //nem göstergesi
}
void setup() {
pinMode(SAFE_LED, OUTPUT);
pinMode(ALERT_LED, OUTPUT);
pinMode(BUTTON, INPUT);
dht.begin();
Serial.begin(9600);
delay(1000);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD,6);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(300);
}
Serial.println();
Serial.print("Connected with IP: ");
Serial.println(WiFi.localIP());
Serial.println();
Blynk.begin(BLYNK_AUTH_TOKEN, WIFI_SSID, WIFI_PASSWORD);
timer.setInterval(100L, SendData);
}
void loop() {
readbutton(BUTTON);
Blynk.run();
timer.run();
}