#define BLYNK_TEMPLATE_ID "TMPL6rgBKXEpG"
#define BLYNK_TEMPLATE_NAME "control system"
#define BLYNK_AUTH_TOKEN "ZcJbqKoZKTg3JgrKnYYRfbUOH2iUuWuF"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include "DHTesp.h"
#include <LiquidCrystal_I2C.h>
#include <BlynkSimpleEsp32_SSL.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define cooling 19
#define Alarms 18
#define Ventilation 5
#define DoorControl 4
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
const int DHT_PIN = 15;
BlynkTimer timer;
DHTesp dhtSensor;
int waterSen;
int PIR;
int doorSw;
int Temp;
int Hum;
int mq2;
int vol;
void myTimerEvent() {
Blynk.virtualWrite(V1,vol);
Blynk.virtualWrite(V6,PIR);
Blynk.virtualWrite(V7,Temp);
Blynk.virtualWrite(V8,Hum);
Blynk.virtualWrite(V9,waterSen);
Blynk.virtualWrite(V10,doorSw);
}
BLYNK_WRITE(V0) {
int value = param.asInt(); // Get the value from the app
digitalWrite(DoorControl,value);
}
/*BLYNK_WRITE(V1) {
int value = param.asInt(); // Get the value from the app
digitalWrite(Ventilation,value);
}
*/
void sendSensor() {
}
void setup() {
Serial.begin(115200);
delay(10);
lcd.init(); // initialize the lcd
lcd.backlight();
lcd.clear(); // clear display
lcd.setCursor(6, 0); // move cursor to (3, 0)
lcd.print("Welcome");
Blynk.begin(BLYNK_AUTH_TOKEN, WIFI_SSID, WIFI_PASSWORD);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(32, INPUT_PULLUP);
pinMode(35, INPUT);
pinMode(25, INPUT);
timer.setInterval(1000L, sendSensor);
timer.setInterval(1000L, myTimerEvent);
pinMode(cooling, OUTPUT);
pinMode(Alarms, OUTPUT);
pinMode(Ventilation, OUTPUT);
pinMode(DoorControl, OUTPUT);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Temp=data.temperature;
Hum=data.humidity;
lcd.setCursor(0, 0); // move cursor to (3, 0)
lcd.print("Temp:" + String(data.temperature,1) + "C ");
lcd.setCursor(12, 0);
lcd.print("Hum:" + String(data.humidity,0) + "%");
waterSen=analogRead(34);
if(waterSen>200){
waterSen=1;
}
else{
waterSen=0;
}
Serial.print("water");
Serial.println(waterSen);
PIR=digitalRead(35);
mq2=digitalRead(25);
Serial.print("PIR ");
Serial.println(PIR);
lcd.setCursor(0, 1); // move cursor to (3, 0)
lcd.print("water:" + String(waterSen) );
lcd.setCursor(8, 1);
lcd.print("PIR:" + String(PIR) );
lcd.setCursor(14, 1);
lcd.print("MQ2:" + String(mq2) );
doorSw=digitalRead(32);
Serial.println(doorSw);
Serial.println();//voltage
lcd.setCursor(0, 2);
lcd.print("door:" + String(doorSw) );
lcd.setCursor(10, 2);
vol=map(analogRead(33),0,4096,0,250);
lcd.print("volt:" + String(vol));
lcd.setCursor(0, 3);
lcd.print("cool:" + String(digitalRead(cooling)) );
lcd.setCursor(10, 3);
lcd.print("vent:" + String(digitalRead(Ventilation)) );
if((waterSen)||(mq2)){
digitalWrite(Alarms,1);
}
else{
digitalWrite(Alarms,0);
}
if(Temp>35){
digitalWrite(cooling,1);
}
else{
digitalWrite(cooling,0);
}
delay(100); // Wait for a new reading from the sensor (DHT22 has ~0.5Hz sample rate)
Blynk.run();
timer.run();
Serial.println("---");
}