Inspiration

Sometimes we accidentally throw away items that can be recycled, and sometimes we don't know if an item is recyclable or not. This project does all the work for you.

What it does

Our project is an auto-sorting trash can, which can sort items between recyclables and non-recyclables. It uses a combination of openCV and Google Cloud to detect what type of garbage it is and sort the object accordingly. We also have a system in place to notify you via email if your trash is getting close to full as a reminder to empty it out. Furthermore, we have a webpage that shows how much trash has been recycled and not recycled, how full your trash can is, and we integrated Chat-GPT into the website to give you further insights on your waste management to help you become a more greener individual.

How we built it

We have a camera using a combination of OpenCV and Google Cloud with Python to detect what category the item that is placed on the trash can is in and dumps the trash using a servo motor in its respective bin. We have a web server built using javascript and html/css that receives and updates the data in real-time to show how much trash has been recycled, not recycled, and how full your trash can is. On the website, we also have integrated Chat-GPT which reads your trash data and gives you tips based on the data provided. We have a Raspberry Pi which is responsible for sending the "trash can fullness" data back to the web server. This Pi is also responsible for detecting when your trash can is almost full and sends you an email stating that you need to empty out your trash can. We have two arduinos, one that controls the ultrasonic sensors that measure how much trash is in the bin, and another for controlling the servo. Finally, we have an array of solar panels which help sustain the power load and make this a portable, self-sustaining device.

Challenges we ran into

To start, one of the challenges we ran into was with the servo motor. We had an issue with giving it enough power, hence the use of two arduinos. The second issue we ran into was regarding the computer vision code, where the amount of pre-trained models was non-existent, and the amount of time to train a good model would take more time than we have, so we decided to turn our attention to generalized trained models and modify the parameters of what we were detecting for to fit our needs. Also regarding the computer vision code, we initially intended to use a Raspberry Pi, but the processing was too slow and our connection to the internet was spotty making us switch to using a laptop for all of our processing needs.

Accomplishments that we're proud of

We're just proud we finished. None of us worked with computer vision and untrained models before, and we also never worked on bi-directional communication between web servers and between Windows/macOS machines, Arduino, and Raspberry Pi. Overall, we pushed ourselves to make something that we have never worked on before, which is something we are extremely proud of.

What we learned

We learned how to connect over the network and have multiple embedded devices simultaneously talk to each other. We learned the basics of ML training, and how important data is to the quality of a model. Finally, we learned about servo power management, and how servos are very picky with commands and how much power they need to operate.

What's next for R'Trash

If we were to continue this project we would make the computer vision model significantly better at detecting various types of trash. We would also streamline the number of electronics needed and optimize the code to work on smaller embedded devices.

Share this project:

Updates