Custom ESP32-based RGB LED strip controller designed to replace unreliable off-the-shelf LED controllers.
This board is built around an ESP32 development module and runs WLED firmware. It supports both analog RGB strips and digital addressable strips.
The original controllers that came with my LED strips constantly disconnected from the app and were generally unreliable. Instead of continuing to fight them, I decided to design my own controller based on an ESP32 running WLED.
This project is my first ever custom PCB design. It is open-source so others can build, modify, or improve it.
I heavily relied on the excellent WLED documentation when designing this board.
- MCU: ESP32 Dev Board
- Firmware: WLED
- Input Voltage: 12V DC
- Step-Down Converter: LM2596 module (external module mounted on PCB)
- Analog Outputs: 2 independent RGB channels (4 headers total)
- Digital Outputs: 2 (WS2815 compatible)
- Level Shifting: Optional SN74AHCT125N
Make sure your ESP32 DevBoard has the same pinout as the one that I used. Otherwise you may fry your MCU
- 12V input powers:
- Analog RGB LED strips directly
- LM2596 buck converter module → 5V for ESP32 and logic
There are two independent RGB control groups. Each group controls two identical 4-pin headers.
Header pinout:
12V | G | B | R
- Green: GPIO 15
- Red: GPIO 26
- Blue: GPIO 27
- Green: GPIO 18
- Red: GPIO 19
- Blue: GPIO 21
Each group shares the same control signals across its two headers.
Designed for WS2815 (12V addressable LED strips).
Header pinout:
12V | DI | BI | GND
- Digital Output 1: GPIO 2
- Digital Output 2: GPIO 4
An SN74AHCT125N level shifter can be used for proper 5V data-level conversion, as recommended in the WLED documentation.
-
Decoupling Capacitors: Pads were incorrectly sized (assumed 0805). Components do not fit. This will be corrected in a future revision.
-
Development Version: During early assembly, fuse pads were bridged instead of populated with a fuse. This is not recommended for normal use.
The board images in this repository show a partially assembled board. Only the analog outputs were required for the current installation.
Flash WLED using the official installer or esptool.
Configure:
- LED type (Analog / WS281x / WS2815)
- Assigned GPIOs as listed above
- LED count per channel
Official documentation: https://kno.wled.ge/
Huge thanks to the LED contributers, if you ever read this, props for the awesome docs
- KiCad project files
- Custom symbols and footprints
- Gerbers in Releases
- Correct capacitor footprints
- Review decoupling placement
- Improve silkscreen labeling
- Integrate fixed 5V regulator instead of LM2596 module



