#include <DHT22.h>
#include <LiquidCrystal_I2C.h>
#include <RTClib.h>
#include <Servo.h>
#include <Wire.h>
const int trigger_pin = 3;
const int echo_pin = 5;
const int buzzer = 10;
const int servo_pin = 9;
const int data_pin = 8;
const int ledPin_room = 13;
const int ledPin_rtc = 12;
const int minimum_dist = 350;
float distance, duration;
String decision_room;
DHT22 dht(data_pin);
LiquidCrystal_I2C lcd(0x27, 20, 4);
RTC_DS1307 rtc;
Servo myservo;
void setup() {
lcd.init();
lcd.backlight();
rtc.begin();
lcd.println("A Home Security and");
delay(500);
lcd.setCursor(0,1);
lcd.println("Auto-Kettle System..");
delay(500);
lcd.setCursor(0,2);
lcd.println("Made By :-");
delay(500);
lcd.setCursor(0,3);
lcd.println("Team MITRA !!");
delay(5000);
lcd.clear();
//dht.begin();
myservo.attach(servo_pin);
myservo.write(0);
pinMode(buzzer, OUTPUT);
digitalWrite(buzzer, LOW);
pinMode(trigger_pin, OUTPUT);
pinMode(echo_pin, INPUT);
if (!rtc.isrunning()) {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
pinMode(ledPin_room, OUTPUT);
pinMode(ledPin_rtc, OUTPUT);
}
void loop() {
// Code for the working of DHT22 :-
float temp = dht.getTemperature();
float humidity = dht.getHumidity();
lcd.setCursor(0,0);
lcd.print("Temp : ");
lcd.print(temp);
lcd.println(" C");
delay(1000);
if(temp>70) {
tone(buzzer, 2000);
delay(500);
noTone(buzzer);
}
digitalWrite(trigger_pin, LOW);
delayMicroseconds(2);
digitalWrite(trigger_pin, HIGH);
delayMicroseconds(10);
digitalWrite(trigger_pin, LOW);
duration = pulseIn(echo_pin, HIGH);
distance = duration / 58.2;
if(distance < minimum_dist) {
decision_room = "ON";
digitalWrite(ledPin_room, HIGH);
delay(500);
}
else{
decision_room = "OFF";
digitalWrite(ledPin_room, LOW);
delay(500);
}
lcd.setCursor(0,1);
lcd.print("Room Lights : ");
lcd.println(decision_room);
delay(500);
lcd.setCursor(0,2);
lcd.print("Room Fans : ");
lcd.println(decision_room);
delay(500);
// Code for the working of RTC Module :-
DateTime now = rtc.now();
int currentHour = now.hour();
int currentMinute = now.minute();
lcd.setCursor(0,3);
lcd.println("This will save ENERGY !!");
if (
(currentHour == 00 && currentMinute >= 0 && currentMinute <= 05) ||
(currentHour == 14 && currentMinute >= 30 && currentMinute <= 35)
) {
digitalWrite(ledPin_rtc, HIGH);
} else {
digitalWrite(ledPin_rtc, LOW);
}
for(int i=0; i<=180; i++){
myservo.write(i);
delay(10);
}
for(int i=180; i>=0; i--){
myservo.write(i);
delay(10);
}
}