#define BLYNK_TEMPLATE_ID "TMPL3g-C2Rb1s"
#define BLYNK_TEMPLATE_NAME "SMART CAMPUS waste management system"
#define BLYNK_AUTH_TOKEN "3yKGFQ8KT-iOA8vI81tKuUwCuykEZlCv"
#define TRIGGER_PIN_1 12
#define ECHO_PIN_1 14
#define TRIGGER_PIN_2 16
#define ECHO_PIN_2 17
#define LED_PIN_1_ON 2
#define LED_PIN_1_OFF 0
#define LED_PIN_2_ON 4
#define LED_PIN_2_OFF 5
#define BUZZER_PIN_1 32
#define BUZZER_PIN_2 33
#include<Ultrasonic.h>
#include<BlynkSimpleEsp32.h>
Ultrasonic ultrasonic1(TRIGGER_PIN_1, ECHO_PIN_1);
Ultrasonic ultrasonic2(TRIGGER_PIN_2, ECHO_PIN_2);
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
char auth[] = "3yKGFQ8KT-iOA8vI81tKuUwCuykEZlCv";
void setup() {
Serial.begin(9600);
pinMode(LED_PIN_1_ON, OUTPUT);
pinMode(LED_PIN_1_OFF, OUTPUT);
pinMode(LED_PIN_2_ON, OUTPUT);
pinMode(LED_PIN_2_OFF, OUTPUT);
pinMode(BUZZER_PIN_1, OUTPUT);
pinMode(BUZZER_PIN_2, OUTPUT);
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
long distance1 = measureDistance(TRIGGER_PIN_1, ECHO_PIN_1);
long distance2 = measureDistance(TRIGGER_PIN_2, ECHO_PIN_2);
long a = 399 - distance1;
long b = 399 - distance2;
Serial.print("Bin1 fill level: ");
Serial.print(a);
Serial.print(" cm | Bin2 fill level: ");
Serial.print(b);
Serial.println(" cm");
Blynk.virtualWrite(V1, a ); // Send distance 1 to Blynk app
Blynk.virtualWrite(V2, b);
if (distance1 < 50) {
Serial.println("Bin1 is full!!. Don't put waste on it!!");
digitalWrite(LED_PIN_1_ON, HIGH); // Turn on LED 1
digitalWrite(LED_PIN_1_OFF, LOW); // Turn off LED 1
digitalWrite(BUZZER_PIN_1, HIGH);
tone(BUZZER_PIN_1, 100);
} else {
digitalWrite(LED_PIN_1_ON, LOW); // Turn off LED 1
digitalWrite(LED_PIN_1_OFF, HIGH); // Turn on LED 1
digitalWrite(BUZZER_PIN_1, LOW); // Turn off buzzer 1
}
if (distance2 < 50) {
Serial.println("Bin2 is full!!. Don't put waste on it!!");
digitalWrite(LED_PIN_2_ON, HIGH); // Turn on LED 2
digitalWrite(LED_PIN_2_OFF, LOW); // Turn off LED 2
digitalWrite(BUZZER_PIN_2, HIGH); // Turn on buzzer 2
tone(BUZZER_PIN_2, 100);
} else {
digitalWrite(LED_PIN_2_ON, LOW); // Turn off LED 2
digitalWrite(LED_PIN_2_OFF, HIGH); // Turn on LED 2
digitalWrite(BUZZER_PIN_2, LOW); // Turn off buzzer 2
}
delay(1000);
}
long measureDistance(int tp, int ep)
{
digitalWrite(tp, LOW);
delay(2);
digitalWrite(tp, HIGH);
delay(10);
digitalWrite(tp, LOW);
long duration = pulseIn(ep, HIGH);
long distance = duration * 0.034 / 2 ;
return distance;
}