How to make your smart bin smarter with IBM Bluemix

Have you ever wondered how does an IoT-enabled smart bin works? If not then this blog post will show you exactly how to build one for yourself and you can use it too.

These days, there is a huge impetus on smart city initiatives across the world. One of the popular use cases of Smart City is the concept of Smart Bin. As we all know, efficient waste management is a growing challenge in urban areas. Hence, this Smart Bin concept has also drawn a lot of attention as part of automating the public infrastructure across cities.

What is a Smart Bin?

A smart bin is a regular trash can, equipped with a sensor. Thus, such sensored trash cans can measure the level of trash contained in them and report that to the users.

Smart bin for Efficient Waste Management

How is this concept of smart bin useful to us? If you think of waste management and the level of coordination required for efficiently managing a public waste management system, then a smart bin can lead to.

  • Efficient monitoring by waste collection agencies.
  • That leads to no more sights of overfilled trash cans across the city streets
  • That leads us to the gradual elimination of health and environmental issues related to open disposal of trash.

And finally, it will lead to a cost reduction/per bin for the waste collection agency.

Sensored Trash Can System built on IBM Bluemix

In this post, we are going to show you a model setup of a sensored trash can system that is built atop the IBM Bluemix services. IBM Blumix cloud provides the middleware tools that can power IoT devices and applications. For this setup, we are going to use the IBM IoT Foundation services.

Check Out Our Offerings in Smart Waste Management

In case you are looking for a real solution around smart bins and waste management, refer to our Smart City Solution Offerings page.

Block Diagram of Sensored Trash Can System


Components of Sensored Trash Can System

As per the above block diagram, the main components of this system are

  1. Sensored trash can: Fitted with a hardware device that controls an ultrasonic sensor.
  2. Bluemix IoT Service: This is the IBM’s cloud service (IBM IoT Foundation) which orchestrates the messaging and communication between the trash can and the user’s mobile app.
  3. Mobile app: This is a mobile app through which the user can monitor the trash level inside the trash can. Here the user may refer to the waste collection agency personnel or anyone who is responsible for clearing the trash once the trash can fills up.
  4. Twilio: Twilio is a service that allows a device to send an SMS to any phone around the world. We have used this service to enable the trash can to send an SMS in case it is filled up almost till the top.

Trash Can Hardware Setup

The hardware device that needs to be fitted inside the trash can consists of the following

  1. Raspberry Pi 3
  2. Ultrasonic Sensor (HCSR04)

Raspberry Pi 3 is the popular single board computer, which has many GPIO pins to connect sensors peripheral devices. It has inbuilt WiFi via which we can connect to the Internet.

To sense the trash level within the trash can, we have used an ultrasonic sensor. You can get more info about the ultrasonic sensor(HC-SR04) here

The below schematic diagram shows how to connect the raspberry pi and the ultrasonic sensor.

Hardware Schematic Diagram


Setting up IBM Bluemix & Twilio Service

To demonstrate this smart bin concept, we will be taking help of the following web services from IBM Bluemix and Twilio. Follow the links below to create your account and setup these services.

  1. IBM IoT Foundation
    Follow this link to signup for the IBM Bluemix to get started.
    You can find the step by step procedure to setup the IBMIoTF service under your Bluemix account here
  2. Twilio
    You can sign up here for Twilio.
    Follow this link to get started with Twilio.

Project Setup

The software source code for this model trash can is available on GitHub.

There are two components of the software

  • : The client application for Raspberry Pi 3, written in Python. It is responsible for monitoring the trash level by controlling the ultrasonic sensor.  It is also responsible for sending the trash level data to mobile app display and as well as the SMS notification.
  • TrashCanApp : This is the mobile app. It is built on Cordova and displays a simple level illustration for the trash can which syncs in real time with the trash level reported by Raspberry Pi 3.

Refer the README file for step by step instruction on setting up the IBM IOT Foundation  (IBMIoTF) service to handle data forwarding between the trash can and mobile app. IBMIoTF uses the industry-standard MQTT protocol to connect devices and applications. MQTT is designed for the efficient exchange of data to-and-from devices in real-time.

To ensure that the client application at Raspberry Pi 3 and the TrashCanApp mobile app can sync up with the IBMIoTF service, we have to make some changes in the code before launching/building the programs. Refer the “Python Script Configuration” and “Mobile App Configuration” sections of the README file.

Project Demonstration

If you have followed along until this stage, then we are ready to demonstrate this trash can.

Although we can test the level of trash can using any obstacle placed at a distance from the ultrasonic sensor, we want to get close to real. So here is a small model trash can made out of an ordinary container.



You can see the sensor mounted at the center with its two probes sticking out. Here is a look from the inside.


All services running and all things powered up. Let’s see a demo.

As you can see in the video demonstration, we are using crumpled paper as trash. As we keep filling the container with the trash, the level goes up, and it is indicated in the mobile app as well.

At the bottom part of the video, you can see the sensor values getting updated in the IBMIoTF service web console. As we keep filling trash, the value decreases, which indicates the distance between sensor-probe and the trash level. Check out the source code of  Python client application to see how the Raspberry Pi3 controls the sensor to get this distance reading.

We hope you enjoyed this demonstration. In the coming weeks, we will present few more variants of this demo which addresses some real-world problems and solution that can be specifically applicable to this use case or IoT in general. Stay tuned and feel free to comment in case you have any queries.


This post was originally published in Radiostudio blog.

Leave a Reply 0 comments

Leave a Reply: