#define BLYNK_TEMPLATE_ID "TMPL34IzShutt"
#define BLYNK_TEMPLATE_NAME "Smart campus waste management system"
#define BLYNK_AUTH_TOKEN "6vTf3UckuByhibTewrKcGHRZzaEsuLip"
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
unsigned int value = 0;
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Your WiFi credentials.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// Pins
#define TRIG_PIN 4
#define ECHO_PIN 0
#define LED_PIN RX
#define SPEAKER_PIN 17
#define DHT_PIN 15
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
void sendSensorData() {
// Ultrasonic sensor
long duration, distance;
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distance = (duration / 2) / 29.1; // Convert to cm
// DHT sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Send data to Blynk
Blynk.virtualWrite(V2, distance);
Blynk.virtualWrite(V0, temperature);
Blynk.virtualWrite(V3, humidity);
// Check if bin is full
if (distance < 10) {
Blynk.virtualWrite(V1,"Waste bin is full!");
digitalWrite(LED_PIN, HIGH);
tone(SPEAKER_PIN,500,1000);
delay(1000);
}
else{
Blynk.virtualWrite(V1,"Bin has Space.");
digitalWrite(LED_PIN, LOW);
tone(SPEAKER_PIN,100,1000);
delay(1000);
}
}
BlynkTimer timer;
// This function is called every time the Virtual Pin 0 state changes
BLYNK_WRITE(V4)
{
Serial.println("Inside Blynk Write");
if(param.asInt() == 1)
{
Serial.println("Blynk Write: Value is 1");
digitalWrite(LED_PIN, HIGH);
Blynk.virtualWrite(V1,"Started Successfully.");
sendSensorData();
}
else
{
Serial.println("Blynk Write: Value is 0");
digitalWrite(LED_PIN, LOW);
}
}
// This function is called every time the device is connected to the Blynk.Cloud
BLYNK_CONNECTED()
{
Blynk.syncVirtual(V4);
Serial.println("Inside Blynk Connected");
}
// This function sends Arduino's uptime every second to Virtual Pin 2.
void myTimerEvent()
{
Blynk.virtualWrite(V4, millis() / 1000);
}
void setup()
{
pinMode(5, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
pinMode(SPEAKER_PIN, OUTPUT);
// Begin.
Serial.begin(115200);
Serial.println("Serial Prints Starts...");
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
dht.begin();
// Set a timer to send sensor data every 10 seconds
timer.setInterval(10000L, sendSensorData);
}
void loop()
{
Blynk.run();
timer.run();
}