A custom ESP32-based controller for WS2812B/SK6812 LED strips with web interface and Alexa integration. Perfect for ambient bedroom lighting! ποΈ
- π¨ Web Interface - Real-time control via browser
- π£οΈ Alexa Integration - Voice control support
- π Physical Buttons - Manual brightness/mode control
- π Multiple Effects - Rainbow, chase, breathing animations
- π± Custom Colors - Full RGB color picker
- π§ Two LED Types - WS2812B (RGB) and SK6812 (RGBW) support
esp32-led-controller/
βββ code/
β βββ esp32-ws2812b/ # WS2812B (RGB) version
β β βββ data/ # Web interface files
β β β βββ index.html # Main web UI
β β β βββ style.css # Styling
β β β βββ app.js # JavaScript controls
β β βββ esp32-ws2812b.ino # Arduino sketch
β βββ esp32-sk6812/ # SK6812 (RGBW) version
β βββ data/ # Web interface files
β βββ esp32-sk6812.ino # Arduino sketch
βββ kicad/ # PCB design files
βββ gerbers/ # Manufacturing files
βββ datasheets/ # Component datasheets
βββ assets/ # Board photos
- Arduino IDE with ESP32 support
- Required Libraries:
- FastLED (for WS2812B) or Adafruit NeoPixel (for SK6812)
- FauxmoESP (Alexa integration)
- AsyncTCP & ESPAsyncWebServer (ESP32 versions)
- LittleFS (file system)
-
Add ESP32 Board Support:
File β Preferences β Additional Board Manager URLs: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
-
Board Configuration:
- Board: "ESP32S3 Dev Module"
- Flash Size: "8MB"
- Partition Scheme: "8M with spiffs (3MB APP/1.5MB SPIFFS)"
-
Install Libraries via Library Manager
-
Choose Your LED Type:
esp32-ws2812b/
for standard RGB stripsesp32-sk6812/
for RGBW strips with dedicated white channel
-
Configure Settings in the
.ino
file:const char* ssid = "Your_WiFi_Network"; const char* password = "Your_WiFi_Password"; #define DEVICE_NAME "Bedroom Lights" #define NUM_LEDS 60 // Your LED count
-
Upload Web Files:
- Install Arduino LittleFS Upload plugin
- Place the
data
folder in your sketch directory - Use: Cmd + Shift + P, then select "Upload LittleFS to Pico/ESP8266/ESP32"
-
Upload Arduino Sketch normally
ESP32 Pin | Connection |
---|---|
GPIO 2 | LED Strip Data |
GPIO 17 | Status LED (Red) |
GPIO 16 | Status LED (Green) |
GPIO 18 | Status LED (Blue) |
GPIO 4-7 | Control Buttons |
After successful upload:
- WiFi Connection: Board flashes blue β yellow (5x) when connected
- Web Interface: Visit
http://[ESP32_IP]:8080
- Alexa: Say "Alexa, turn on bedroom lights"
- Buttons: Physical controls for power/brightness/modes
- Power Button: Long press (0.5s) to toggle on/off
- Brightness: Β± buttons adjust in 10% steps
- Mode Button: Cycle through colors and effects
- Web Interface: Real-time RGB control and effects
Read the full build story and PCB design process: ESP32 LED Controller
Custom PCB design includes:
- ESP32-S3-WROOM-1 (8MB Flash)
- SN74AHCT125 level shifter (3.3V β 5V)
- LM1117S-3.3 voltage regulator
- Common anode status LED
- 4 control buttons
- 2.5mm barrel jack power input
The web interface uses vanilla JavaScript with no external dependencies. All files are served from ESP32's LittleFS for fast loading and offline operation.
This project is licensed under the MIT License - see the LICENSE file for details.