

Esp32-led controller v2
Controller for ws2812b/sk6812 LEDs
- Size
- 93.4 × 42.6 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 66
- Nets
- 72
- Pads
- 266
- Tracks, vias
- 369, 202
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 25 Jan 2025
- Updated
- 21 Jun 2026
Overview
Esp32-led controller v2 is an open-source printed circuit board by arkandas, from the arkandas/esp32-led-controller repository on GitHub, published under the MIT licence. It is a 2-layer board of 93.4 × 42.6 mm with 66 parts on 72 nets, routed with 369 tracks and 202 vias.
It is built around the SN74AHCT125PWRE4, SK6805-EC20 and B5819W, with the DC-005-5A-2.5 and USBLC6-2SC6 among its other parts. Its parts include 20 capacitors, 16 resistors, 6 ICs, 6 diodes and 6 switches. It belongs with the ESP32 boards of this library.
Main components
5SN74AHCT125PWRE4
TSSOP-14-40℃~+85℃ 1 20uA 4 4.5V~5.5V 74AHCT 8.5ns@5V,50pF 8mA 8mA Tri-State Unidirectional TSSOP-14 Buffers, Drivers, Receivers, Transceivers ROHSTexas InstrumentsBuffers, Drivers, Receivers, TransceiversSK6805-EC20
SMD,2x2mm-40℃~+80℃ 0.5mA 0.65mm 140mcd~280mcd 160° 1kHz 2000V 2mm 2mm 3.5V~5.5V 30mcd~60mcd 460nm~475nm 50mcd~100mcd 520nm~535nm 620nm~630nm 800Kbit/s Built-in power-on reset circuit、Built-in power-on reset circuit Semi-transparent lens SMD,2x2mm RGB LEDs(Built-in IC) ROHSOPSCO OptoelectronicsRGB LEDs(Built-In IC)B5819W
SOD-123-55℃~+125℃ 1.5A 1mA@40V 25A 40V 600mV@1A Standalone SOD-123 Schottky Diodes ROHSMDDSchottky DiodesDC-005-5A-2.5
插件-20℃~+70℃ 2.5mm 24V 5A 6.5mm DC Power Jack Right Angle 插件 DC Power Connectors ROHSXKB ConnectionDC Power ConnectorsUSBLC6-2SC6
SOT-23-60.35pF、0.8pF 100nA 150W@8/20us 15V 2 5V 6A@8/20us 6V ESD SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSUMWESD And Surge Protection (TVS/ESD)
README
README.mdESP32 LED Controller 💡
A custom ESP32-based controller for WS2812B/SK6812/WS2814 LED strips with web interface and Alexa integration.
Latest Version: V2 includes 24V RGBW support (WS2814), temperature/humidity monitoring, and enhanced status LEDs.
Versions
Version 2
✅ Released - Latest version in main branch

Version 1
✅ Released - Tagged as v1.0.0

Version 2 Documentation
The following documentation applies to Version 2 of the project. All files are located in the v2/ directory.
✨ Features
- 🎨 Web Interface - Real-time control with environment monitoring
- 🗣️ Alexa Integration - Voice control support
- 🔘 Physical Buttons - Manual brightness/mode control
- 🌈 Multiple Effects - Rainbow, chase, breathing animations
- 📱 Custom Colors - Full RGBW color picker
- 🌡️ Temperature & Humidity - AHT20 sensor for environment monitoring
- 💡 Status LEDs - 3x RGB status indicators (Power, WiFi, Strip)
- ⚡ 24V RGBW Support - WS2814 LED strips with dedicated white channel
📁 Project Structure
v2/
├── code/ # Arduino code & web interface
│ └── esp32-ws2814/ # WS2814 (RGBW) version
│ ├── data/ # Web interface files
│ │ ├── index.html # Main web UI
│ │ ├── style.css # Styling
│ │ └── app.js # JavaScript controls
│ └── esp32-ws2814.ino # Arduino sketch
├── kicad/ # KiCad PCB project files
└── assets/ # Board photos & schematics🚀 Quick Start
Prerequisites
- Arduino IDE with ESP32 support
- Required Libraries:
- Adafruit NeoPixel (for WS2814 RGBW)
- FastLED (for status LEDs)
- FauxmoESP (Alexa integration)
- AsyncTCP & ESPAsyncWebServer (ESP32 versions)
- LittleFS (file system)
- Adafruit AHTX0 (temperature sensor)
Installation
-
Add ESP32 Board Support:
text 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
Upload Process
-
Configure Settings in the
.inofile:cpp const char* ssid = "Your_WiFi_Network"; const char* password = "Your_WiFi_Password"; #define DEVICE_NAME "Your_Alexa_Device_Name" #define WIFI_HOSTNAME "Your_Device_Hostname" #define WEB_SERVER_PORT 8080 // Your preferred port #define NUM_LEDS 60 // Your LED count -
Upload Web Files:
- Install Arduino LittleFS Upload plugin
- Place the
datafolder in your sketch directory - Use: Cmd + Shift + P, then select "Upload LittleFS to Pico/ESP8266/ESP32"
-
Upload Arduino Sketch normally
Programming via USB
The v2 board uses an ESP32-S3 with built-in USB - no need for an external USB-to-serial adapter.
USB Connection:
- Connect a USB-C cable directly to the ESP32-S3's USB port
- The board will show up as a serial device on your computer
Arduino IDE USB Configuration:
To get USB UART working on the Serial Monitor:
-
Board Settings (Tools menu):
- Board:
ESP32S3 Dev Module - USB CDC On Boot:
Enabled⚠️ Important for Serial Monitor - USB Mode:
Hardware CDC and JTAG - Upload Mode:
UART0 / Hardware CDC - Flash Size:
8MB - Partition Scheme:
8M with spiffs (3MB APP/1.5MB SPIFFS) - Upload Speed:
921600(or lower if uploads fail)
- Board:
-
Port Selection:
- After connecting USB, select the port showing as ESP32-S3 in Tools → Port
- macOS: Usually appears as
/dev/cu.usbmodem* - Windows: Usually appears as
COM* - Linux: Usually appears as
/dev/ttyACM*
USB CDC On Boot Explained:
- When
Enabled, the Serial Monitor will work over USB immediately after boot - This allows you to see debug output using
Serial.println()without additional hardware - The board will enumerate as a USB serial device (CDC - Communications Device Class)
First-Time Programming:
- Connect the board via USB-C
- The ESP32-S3 should automatically enter bootloader mode when uploading
- If upload fails, try:
- Press and hold the
BOOTbutton (if available on your board) - Click Upload in Arduino IDE
- Release
BOOTbutton when upload starts
- Press and hold the
- Open Serial Monitor (Ctrl/Cmd + Shift + M) at
115200baud to see output
Troubleshooting:
- Port not appearing: Try a different USB cable (must support data, not just power)
- Upload fails: Lower the upload speed to
460800or115200 - Serial Monitor shows gibberish: Ensure baud rate is set to
115200and USB CDC On Boot is enabled
🔌 Hardware Connections
| ESP32 Pin | Connection |
|---|---|
| GPIO 40 | WS2814 LED Strip Data |
| GPIO 41 | Status LEDs (3x SK6805-EC20) |
| GPIO 1 | I2C SCL (AHT20 Sensor) |
| GPIO 2 | I2C SDA (AHT20 Sensor) |
| GPIO 4-7 | Control Buttons |
🌐 Usage
After successful upload:
- WiFi Connection: Status LEDs flash yellow (5x) when connected
- Web Interface: Visit
http://[ESP32_IP]:[WEB_SERVER_PORT]

- Alexa: Say "Alexa, turn on [your device name]"
- Buttons: Physical controls for power/brightness/modes
🎛️ Controls
- 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 RGBW control, effects, and environment monitoring
💡 Status LEDs
The board features 3 RGB status LEDs:
- LED 1 (Power): Always green when powered
- LED 2 (WiFi): Green when connected, Red when disconnected, Yellow during errors
- LED 3 (Strip): Green when strip is on, Red when off
⚡ Hardware
Custom PCB design includes:
- ESP32-S3-WROOM-1 (8MB Flash)
- SN74AHCT125 level shifter (3.3V → 5V for WS2814)
- LM1117S-3.3 voltage regulator
- 3x SK6805-EC20 RGB status LEDs
- AHT20 temperature & humidity sensor
- 4 control buttons
- 2.5mm barrel jack power input (24V for WS2814)
🔧 Key Differences from V1
- RGBW Support: Dedicated white channel for better white light quality
- 24V LED Strips: Uses WS2814 instead of WS2812B/SK6812
- Environment Monitoring: Built-in AHT20 temperature and humidity sensor
- Improved Status LEDs: 3x addressable RGB LEDs instead of single common anode LED
- Enhanced Web Interface: Shows temperature, humidity, and more device information
- Configurable Port: Web server port can be customized
Version 1 Documentation
The following documentation applies to Version 1 of the project. All files are located in the v1/ directory.
✨ Features
- 🎨 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
📁 Project Structure
v1/
├── code/ # Arduino code & web interface
│ ├── 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/ # KiCad PCB project files
├── gerbers/ # Manufacturing files
├── datasheets/ # Component datasheets
├── ibom/ # Interactive BOM
└── assets/ # Board photos🚀 Quick Start
Prerequisites
- 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)
Installation
-
Add ESP32 Board Support:
text 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:
v1/code/esp32-ws2812b/for standard RGB stripsv1/code/esp32-sk6812/for RGBW strips with dedicated white channel
Upload Process
-
Configure Settings in the
.inofile:cpp 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
datafolder in your sketch directory - Use: Cmd + Shift + P, then select "Upload LittleFS to Pico/ESP8266/ESP32"
-
Upload Arduino Sketch normally
🔌 Hardware Connections
| 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 |
🌐 Usage
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
🎛️ Controls
- 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
📖 Blog Post
Read the full build story and PCB design process for V1: ESP32 LED Controller
⚡ Hardware
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
🛠️ Development
The web interface uses vanilla JavaScript with no external dependencies. All files are served from ESP32's LittleFS for fast loading and offline operation.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Parts
66| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 0.1uF | easyeda2kicad:C0603 | C3, C9, C12, C14, C15, C18, C19 |
| 4 | MHolePad | MountingHole:MountingHole_3.2mm_M3_Pad_Via | H1, H2, H3, H4 |
| 3 | 100K | easyeda2kicad:R0402 | R5, R7, R10 |
| 3 | SK6805-EC20 | easyeda2kicad:LED-SMD_4P-L2.0-W2.0-BR | LED1, LED2, LED3 |
| 2 | 100ohm | easyeda2kicad:R0603 | R15, R16 |
| 2 | 10uF | easyeda2kicad:C0603 | C16, C17 |
| 2 | 1uF | easyeda2kicad:C0603 | C7, C13 |
| 2 | 22pf | easyeda2kicad:C0603 | C1, C2 |
| 2 | 27ohm | easyeda2kicad:R0603 | R3, R4 |
| 2 | 4.7k | easyeda2kicad:R0603 | R12, R13 |
| 2 | 5.1K | easyeda2kicad:R0603 | R1, R2 |
| 2 | B5819W | easyeda2kicad:SOD-123_L2.7-W1.7-LS3.8-RD | D2, D3 |
| 1 | + | easyeda2kicad:SW-SMD_L3.9-W3.0-P4.45 | SW4 |
| 1 | - | easyeda2kicad:SW-SMD_L3.9-W3.0-P4.45 | SW3 |
| 1 | 0.1uF | easyeda2kicad:C0402 | C6 |
| 1 | 1.1A | easyeda2kicad:FUSE-SMD_L4.7-W3.4 | F1 |
| 1 | 1000uF | easyeda2kicad:CAP-TH_BD16.0-P7.50-D1.2-FD | C20 |
| 1 | 10K | easyeda2kicad:R0603 | R11 |
| 1 | 10uF | easyeda2kicad:C1210 | C4 |
| 1 | 10uH | easyeda2kicad:IND-SMD_L6.6-W6.4 | L1 |
| 1 | 1uH | easyeda2kicad:IND-SMD_L8.2-W7.9 | L2 |
| 1 | 220nF | easyeda2kicad:C0805 | C5 |
| 1 | 220ohm | easyeda2kicad:R0603 | R14 |
| 1 | 22uF | easyeda2kicad:C0603 | C11 |
| 1 | 24.9K | easyeda2kicad:R0603 | R6 |
| 1 | 4.7uF | easyeda2kicad:C0805 | C10 |
| 1 | 453K | easyeda2kicad:R0402 | R9 |
| 1 | 475K | easyeda2kicad:R0402 | R8 |
| 1 | 47uF | easyeda2kicad:C1210 | C8 |
| 1 | AHT20_C2757850 | easyeda2kicad:SENSOR-SMD_L3.0-W3.0-P1.00-BR | U5 |
| 1 | BOOT | easyeda2kicad:SW-SMD_L3.9-W3.0-P4.45 | SW2 |
| 1 | DC-005-5A-2.5 | easyeda2kicad:DC-IN-TH_DC-005-5A-2.5 | DC1 |
| 1 | ESP32-S3-WROOM-1(N16R8) | easyeda2kicad:WIRELM-SMD_ESP32-S3-WROOM-1 | U3 |
| 1 | GPIO | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J2 |
| 1 | LED_STRIP_CONN | easyeda2kicad:CONN-TH_3P-P5.00_KF301-5.0-3P | U9 |
| 1 | LMR33630ADDAR | easyeda2kicad:ESOP-8_L4.9-W3.9-P1.27-LS6.0-TL-EP | U1 |
| 1 | LOGO | LOGO | G*** |
| 1 | MODE | easyeda2kicad:SW-SMD_L3.9-W3.0-P4.45 | SW5 |
| 1 | POWER | easyeda2kicad:SW-SMD_L3.9-W3.0-P4.45 | SW6 |
| 1 | RESET | easyeda2kicad:SW-SMD_L3.9-W3.0-P4.45 | SW1 |
| 1 | SN74AHCT125PWR | easyeda2kicad:TSSOP-14_L5.0-W4.4-P0.65-LS6.4-BL | U4 |
| 1 | TLV62569APDRLR | easyeda2kicad:SOT-563_L1.6-W1.2-P0.50-LS1.6-BR | U2 |
| 1 | TYPE-C 16PIN 2MD(073) | easyeda2kicad:USB-C-SMD_TYPE-C-6PIN-2MD-073 | USB1 |
| 1 | UART | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1 |
| 1 | USBLC6-2SC6 | easyeda2kicad:SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BL | D1 |
More from arkandas/esp32-led-controller
1- 2 layers53.8 × 36.2 mm

Similar boards
- 2 layers100 × 100 mm

HeatTable Base v0.9
DerSpatz/PCB-reflow-solder-table
Table version of the PCB heat plate with advanced features and swappable heat plate
82 parts14MIT - 2 layers70 × 64 mm

Windpcb
lindestad/wind-controller
LINDESTAD simracing wind controller: ESP32-C3 Zephyr firmware, KiCad PCB and SimHub integration
82 parts - 2 layers42 × 32 mm

RAMS - PCB
JanClyde05/Road-Accident-Monitoring-System
This directory contains the planning, specification, and initial KiCad project for RAMS Wearable PCB Revision C. Do not fabricate from this directory yet -- manual schematic wiring and DRC verification are still needed.
68 parts1 - 2 layers71.4 × 99.7 mm

RP2350A Macropad
arkandas/rp2350-macropad
RP2350A 3x3 mechanical macropad with a browser-programmable keymap and an on-board status LCD
85 partsMIT - 2 layers100 × 120 mm

Dcc station
cc90202/DCC-esp32
DCC command station for ESP32-C6 — NMRA-compliant model railroad controller in Rust
82 parts12 - 2 layers88 × 85 mm

- 4 layers70 × 52 mm

Pager carrier rev a
vyquocvu/analog-ai-chip
This directory contains the editable KiCad 10 source for the 70 mm × 52 mm, four-layer Pager-1 main carrier. The display, keypad, protected Li-Po pack, and analog accelerator are external assemblies.
32 parts1MIT - 4 layers88.2 × 38.5 mm

Motion play main
moclei/motion-play
Motion sensing project for fast moving objects moving through a plane. With directionality.
93 parts
Questions
How big is the Esp32-led controller v2 PCB?
It measures 93.4 × 42.6 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Esp32-led controller v2 use?
66 parts, built around the SN74AHCT125PWRE4, SK6805-EC20, B5819W and DC-005-5A-2.5. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Esp32-led controller v2 KiCad files?
From the arkandas/esp32-led-controller repository on GitHub, at the commit this page was made from: the board is v2/kicad/esp32-led-controller-v2.kicad_pcb and its schematic v1/kicad/esp32-led-controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Esp32-led controller v2 design in my own project?
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).