#define BLYNK_TEMPLATE_ID "TMPL3v7LlK874"
#define BLYNK_TEMPLATE_NAME "smart campus waste management system with blynk"
#include <LiquidCrystal.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = "ZhW0EitF223jx_np5bMUQKpmyU04uFi-"; // Enter your authentication token here
// WiFi credentials
char ssid[] = "YourNetworkSSID";
char pass[] = " ";
// LCD pin configuration
const int rs = 23, en = 22, d4 = 19, d5 = 18, d6 = 5, d7 = 4;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// Ultrasonic sensor pins
const int trigPin1 = 5, echoPin1 = 18;
const int trigPin2 = 17, echoPin2 = 16;
const int trigPin3 = 4, echoPin3 = 2;
// Buzzer pin
const int buzzerPin = 21;
void setup() {
Serial.begin(9600);
// Connect to WiFi
Blynk.begin(auth, ssid, pass);
// Initialize the LCD
lcd.begin(16, 2);
// Initialize the buzzer
pinMode(buzzerPin, OUTPUT);
// Initialize ultrasonic sensors
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3, INPUT);
}
void loop() {
Blynk.run();
// Measure distance from each sensor
long distance1 = measureDistance(trigPin1, echoPin1);
long distance2 = measureDistance(trigPin2, echoPin2);
long distance3 = measureDistance(trigPin3, echoPin3);
// Display distances on the LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("B1:");
lcd.print(distance1);
lcd.print("cm ");
lcd.setcursor(8,0);
lcd.print("B2");
lcd.print(distance2);
lcd.print("cm");
lcd.setCursor(0, 1);
lcd.print("B3:");
lcd.print(distance3);
lcd.print("cm");
// Send distances to Blynk
Blynk.virtualWrite(V1, distance1); // Virtual pin V1 represents distance of Bin 1
Blynk.virtualWrite(V2, distance2); // Virtual pin V2 represents distance of Bin 2
Blynk.virtualWrite(V3, distance3); // Virtual pin V3 represents distance of Bin 3
// Check if any bin is full (e.g., distance < 10 cm)
if (distance1 < 10 || distance2 < 10 || distance3 < 10) {
digitalWrite(buzzerPin, HIGH); // Activate buzzer
Blynk.notify("Bin is full!"); // Send notification to Blynk app
}
else {
digitalWrite(buzzerPin, LOW); // Deactivate buzzer
}
delay(1000); // Wait for 1 second before the next measurement
}
long measureDistance(int trigPin, int echoPin) {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
long distance = duration * 0.034 / 2;
return distance;
}