#define BLYNK_TEMPLATE_ID "TMPL3tN9cZ_Fc"
#define BLYNK_TEMPLATE_NAME "iot door lock unlock sytem"
#define BLYNK_AUTH_TOKEN "XcIdIT6Ij6YytIXXMosrWGmyVBf_ZXKr"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
Servo servo;
#define button1_pin 26
#define relay1_pin 13
#define servo_pin 12
int relay1_state = 0;
#define button1_vpin V1
BLYNK_CONNECTED() {
Blynk.syncVirtual(button1_vpin);
}
BLYNK_WRITE(button1_vpin) {
relay1_state = param.asInt();
if(relay1_state)
{ Serial.println("DOOR IS NOW OPENED");
digitalWrite(relay1_pin,HIGH);
servo.write(180);
delay(5000);
digitalWrite(relay1_pin,LOW);
servo.write(0);
Serial.println("DOOR IS NOW LOCKED");
}
}
void setup()
{
Serial.begin(115200);
pinMode(button1_pin, INPUT_PULLUP);
pinMode(relay1_pin, OUTPUT);
servo.attach(servo_pin, 500, 2400);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
Blynk.run();
timer.run();
listen_push_buttons();
}
void listen_push_buttons(){
if(digitalRead(button1_pin) == LOW){
delay(200);
control_relay(1);
Blynk.virtualWrite(button1_vpin, relay1_state); //update button state
}
}
void control_relay(int relay){
if(relay == 1){
relay1_state = !relay1_state;
digitalWrite(relay1_pin, HIGH);
Serial.println("DOOR IS NOW OPENED");
digitalWrite(relay1_pin,HIGH);
servo.write(180);
delay(5000);
digitalWrite(relay1_pin,LOW);
servo.write(0);
Serial.println("DOOR IS NOW LOCKED");
delay(50);
}
}