RECYCLYOPS is a smart waste management system that leverages AI-powered material recognition, object tracking, and interactive feedback mechanisms to optimize waste disposal and recycling. The system integrates multiple hardware components, including cameras, motion sensors, displays, and speakers, to provide an intuitive and educational user experience.
To set up RECYCLYOPS, you will need the following hardware components:
- Raspberry Pi 5 (or compatible model with necessary GPIO/I2C support)
- IMX500 Camera (for AI-powered image capture and object recognition)
- Ultrasonic Motion Sensor (for detecting object placement)
- 16x2 I2C LCD Display (for visual feedback)
- USB Speaker (for text-to-speech output)
- Power Supply for Raspberry Pi
- Jumper Wires (for connecting components)
- Face Display: Displays expressions and feedback messages using an LCD.
- Hardware Integration: Supports various hardware modules such as cameras, motion sensors, speakers, and displays.
- Material Recognition: Identifies different types of waste materials using AI.
- Object Tracking: Tracks objects using motion detection algorithms.
- Text-to-Speech: Generates verbal responses for user interaction.
- Utility Functions: Handles configuration, logging, and JSON parsing.
RECYCLYOPS/
├── face_display/ # Handles display of facial expressions
│ ├── expressions.json # Predefined face expressions
│ ├── face_display.py # Manages LCD face display
├── hardware/ # Contains drivers for different hardware components
│ ├── cameras/ # Camera integration
│ │ ├── imx500_camera.py # IMX500 AI camera integration
│ ├── displays/ # LCD display integration
│ │ ├── LCD_16x2_display.py # 16x2 LCD Display management
│ ├── motion_sensor/ # Motion detection using ultrasonic sensors
│ │ ├── ultrasonic_motion_sensor.py # Ultrasonic motion sensor handling
│ ├── speakers/ # USB speaker support
│ │ ├── USB_speaker.py # USB speaker sound management
│ ├── hardware_config.json # Hardware configuration settings
├── material_recognition/ # AI-powered material classification
│ ├── client.py # OpenAI client for material recognition
│ ├── prompt_output.py # Parses OpenAI API responses
│ ├── utils.py # Utility functions for processing images
├── object_tracking/ # Motion detection and object tracking
│ ├── object_tracker.py # Tracks objects using sensors and cameras
│ ├── motiondetection.py # Detects motion in images for tracking
├── text_to_speech/ # Generates speech responses
│ ├── comment_generator.py # Generates contextual feedback messages
│ ├── responses.json # Predefined responses for correct/incorrect sorting
│ ├── speech_manager.py # Manages speech output queue
│ ├── tts.py # Google TTS integration for spoken feedback
├── utils/ # Utility scripts for configuration and logging
│ ├── configuration.py # Loads hardware configuration settings
│ ├── custom_logger.py # Custom logger for debugging and tracking
│ ├── json_reader.py # Reads and parses JSON files
├── .env # Environment variables (API_KEY required)
├── .gitignore # Git ignore file
├── main.py # Entry point of the application
├── README.md # Project documentation
├── requirements.txt # Dependencies and required packages
To set up the project, follow these steps:
-
Clone the repository:
git clone https://github.com/your-repo/RECYCLYOPS.git cd RECYCLYOPS -
Install dependencies:
pip install -r requirements.txt
-
Set up the environment variables:
cp .env.example .env
Edit the .env file and add your OpenAI API key:
API_KEY="your_key_here"
-
Configure the LCD screen:
-
Connect the LCD screen as follows:
-
GND to any GND pin
-
VDD to any 5V pin
-
SDA to the I2C pin (GPIO2)
-
SCL to the I2C pin (GPIO3)
-
-
Enable I2C on your Raspberry Pi:
sudo raspi-config
Navigate to
3 Interface Options > P5 I2C, enable it, then reboot:sudo reboot
-
Find the I2C address:
sudo i2cdetect -y 1
Set the found address in
hardware_config.jsonunder"I2C_LCD_ADDRESS".
-
-
Configure the Ultrasonic Motion Sensor:
-
Connect the motion sensor as follows:
-
GND to any GND pin
-
VCC to any 5V pin
-
TRIG to GPIO22
-
ECHO to GPIO23
-
-
If any of the GPIO pins for the LCD or motion sensor are changed, update the
hardware_config.jsonfile accordingly:{ "I2C_LCD_ADDRESS": 39, "TRIG_PIN": 22, "ECHO_PIN": 23 }
-
-
Run the application:
python main.py
Jeffrey Bringolf |
Olivier Demers |
Abdessalam Aithaqi |
Biko-Higiro Ndabwunze |
| Worked on object tracking, material recognition, AI, and API development. | Contributed to object tracking, material recognition, AI, and API development. | Developed hardware modules, text-to-speech, face display, and comment generation. | Worked on text-to-speech functionality, collaborated on hardware implementation, and developed the database backend. |