#include <esp32Servo.h>
#include <DHT.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
// **Define Pins**
#define PIR_PIN 4
#define ULTRASONIC_TRIG 5
#define ULTRASONIC_ECHO 18
#define LED_PIN 19
#define BUZZER_PIN 21
#define SERVO_PIN 22
#define MQ_SENSOR_PIN 34
#define DHT_PIN 23
#define RELAY_PIN 26 // For TV & AC Control
#define DHTTYPE DHT22
// **WiFi & Blynk**
char auth[] = "Your_Blynk_Auth_Token";
char ssid[] = "Your_WiFi_Name";
char pass[] = "Your_WiFi_Password";
Servo doorServo;
DHT dht(DHT_PIN, DHTTYPE);
void setup() {
Serial.begin(115200);
pinMode(PIR_PIN, INPUT);
pinMode(ULTRASONIC_TRIG, OUTPUT);
pinMode(ULTRASONIC_ECHO, INPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
doorServo.attach(SERVO_PIN);
doorServo.write(0); // Door starts closed
dht.begin();
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
int pirState = digitalRead(PIR_PIN);
int smokeLevel = analogRead(MQ_SENSOR_PIN);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// **1️⃣ Automatic Light & Fan Control**
digitalWrite(LED_PIN, pirState ? HIGH : LOW);
// **2️⃣ Automatic Door Opening with Ultrasonic**
digitalWrite(ULTRASONIC_TRIG, LOW);
delayMicroseconds(2);
digitalWrite(ULTRASONIC_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(ULTRASONIC_TRIG, LOW);
long duration = pulseIn(ULTRASONIC_ECHO, HIGH, 30000); // Timeout after 30ms
int distance = (duration > 0) ? (duration * 0.034 / 2) : 100; // Default to 100cm if timeout
if (distance < 30) { // If object is close, open door
doorServo.write(90);
delay(2000);
doorServo.write(0);
}
// **3️⃣ Cloth Protection using Weather Monitoring**
if (humidity > 85) {
Serial.println("Rain Detected! Move Clothes Inside.");
}
// **4️⃣ TV & AC Control via Blynk App**
Blynk.virtualWrite(V1, String("Temperature: ") + temperature + "°C");
Blynk.virtualWrite(V2, String("Humidity: ") + humidity + "%");
// **5️⃣ Smoke Detection & Alert**
if (smokeLevel > 400) {
digitalWrite(BUZZER_PIN, HIGH);
Serial.println("Smoke Detected! Alert Sent.");
Blynk.logEvent("smoke_alert", "🔥 Smoke Alert in Home!");
} else {
digitalWrite(BUZZER_PIN, LOW);
}
delay(1000);
}