//pin diagram
'''
Relay 1: GPIO 4
Relay 2: GPIO 5
Relay 3: GPIO 6
Relay 4: GPIO 7
Relay 5: GPIO 8
Relay 6: GPIO 9
Relay 7: GPIO 10
Relay 8: GPIO 11
Gas Sensor: Analog A0
Buzzer: GPIO 12
DHT11: GPIO 2
LCD (I2C SDA): GPIO 21
LCD (I2C SCL): GPIO 22
Fingerprint Sensor (I2C SDA): GPIO 19
Fingerprint Sensor (I2C SCL): GPIO 23
Servo Motor: GPIO 13
'''
//Include the library files
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6uk3UjcbZ"
#define BLYNK_TEMPLATE_NAME "My Home"
#define BLYNK_AUTH_TOKEN "jDoo8u8-mP0kUDBxoHjSKOlSk8hjq39-"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <SimpleTimer.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_Fingerprint.h>
#include <Servo.h>
char auth[] = "jDoo8u8-mP0kUDBxoHjSKOlSk8hjq39-";
//Enter your WIFI SSID and password
char ssid[] = "Akib";
char pass[] = "iamnotrobot";
int relay1Pin = 4; // GPIO pin for red LED relay
int relay2Pin = 5; // GPIO pin for blue LED relay
int relay3Pin = 6; // GPIO pin for fan relay
int relay4Pin = 7; // GPIO pin for door lock relay
int relay5Pin = 8; // GPIO pin for relay 5
int relay6Pin = 9; // GPIO pin for relay 6
int relay7Pin = 10; // GPIO pin for relay 7
int relay8Pin = 11; // GPIO pin for relay 8
int gasSensorPin = A0; // Analog pin for gas sensor
int buzzerPin = 12; // GPIO pin for buzzer
#define DHTPIN 2 // GPIO pin for DHT11 sensor
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 columns, 2 rows
Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Wire1, 0x42); // Use Wire1 for fingerprint sensor
Servo doorServo;
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
pinMode(relay1Pin, OUTPUT);
pinMode(relay2Pin, OUTPUT);
pinMode(relay3Pin, OUTPUT);
pinMode(relay4Pin, OUTPUT);
pinMode(relay5Pin, OUTPUT);
pinMode(relay6Pin, OUTPUT);
pinMode(relay7Pin, OUTPUT);
pinMode(relay8Pin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
Wire1.begin(19, 23); // Start I2C for fingerprint sensor (SDA: GPIO 19, SCL: GPIO 23)
finger.begin(57600);
doorServo.attach(13); // Attach servo to pin 13
timer.setInterval(10000L, sendSensorData); // Send sensor data every 10 seconds
}
void loop() {
Blynk.run();
timer.run();
}
void sendSensorData() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
Blynk.virtualWrite(V4, humidity); // Virtual Pin V4 for humidity
Blynk.virtualWrite(V5, temperature); // Virtual Pin V5 for temperature
int gasValue = analogRead(gasSensorPin);
Blynk.virtualWrite(V6, gasValue); // Virtual Pin V6 for gas value
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print("%");
if (gasValue > 500) { // Adjust threshold as needed
Blynk.virtualWrite(V7, "Gas Detected!"); // Virtual Pin V7 for gas warning
lcd.setCursor(0, 1);
lcd.print("Warning: Gas!");
digitalWrite(relay1Pin, HIGH); // Red LED ON
digitalWrite(buzzerPin, HIGH); // Buzzer ON
} else {
Blynk.virtualWrite(V7, "No Gas Detected"); // Virtual Pin V7 for no gas warning
digitalWrite(relay1Pin, LOW); // Red LED OFF
digitalWrite(buzzerPin, LOW); // Buzzer OFF
}
}
// ... Other Blynk functions and relay control functions ...
BLYNK_WRITE(V12) {
String command = param.asStr();
if (command == "unlock_door") {
if (fingerprintMatch()) {
Blynk.virtualWrite(V13, "Door Unlocked");
doorServo.write(90); // Open the door
delay(2000);
doorServo.write(0); // Close the door after 20 seconds
delay(20000);
doorServo.write(90); // Close the door after 20 seconds
delay(2000);
doorServo.write(0); // Lock the door
digitalWrite(relay4Pin, HIGH); // Door lock relay ON
} else {
Blynk.virtualWrite(V13, "Try Again");
}
}
}
bool fingerprintMatch() {
uint8_t p = finger.getImage();
if (p != FINGERPRINT_OK) {
return false;
}
p = finger.image2Tz();
if (p != FINGERPRINT_OK) {
return false;
}
p = finger.fingerFastSearch();
if (p == FINGERPRINT_OK) {
return true;
} else {
return false;
}
}
}