A custom React Native mobile app for controlling BJ_LED_M Bluetooth LED devices. Features intuitive RGB color control, brightness adjustment, preset colors, and audio-reactive lighting modes.
- Automatic discovery of BJ_LED_M devices
- Persistent BLE connections with connection pooling
- Multi-device support - control multiple LED strips simultaneously
- Robust error handling and connection recovery
- Brightness Control: Dedicated brightness slider with real-time feedback
- RGB Sliders: Precise red, green, and blue color adjustment
- 18 Preset Colors: Quick access to popular colors including:
- Primary colors (Red, Green, Blue)
- Secondary colors (Yellow, Cyan, Magenta)
- Custom colors (Coral, Violet, Turquoise, Gold, etc.)
- Live Preview: Real-time color preview with brightness visualization
- Mic Mode: Transform your LEDs into audio-reactive lighting
- Multiple Color Patterns: Rainbow, Bass, and Energy modes
- Sensitivity Controls: Adjustable audio sensitivity (Low/Med/High)
- Max Brightness Limiting: Control maximum brightness for audio mode
- Clean, modern dark theme interface
- Intuitive tab-based navigation (Devices, Control, Mic)
- Real-time device status and connection feedback
- Optimized for both iOS and Android
Make sure you have completed the React Native Environment Setup guide.
-
Clone the repository
git clone https://github.com/SidmoGoesBrrr/led-controller-app.git cd led-controller-app
-
Install dependencies
npm install
-
iOS Setup (iOS only)
cd ios bundle install bundle exec pod install cd ..
-
Start Metro server
npm start
-
Run the app
For Android:
npm run android
For iOS:
npm run ios
- Navigate to the "Devices" tab
- Tap "Start Scan" to discover nearby BJ_LED_M devices
- Select your LED devices from the list
- Multiple devices can be selected for synchronized control
- Switch to the "Control" tab
- Use the Brightness slider to adjust overall brightness (0-255)
- Fine-tune colors with individual RGB sliders
- Tap any preset color for instant color changes
- Live preview shows your selected color and brightness
- Go to the "Mic" tab
- Tap the microphone button to start audio listening
- Choose from different color modes:
- π Rainbow: Cycles through full color spectrum
- π₯ Bass: Red/orange colors for bass-heavy music
- β‘ Energy: Blue/white for high-energy sounds
- Adjust sensitivity and maximum brightness as needed
- React Native 0.81.1 with TypeScript
- Bluetooth Low Energy (BLE) via
react-native-ble-plx
- Persistent Connection Management with connection pooling
- Sequential Command Processing to prevent BLE interference
- MTU Optimization for better data transmission
- Service discovery and characteristic caching
- Custom command protocol for BJ_LED_M devices
- Command format:
[0x69, 0x96, 0x05, 0x02, R, G, B, Brightness]
- Automatic connection recovery and error handling
- Connection pooling for multiple devices
- Characteristic caching to avoid repeated service discovery
- Sequential command processing to prevent conflicts
- Optimized timeout handling (10s connection, 100ms command delay)
This app is specifically designed for BJ_LED_M Bluetooth LED controllers. These devices typically control:
- LED light strips
- RGB LED panels
- Decorative LED fixtures
- Custom LED installations
src/
βββ components/
β βββ ColorPicker.tsx # RGB control and presets
β βββ DeviceList.tsx # BLE device discovery
β βββ MicMode.tsx # Audio-reactive mode
βββ services/
β βββ BLEService.ts # Bluetooth communication
βββ App.tsx # Main navigation
react-native-ble-plx
- Bluetooth Low Energy@react-native-community/slider
- UI slidersreact-native-safe-area-context
- Safe area handling@react-native-async-storage/async-storage
- Data persistence
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
Coming soon - screenshots of the app in action
BLE Connection Failed
- Ensure your LED device is powered on and in pairing mode
- Check that Bluetooth permissions are granted
- Try restarting the app and rescanning
Commands Not Reaching LEDs
- Verify device selection in the Devices tab
- Check Bluetooth connection stability
- Ensure the LED device is within range
Audio Mode Not Working
- Grant microphone permissions when prompted
- Check device volume and microphone functionality
- Try adjusting sensitivity settings
Enable console logging to see detailed BLE communication:
- Open React Native debugger
- Monitor console for connection and command logs
This project is open source and available under the MIT License.
- Built with React Native
- BLE communication powered by react-native-ble-plx
- UI components from React Native Community
π¨ Transform your space with custom LED lighting! π¨
Made with β€οΈ using React Native