#define BLYNK_TEMPLATE_ID "TMPL2k3czFiJB"
#define BLYNK_TEMPLATE_NAME "IoT HOME AUTOMATION"
#define BLYNK_AUTH_TOKEN "DiMU8-3iu5b1lgh7IQm956Dhsz5507PM"
// Comment this out to disable prints and save space
#define BLYNK_PRINT Serial
#define I2C_ADDR 0x27
#define LCD_COLUMNS 16
#define LCD_LINES 2
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
char auth[] = BLYNK_AUTH_TOKEN;
// WiFi credentials.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
WiFiClient client;
int sensorValue =0;
// Define pin assignments
//fire detection
#define ldrPin 34
#define relay1_pin 4
#define relay2_pin 19
int relay1_state = 0;
int relay2_state = 0;
//virtual pins
#define button1_vpin V4
#define button2_vpin V2
// DHT22
#define DHTPIN 15 // Pin where the DHT11 is connected
#define DHTTYPE DHT22 // DHT 11 sensor type
DHT dht(15, DHT22);
// This function is called every time the device is connected to the Blynk.Cloud
BLYNK_CONNECTED() {
Blynk.syncVirtual(button1_vpin);
Blynk.syncVirtual(button2_vpin);
}
BLYNK_WRITE(button1_vpin) {
relay1_state = param.asInt();
digitalWrite(relay1_pin, relay1_state);
}
BLYNK_WRITE(button2_vpin) {
relay2_state = param.asInt();
digitalWrite(relay2_pin, relay2_state);
}
// This function is called every time the Virtual Pin state change
void setup() {
// Debug console
//fire detection
pinMode(ldrPin, INPUT);
pinMode(relay1_pin, OUTPUT);
pinMode(relay2_pin, OUTPUT);
// During startup, all Relays should be turned OFF
digitalWrite(relay1_pin, HIGH);
digitalWrite(relay2_pin, HIGH);
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
dht.begin(); //dht starts
//ledcSetup(0, 1000, 8);
lcd.init();
lcd.backlight();
lcd.begin(20, 4);
lcd.setCursor(3, 0);
lcd.print("Home Automation");
}
void loop() {
// updateThingSpeak();
Blynk.run();
timer.run();
// Read temperature and humidity values from DHT sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
int sensor_fire = analogRead(ldrPin);
sensor_fire =map(sensor_fire,0,1023,100,300);
sensor_fire =map(sensor_fire,100,300,0,100);
// Display temperature and humidity on LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TEMP:");
lcd.setCursor(8, 0);
lcd.print(temperature);
lcd.setCursor(0, 1);
lcd.print("HUMID:");
lcd.setCursor(8, 1);
lcd.print(humidity);
lcd.setCursor(0, 2);
lcd.print("fire:");
lcd.setCursor(8, 2);
lcd.print(sensor_fire );
Serial.print("sensor!");
Serial.println(sensor_fire);
Blynk.virtualWrite(V1, humidity); // Send humidity value to Blynk App
Blynk.virtualWrite(V0, temperature); // Send temperature value to Blynk App
Blynk.virtualWrite(V3, sensor_fire); // Send temperature value to Blynk App
//fire detection part:
if((temperature >= 50)){ lcd.setCursor(0, 3);
lcd.print("fire detected.");
digitalWrite(relay1_pin, LOW);
digitalWrite(relay2_pin,LOW);
Serial.println(" fire detected. ");
}
else if ((sensor_fire >= 300) &&(temperature >= 40)) {
lcd.setCursor(0, 3);
lcd.print("fire detected.");
digitalWrite(relay1_pin, LOW);
digitalWrite(relay2_pin,LOW);
Serial.println(" fire detected. ");
} else {
lcd.setCursor(0, 3);
lcd.print(" no fire detected.");
Serial.println(" no fire detected. ");
}
}