A Proof of Concept system to locate specific hardware (screws) stored in jars using BLE communication between ESP32 and a mobile app.
├── firmware/ # ESP32 firmware (PlatformIO/Arduino)
│ ├── src/ # Source code
│ ├── include/ # Header files
│ └── platformio.ini
├── app/ # Flutter mobile application
└── spec.md # Project specification
✅ Firmware: Complete
- BLE server implementation
- Onboard LED command indication
- Timeout functionality
- Watchdog timer protection
- WiFi disabled for power savings
✅ Mobile App: Complete
- BLE scanning and auto-connect
- Provider-based state management
- Screw list UI
- Command sending to ESP32
- Android & iOS permissions configured
cd firmware
pio run --target upload
pio device monitorcd app
flutter pub get
flutter run # Requires physical device with BLEAll easily adjustable parameters are in firmware/include/config.h:
- LED timeout: Currently 30 seconds
- BLE device name:
SCREW_FINDER_POC - GPIO pins
- Blink patterns
- Service UUID:
0000AAAA-0000-1000-8000-00805F9B34FB - Characteristic UUID:
0000BBBB-0000-1000-8000-00805F9B34FB - Command Format: Send integer (0-255) representing LED index
- AI generates code and pushes to Git branch
- Pull changes in local IDE (VS Code/Android Studio)
- Build and deploy locally using PlatformIO/Flutter
- ESP32 Dev Module
- USB cable (power + programming)
- Onboard LED for command indication
- WS2812B/NeoPixel LED strip
- Multiple jars for screw storage