#include <Servo.h>
// Define pins
#define PIR_SENSOR 2
#define LIGHT_RELAY 3
#define FAN_RELAY 4
//#define RAIN_SENSOR A0
#define SMOKE_SENSOR A1
//#define SOIL_SENSOR A2
#define WATER_PUMP 5
#define SERVO_PIN 6
Servo doorServo;
void setup() {
Serial.begin(9600);
pinMode(PIR_SENSOR, INPUT);
pinMode(LIGHT_RELAY, OUTPUT);
pinMode(FAN_RELAY, OUTPUT);
pinMode(WATER_PUMP, OUTPUT);
doorServo.attach(SERVO_PIN);
doorServo.write(0); // Door closed position
}
void loop() {
int motion = digitalRead(PIR_SENSOR);
int rain = analogRead(RAIN_SENSOR);
int smoke = analogRead(SMOKE_SENSOR);
int soilMoisture = analogRead(SOIL_SENSOR);
// Room Entry Detection
if (motion) {
digitalWrite(LIGHT_RELAY, HIGH);
digitalWrite(FAN_RELAY, HIGH);
} else {
digitalWrite(LIGHT_RELAY, LOW);
digitalWrite(FAN_RELAY, LOW);
}
// Rain Detection
if (rain > 500) {
Serial.println("Rain detected! Take necessary action.");
}
// Smoke Detection Alert
if (smoke > 400) {
Serial.println("Smoke detected! Alert sent to user.");
}
// Automatic Watering
if (soilMoisture < 300) {
digitalWrite(WATER_PUMP, HIGH);
} else {
digitalWrite(WATER_PUMP, LOW);
}
// Automatic Door
if (motion) {
doorServo.write(90); // Open door
delay(2000);
doorServo.write(0); // Close door
}
delay(500);
}