#define BLYNK_TEMPLATE_ID "TMPL3rtiveUJP"
#define BLYNK_TEMPLATE_NAME "dustbin"
#define BLYNK_AUTH_TOKEN "pvE3-QkJmwYfh_VBKlYHflSiMWYxXKl7"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
Servo myServo;
const int trigPin = 5;
const int echoPin = 18;
const int buzzer = 12;
long duration;
int distance;
void sendSensorData()
{
// Trigger ultrasonic sensor
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distance = ");
Serial.print(distance);
Serial.println(" cm");
// Send distance
Blynk.virtualWrite(V0, distance);
if (distance < 20)
{
Serial.println("LID OPEN");
myServo.write(90);
tone(buzzer, 1000);
Blynk.virtualWrite(V1, "OPEN");
Blynk.virtualWrite(V2, 1);
}
else
{
Serial.println("LID CLOSED");
myServo.write(0);
noTone(buzzer);
Blynk.virtualWrite(V1, "CLOSED");
Blynk.virtualWrite(V2, 0);
}
}
void setup()
{
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzer, OUTPUT);
myServo.attach(13);
myServo.write(0);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(1000L, sendSensorData);
}
void loop()
{
Blynk.run();
timer.run();
}