Tech Gyan Set
Published © MIT

IoT Based Smart Waste Monitoring System Using ESP32

A smart IoT garbage bin that alerts when it’s full. πŸ—‘οΈπŸ“‘

BeginnerFull instructions provided8 hours271
IoT Based Smart Waste Monitoring System Using ESP32

Things used in this project

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

1️⃣ Required Libraries

C/C++
πŸ”Ή Purpose:
WiFi library ESP32 ko internet se connect karti hai, aur PubSubClient MQTT broker se data send/receive karne ke liye use hoti hai.
/*
====================================================
1️⃣ REQUIRED LIBRARIES
====================================================
*/

#include <WiFi.h>          // WiFi connectivity ke liye
#include <PubSubClient.h>  // MQTT communication ke liye

πŸ”Ÿ Main Loop

C/C++
πŸ”Ή Purpose:
Ultrasonic sensor ke through garbage ka distance measure karta hai.
void loop() {

  if (!client.connected()) {
    reconnect();
  }

  client.loop();

  // Trigger ultrasonic pulse
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  long duration = pulseIn(ECHO_PIN, HIGH);
  float distance = duration * 0.034 / 2;

Untitled file

C/C++
  // Calculate fill percentage
  float fillPercent = ((binHeight - distance) / binHeight) * 100;

  if (fillPercent < 0) fillPercent = 0;
  if (fillPercent > 100) fillPercent = 100;
πŸ”Ή Purpose:
Measured distance ko percentage fill level me convert karta hai.

  Serial.println("------ Smart Garbage Bin ------");
  Serial.print("Distance: ");
  Serial.println(distance);
  Serial.print("Fill Level: ");
  Serial.print(fillPercent);
  Serial.println(" %");
πŸ”Ή Purpose:
Serial monitor par live data show karta hai debugging ke liye.

  client.publish(topic_level, String(fillPercent, 1).c_str());
πŸ”Ή Purpose:
Bin ka fill percentage MQTT broker par publish karta hai.

  if (fillPercent >= fullThreshold) {

    digitalWrite(BUZZER_PIN, HIGH);
    client.publish(topic_status, "BIN FULL");

    Serial.println("⚠ Bin is FULL!");
  }
  else {

    digitalWrite(BUZZER_PIN, LOW);
    client.publish(topic_status, "BIN NOT FULL");
  }
πŸ”Ή Purpose:
Agar bin 80% ya usse zyada full ho jaye to buzzer ON karta hai aur MQTT alert bhejta hai.

  delay(5000);
}
πŸ”Ή Purpose:
Har 5 second me reading update karta hai.

2️⃣ WiFi Credentials

C/C++
πŸ”Ή Purpose:
ESP32 ko local WiFi network se connect karne ke liye SSID aur password define kiya gaya hai.
/*
====================================================
2️⃣ WIFI SETTINGS
====================================================
*/

const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";

3️⃣ MQTT Configuration

C/C++
πŸ”Ή Purpose:
MQTT broker address aur topics define kiye gaye hain jaha bin status aur fill percentage publish hoga.
/*
====================================================
3️⃣ MQTT SETTINGS
====================================================
*/

const char* mqtt_server = "broker.hivemq.com";
const int mqtt_port = 1883;

const char* topic_status = "smartbin/status";
const char* topic_level  = "smartbin/level";

4️⃣ Pin Definitions

C/C++
#define BUZZER_PIN 4
πŸ”Ή Purpose:
Ultrasonic sensor aur buzzer ke GPIO pins define kiye gaye hain.
/*
====================================================
4️⃣ PIN DEFINITIONS
====================================================
*/

#define TRIG_PIN 5
#define ECHO_PIN 18
#define BUZZER_PIN 4

5️⃣ Bin Parameters

C/C++
πŸ”Ή Purpose:
Bin ki total height aur full alert percentage set kiya gaya hai. Iske base par fill level calculate hoga.
/*
====================================================
5️⃣ BIN PARAMETERS
====================================================
*/

float binHeight = 30.0;   // Dustbin ki total height (cm)
float fullThreshold = 80; // % fill hone par alert

6️⃣ Object Initialization

C/C++
πŸ”Ή Purpose:
WiFi aur MQTT communication ke liye required objects create kiye gaye hain.
WiFiClient espClient;
PubSubClient client(espClient);

7️⃣ WiFi Connect Function

C/C++
πŸ”Ή Purpose:
ESP32 ko WiFi network se connect karta hai aur successful connection ka status print karta hai.
void setup_wifi() {

  Serial.println("Connecting to WiFi...");
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nWiFi Connected");
}

8️⃣ MQTT Reconnect Function

C/C++
πŸ”Ή Purpose:
Agar MQTT connection disconnect ho jaye to automatically reconnect karta hai.
void reconnect() {

  while (!client.connected()) {

    Serial.println("Connecting to MQTT...");

    if (client.connect("SmartBinClient")) {
      Serial.println("MQTT Connected");
    } else {
      Serial.println("Retrying MQTT...");
      delay(2000);
    }
  }
}

9️⃣ Setup Function

C/C++
πŸ”Ή Purpose:
Initial hardware setup karta hai, pins configure karta hai, WiFi connect karta hai aur MQTT server set karta hai.
void setup() {

  Serial.begin(115200);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
  pinMode(BUZZER_PIN, OUTPUT);

  digitalWrite(BUZZER_PIN, LOW);

  setup_wifi();

  client.setServer(mqtt_server, mqtt_port);
}

Credits

Tech Gyan Set
32 projects β€’ 14 followers
Tech Gyan Set | IoT & Embedded Systems Creator | Arduino, ESP32, GSM & NodeMCU Projects | Smart Home & Real-Life Automation Tutorials
Thanks to Tech Gyan Set .

Comments