/* CONNECTION INSTRUCTION
email:[email protected] pass:kist@2024
V0:NOTIFICATION
V1:ENABLE/DISABLE SWITCH
V2:PHONE-NUMBER
*/
//#define BLYNK_PRINT Serial
#define sim Serial2
#define BLYNK_TEMPLATE_ID "TMPL26yFiVSAo"
#define BLYNK_TEMPLATE_NAME "SMART SHOP SECURITY SYSTEM"
#define BLYNK_AUTH_TOKEN "3EVWCum2YUmRaCBvz9SSZPZsNfkCAZvd"
#define relay 23
#define buzzer 4
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
String notification, pnum;
bool State;
uint8_t pir[4]={25,26,32,33};
void setup()
{
Serial.begin(115200);
delay(100);
sim.begin(9600);
delay(100);
pinMode(relay,OUTPUT);
pinMode(buzzer,OUTPUT);
digitalWrite(buzzer,LOW);
digitalWrite(relay,LOW);
Serial.println("Starting");
for (int i; i<4;i++) pinMode(pir[i], INPUT);
Blynk.begin(auth, ssid, pass);
Blynk.virtualWrite(V1,LOW);
Blynk.virtualWrite(V0,"SYSTEM INITIALIZED SUCCESSFULLY PRESS ENABLE BUTTON TO START");
}
void loop()
{
Blynk.run();
if(State)
{
if(get_data())
{
digitalWrite(relay,HIGH);
notification="DANGER! INTRUDER DETECTED";
Blynk.virtualWrite(V0,notification);
Alert(3);
makeCall(pnum);
}
else
{
digitalWrite(relay,LOW);
notification="YOU ARE SAFE";
Blynk.virtualWrite(V0,notification);
}
}
}
BLYNK_WRITE(V2)
{
String data=param.asString();
if(data!= pnum)
{
pnum=data;
}
}
BLYNK_WRITE(V1)
{
int data=param.asInt();
if(data!= State)
{
State=data;
}
}
bool get_data()
{
for (int i = 0; i < 4; i++)
{
boolean data = digitalRead(pir[i]);
if(data==HIGH)
{
Serial.print("Motion detected, sensor ");
Serial.print(i+1);
Serial.println(" triggered.");
return HIGH;
}
}
return LOW;
}
void send_update()
{
Blynk.virtualWrite(V0,notification);
delay(150);
}
void Alert(uint8_t num)
{
for(num;num>0;num--)
{
digitalWrite(buzzer,HIGH);
delay(1000);
digitalWrite(buzzer,LOW);
tone(buzzer, 100);
delay(500);
}
}
void makeCall(String phonenum)
{
sim.println("ATD"+pnum+";");
updateSerial();
Serial.println("NOW DIALING");
delay(20000);
sim.println("ATH");
updateSerial();
Serial.println("CALL ENDED");
}
void updateSerial()
{
delay(500);
while (Serial.available())
{
sim.write(Serial.read());
}
while(sim.available())
{
Serial.write(sim.read());
}
}