Binny is an intelligent and interactive trash bin that automatically sorts waste while providing an engaging and educational experience for children. The project aims to combine technological innovation with eco-friendly practices, making recycling fun and efficient.
- Overview
- Key Features
- Technologies Used
- Hardware Requirements
- Setup and Installation
- Possible Improvements
- Contributors
- License
Developed as part of the courses INFOM450, INFOM451, and INFOM453 at Université de Namur, Binny addresses the needs of eco-conscious individuals with limited time, particularly parents wanting to teach their children about recycling. The bin uses AI to sort waste and interacts with children by sharing jokes and educational tips on recycling.
- Automatic Waste Sorting: Utilizes a camera and AI model to identify and sort waste in real-time.
- Educational Interactions: Engages children with interactive conversations and jokes about recycling.
- Reliable Connectivity: Supports both local and server-based operation with a robust REST-mesh architecture.
- Scala with Akka framework for sensor management and real-time data handling:
- Event-driven actor system for seamless communication between components.
- Animation features using ScalaFX for a child-friendly interface.
- WebSocket for interaction between Python AI and Scala components.
- Python for AI and voice interaction:
- Waste recognition using YOLOv11.
- Wake word detection with OpenWakeWord
- Natural Language Processing with Llama 3.2.
- Text-to-speech conversion with GLaDOS
- Raspberry Pi 4: Central processing unit.
- Camera: For waste image capture and identification.
- Phidget Sensors: For proximity detection, touch interaction, lid blockage detection and fill-level monitoring.
- Servo Motors: For automatic lid operation.
- Microphone and Speaker: For voice interaction and responses.
The following components are required to build and operate Binny:
- Raspberry Pi 4 (2GB or higher is recommended)
- Camera for image recognition (e.g., Raspberry Pi Camera Module, USB webcam)
- Phidget sensor kit (distance, touch, force, and infrared sensors)
- Servo motor and phidegt control module
- LCD screen for user interface
- Microphone and speaker for voice interaction
- Plastic bin as the main structure
The project needs Java 17, Scala, SBT and Python to run.
- Clone the repository to your local machine:
git clone https://github.com/ZeTioZ/Binny.git
- Create a virtual environment for the Python dependencies:
python -m venv venv source venv/bin/activate # On Windows, use venv\Scripts\activate
- Install the required dependencies:
pip install -r requirements.txt
- Run the Scala project:
sbt "~run"
- Start the servers for the AI and voice interaction:
python ./src/main/python/tts-rest-server/rest_api.py python ./src/main/python/glados-tts/engine.py python ./src/main/python/llm/llm_hook.py
You may need to adjust the ip addresses in the python files to match your local network. For the AI to work, you need to have a llm server running on your network. Checkout LMStudio for an easy way to do this.
Binny is a work in progress, with several potential enhancements:
- Improving object recognition accuracy with additional AI training.
- Optimizing hardware for faster response times.
- Introducing mobile app integration for bin management.
- Upgrading the visual interface with a faster and larger touchscreen display.
- Implementing a more robust voice interaction system with better natural language processing.
- Adding a reward system for children to encourage recycling.
- Incorporating a cloud-based data storage system for waste statistics and user feedback.
- Enhancing the educational content with more recycling tips and fun facts.
- Adding a battery backup system for uninterrupted operation.
- Adding a remote control system for bin operation.
- Adding buttons for manual operation.
- Donato Gentile
- Diego Alarcon
- Matteo Devigne
- Arthur Barbieux
- Rodrigue Yando Djamen
This project is licensed under the MIT License.
We hope Binny inspires fun and sustainable recycling habits. Contributions and suggestions are welcome!