Minimalistic Bluetooth LED controller for ESP32-S3 and WS2812B. Use it for ringlights, strips, accent lighting, or any creative LED project. I used it for a microscope lens light. I also included the stl file in the assets folder.
Note: The included Flutter app is a crude proof-of-concept (my first Flutter app!) and is meant to "just work" for basic control. It’s not polished, but it gets the job done for this project.
-
Download the latest release:
- Go to Releases
- Download the APK for Android and the Arduino
.inosketch
-
Flash the Arduino sketch:
- Open
bluetooth_ws2812b_light.inoin Arduino IDE - Install the required libraries:
- FastLED
- Preferences (built-in for ESP32)
- Select your ESP32-S3 board and COM port
- Open
-
Customize LED settings (optional):
-
Edit these values in the
bluetooth_ws2812b_light.inofile to match your hardware:#define LED_PIN 13 // GPIO pin for WS2812B data #define NUM_LEDS 16 // Number of LEDs in your ring
-
-
Upload the sketch:
- Click Upload in Arduino IDE
- Open Serial Monitor (115200 baud) to see connection status
-
Install the Android app:
- Transfer the APK to your phone and install it
-
Connect and control:
- Power up your hardware
- Open the app and connect via Bluetooth
- Send RGB values to control the LEDs
- ESP32-S3 development board
- WS2812B LED ring/strip (default: 16 LEDs)
- 5V power supply
- Jumper wires
Wiring:
ESP32-S3 WS2812B Ring Light
-------- ------------------
GPIO 13 ------> Data In (DI/DIN)
5V ------> VCC/5V
GND ------> GND
Send RGB values as comma-separated string: R,G,B
Examples:
255,0,0(red)0,255,0(green)0,0,255(blue)
- Minimalistic BLE control
- Simple RGB text commands
- EEPROM color memory
- Serial debug output
- Check wiring and power
- Confirm board and port selection
- Use Serial Monitor for debug info
This project is licensed under the GNU General Public License v3.0 (GPLv3). See the LICENSE file for full terms.
- Upload the code to your ESP32-S3
- The device will appear as "ESP32-LED-Controller" in Bluetooth settings
- Use a BLE app to connect:
- Android: nRF Connect, BLE Scanner, Serial Bluetooth Terminal
- iOS: nRF Connect, LightBlue
- Windows/Mac: nRF Connect, Web Bluetooth apps
- Open nRF Connect and scan for devices
- Connect to "ESP32-LED-Controller"
- Look for the service UUID ending in
914b - Find the characteristic UUID ending in
26a8 - Tap the write button (↑)
- Enter your RGB values (e.g.,
255,0,0) - Send the command
- ✅ Bluetooth Low Energy (BLE) for low power consumption
- ✅ Simple RGB control via text commands
- ✅ Supports any number of WS2812B LEDs (adjust
NUM_LEDS) - ✅ Auto-reconnection support
- ✅ Serial debugging output
- ✅ Input validation (0-255 range)
LEDs don't light up:
- Check wiring connections
- Verify power supply is adequate (WS2812B needs 5V)
- Confirm
NUM_LEDSmatches your actual LED count - Try a different GPIO pin and update
LED_PIN
Can't find Bluetooth device:
- Make sure ESP32 is powered and code is uploaded
- Check Serial Monitor for "BLE device is ready!" message
- Try restarting your phone/computer Bluetooth
- Move closer to the ESP32
Wrong colors:
- Some WS2812B variants use different color orders
- Try changing
COLOR_ORDERfromGRBtoRGBorBRG
ESP32 resets/crashes:
- Use external power supply for LED strip
- Ensure common ground between ESP32 and power supply
- Add capacitor across power supply
- Add brightness control
- Implement color patterns and animations
- Add multiple color zones
- Create preset color modes
- Add automatic color cycling
- Implement music reactive lighting
This project is licensed under the GNU General Public License v3.0 (GPLv3). You must comply with the terms of the GPLv3 when using, modifying, or distributing this project. See the LICENSE file for details.
- FastLED library by Daniel Garcia
- ESP32 Arduino core by Espressif Systems


