top of page

IoT Cloud Web server Based Garbage Monitoring System(Optional Email, Mobile notification)

Updated: Dec 29, 2022

Here to make the Internet of Things an IoT based garbage bin level monitoring system. In this level monitoring using myDevices Cayenne, canvas gauge in HTML page and LCD. The real time garbage fill level can be monitored via internet. The IOT system uses non-contact method (ultrasonic sensor based) for measuring garbage level and it can detect solid, semi-solid and liquid waste level up to 20cm and capable of 400cm.

One of the main concerns with our environment has been solid waste management which impacts the health and environment of our society. The detection, monitoring and management of wastes is one of the primary problems of the present era. The traditional way of manually monitoring the wastes in waste bins is a cumbersome process and utilizes more human effort, time and cost which can easily be avoided with our present technologies. This is our solution, a method in which waste management is automated. This is our IoT Garbage Monitoring system, an innovative way that will help to keep the cities clean and healthy.

Follow on to see how you could make an impact to help clean your community, home or even surroundings, taking us a step closer to a better way of living.

Components Required

  • HC SR04- Ultrasonic sensor - 1 no

  • 20x4-I2C- LCD display - 1 no

  • ESP8266 12e- NodeMCU - 1 no

  • Push Button Switch - 1 no

Circuit diagram

Refer Previous Post for More details:

Configure Wifi setting:

Follow the Steps.

  • Open wifi setting in mobile

  • Select "Garbage Bin" device

  • After Connected device without internet, open Webpage

  • Enter IP, after loading Select Wifi Configure(No scan)

  • Confirm Switch On Your router, Select Your router

  • Enter your Wifi credentials SSID, Password.

  • After entered your credentials, the ESP8266 connected to the router.

  • now ESP 8266 IP address displayed in LCD display.

Bin height:

How change to Bin height?. first Restart ESP8266 Board using "rst" button. after restarting Press Push button connected in NodeMCU pin D0 and Hold for 5 seconds. Now Bin Height is set in cm and displayed in LCD display.

Bin height value stored in EEPROM, so After Power off condition the value is retained.

Note: When setting the Bin height, bin shall be empty otherwise reading goes wrongly.

Web server:

Open Browser and Enter IP address displayed in the LCD. Example:

IoT Cloud (My devices .com)

Login Credential and select device "smart Bin" and get result and customize your self.

IoT Cloud (My devices .com)

Data stored in Cloud server

The real time data available in graph format.

IoT Cloud (My devices .com)

Email and Mobile notification available in User menu tab, Triggers and alerts.

IoT Cloud (My devices .com)

Enter new trigger and add threshold value, recipients email, mobile number for notification.

when reaching Threshold limit, cayenne server send the Notification alert to recipients.

LCD Display.

4 line 20 chracter LCD display used in this project.

Line 1. Project name

Line 2. IP address for Web Server- ESP8266

Line 3. Bin height in cm.

Line 4. Waste level full status in Percentage format.

Installing the Arduino_Library

LiquidCrystal_I2C.h : you need to Downloadand install the LiquidCrystal_I2C library.

In your Arduino IDE, to install the libraries go to Sketch > Include Library > Add .ZIP library… and select the library you’ve just downloaded.

After installing the required libraries, copy the following code to your Arduino IDE.

Subscribe and Download code.

Code for arduino Interface with LCD and ultrasonic sensor.

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);

#include <Ultrasonic.h>

Ultrasonic ultrasonic(D5,D6);

int distance;

int buttonState = 0;

int percentage;

float Level,TankHeight;

void setup() {


lcd.init(); // initialize the lcd

// Print a message to the LCD.


distance =;

TankHeight = distance;







lcd.print("Bin Height Set at cm");


lcd.print(" ");







lcd.print("Bin Height Cm:");




Level = distance/TankHeight;


void loop() {

distance =;

Serial.print("Distance in CM : ");


percentage = ((1-(distance/TankHeight))*100);


lcd.print("Waste Full %:");


lcd.print(" ");



1,306 views0 comments


bottom of page