#define BLYNK_TEMPLATE_ID "TMPL6VOKAzU-g"
#define BLYNK_TEMPLATE_NAME "Smart Garage"
#define BLYNK_AUTH_TOKEN "_iHtjLxtMlzcDy8bYptCoDpWx1Eymfrf"
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
#define trigPin 14
#define echoPin 12
#define LED 27
#define cm_to_m 0.01
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
// Your WiFi credentials.
// Set password to "" for open networks.
char auth[] = "_iHtjLxtMlzcDy8bYptCoDpWx1Eymfrf";
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
long duration;
float distanceCm;
float distanceM;
Servo myServo;
BlynkTimer timer;
void setup()
{
// Ultrasonic sensor pin
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LED, OUTPUT);
Serial.begin(115200);
myServo.attach(5);
myServo.write(0-180);
timer.setInterval(1000L, sensorDataSend);
timer.setInterval(1000L, servoDataSend);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void sensorDataSend()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distanceCm = duration * 0.034 / 2;
distanceM = distanceCm * cm_to_m;
Serial.print("Distance = ");
Serial.println(distanceM);
Blynk.virtualWrite(V1, distanceM);
delay(1000);
}
void servoDataSend()
{
//int pos = 0;
int i;
if(distanceCm >= 0 && distanceCm <= 300)
{
i = 1;
Blynk.virtualWrite(V3, "OPEN");
myServo.write(180); // Open the garage door
//pos = 180;
if(i == 1)
{
digitalWrite(LED, HIGH);
Blynk.virtualWrite(V0, 1);
delay(500);
digitalWrite(LED, LOW);
Blynk.virtualWrite(V0, 0);
delay(500);
}
}
else
{
i = 0;
Blynk.virtualWrite(V3, "CLOSE");
myServo.write(0); // Close the garage door
//pos = 0;
}
//Blynk.virtualWrite(V2, pos);
}
void loop()
{
Blynk.run();
timer.run();
}