NeoBin is a smart bin project using Bluetooth Low Energy (BLE) for interactive waste management. It runs on a Raspberry Pi with a Python backend using the BlueZ stack. Features include a GATT service for authentication, command execution, and notifications, and hardware integration with a servo motor and ultrasonic sensor for automated lid control.
- Interactive Waste Management: Utilize BLE for seamless communication with mobile devices.
- Automated Lid Control: Integrate a servo motor and ultrasonic sensor for automated opening and closing of the bin lid.
- GATT Service: Handle authentication, command execution, and notifications.
- Real-Time Monitoring: Receive real-time status updates and notifications from the smart bin.
- Bin: IKEA Lack 10L bin
- Servo Motor: Used for controlling the lid
- Ultrasonic Sensor: Used for detecting objects near the bin
- Raspberry Pi: Runs the backend software
- 3D Printed Parts: Custom parts for mounting the servo motor
- Raspberry Pi with BlueZ stack installed
- Python 3.7+ for the backend
- Node.js and npm for the frontend (React Native)
- Android Studio or Xcode for mobile app development
-
Clone the Repository:
git clone https://github.com/Japrolol/NeoBin.git cd NeoBin -
Install Python Dependencies:
pip install -r backend/requirements.txt
-
Run the Backend:
python backend/main.py
-
Navigate to the Frontend Directory:
cd frontend -
Install Dependencies:
npm install
-
Start the Metro Server:
npx react-native start
-
Build and Run the App:
-
For iOS:
npx react-native run-ios
-
For Android:
npx react-native run-android
-
- You may have to change pulse width based on your servo.
- You may need to modify your Xcode or Gradle settings for the frontend project. Otherwise, everything should be plug and play.
- The backend script (
backend/main.py) initiates the BLE GATT service and handles hardware interactions. - The frontend interface allows users to interact with the NeoBin backend, open/close the bin lid, view sensor data, and receive notifications.
- Fork the repository.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a pull request.
Distributed under the MIT License. See LICENSE for more information.
Japrolol - GitHub Profile
Project Link: https://github.com/Japrolol/NeoBin