Skip to the content
PCBKitNew board
2 layers53.8 × 36.2 mmEsp32-led controller, the printed circuit board in 3D

Esp32-led controller

arkandas/esp32-led-controller5

Controller for ws2812b/sk6812 LEDs

Size
53.8 × 36.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
25
Nets
48
Pads
119
Tracks, vias
182, 83
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
25 Jan 2025
Updated
21 Jun 2026

Overview

Esp32-led controller 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 53.8 × 36.2 mm with 25 parts on 48 nets, routed with 182 tracks and 83 vias.

It is built around the ESP32-S3-WROOM-1-N8, SN74AHCT125PWRE4 and LM1117S-3.3, with the NH-B2020RGBA-HF among its other parts. Its parts include 6 switches, 5 resistors, 4 capacitors, 4 ICs and 3 connectors. It belongs with the ESP32 boards of this library.

Main components

4

README

README.md

ESP32 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

ESP32 LED Controller V2 Board

Version 1

✅ Released - Tagged as v1.0.0

ESP32 LED Controller Board


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

text
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
  1. Arduino IDE with ESP32 support
  2. 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
  1. Add ESP32 Board Support:

    text
    File → Preferences → Additional Board Manager URLs:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  2. Board Configuration:

    • Board: "ESP32S3 Dev Module"
    • Flash Size: "8MB"
    • Partition Scheme: "8M with spiffs (3MB APP/1.5MB SPIFFS)"
  3. Install Libraries via Library Manager

Upload Process
  1. Configure Settings in the .ino file:

    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
  2. 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"
  3. 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:

  1. 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)
  2. 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:

  1. Connect the board via USB-C
  2. The ESP32-S3 should automatically enter bootloader mode when uploading
  3. If upload fails, try:
    • Press and hold the BOOT button (if available on your board)
    • Click Upload in Arduino IDE
    • Release BOOT button when upload starts
  4. Open Serial Monitor (Ctrl/Cmd + Shift + M) at 115200 baud 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 460800 or 115200
  • Serial Monitor shows gibberish: Ensure baud rate is set to 115200 and USB CDC On Boot is enabled

🔌 Hardware Connections

ESP32 PinConnection
GPIO 40WS2814 LED Strip Data
GPIO 41Status LEDs (3x SK6805-EC20)
GPIO 1I2C SCL (AHT20 Sensor)
GPIO 2I2C SDA (AHT20 Sensor)
GPIO 4-7Control Buttons

🌐 Usage

After successful upload:

  1. WiFi Connection: Status LEDs flash yellow (5x) when connected
  2. Web Interface: Visit http://[ESP32_IP]:[WEB_SERVER_PORT]

Web Interface V2

  1. Alexa: Say "Alexa, turn on [your device name]"
  2. 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

text
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
  1. Arduino IDE with ESP32 support
  2. Required Libraries:
    • FastLED (for WS2812B) or Adafruit NeoPixel (for SK6812)
    • FauxmoESP (Alexa integration)
    • AsyncTCP & ESPAsyncWebServer (ESP32 versions)
    • LittleFS (file system)
Installation
  1. Add ESP32 Board Support:

    text
    File → Preferences → Additional Board Manager URLs:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  2. Board Configuration:

    • Board: "ESP32S3 Dev Module"
    • Flash Size: "8MB"
    • Partition Scheme: "8M with spiffs (3MB APP/1.5MB SPIFFS)"
  3. Install Libraries via Library Manager

  4. Choose Your LED Type:

    • v1/code/esp32-ws2812b/ for standard RGB strips
    • v1/code/esp32-sk6812/ for RGBW strips with dedicated white channel
Upload Process
  1. Configure Settings in the .ino file:

    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
  2. 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"
  3. Upload Arduino Sketch normally

🔌 Hardware Connections

ESP32 PinConnection
GPIO 2LED Strip Data
GPIO 17Status LED (Red)
GPIO 16Status LED (Green)
GPIO 18Status LED (Blue)
GPIO 4-7Control Buttons

🌐 Usage

After successful upload:

  1. WiFi Connection: Board flashes blue → yellow (5x) when connected
  2. Web Interface: Visit http://[ESP32_IP]:8080

Web Interface

  1. Alexa: Say "Alexa, turn on bedroom lights"
  2. 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

25
QtyValueFootprintReferences
2180Reasyeda2kicad:R0603R4, R5
21ufeasyeda2kicad:C0603C3, C4
1+easyeda2kicad:SW-SMD_L3.9-W3.0-P4.45SW4
1-easyeda2kicad:SW-SMD_L3.9-W3.0-P4.45SW3
11000ufeasyeda2kicad:CAP-SMD_BD8.0-L8.3-W8.3-LS9.1-FDU3
110Keasyeda2kicad:R0603R1
110ufeasyeda2kicad:CAP-SMD_L3.2-W1.6-RD-C7171C1
1120Reasyeda2kicad:R0603R3
122ufeasyeda2kicad:CASE-A_3216C2
15V 10Aeasyeda2kicad:DC-IN-TH_DC-005-5A-2.5DC1
162RResistor_SMD:R_1206_3216MetricR2
1BOOTeasyeda2kicad:SW-SMD_L3.9-W3.0-P4.45SW1
1ESP32-S3-WROOM-1-N8easyeda2kicad:WIFIM-SMD_ESP32-S3-WROOM-1-N8U2
1LED_ConnTerminalBlock:TerminalBlock_MaiXu_MX126-5.0-03P_1x03_P5.00mmJ3
1LM1117S-3.3easyeda2kicad:SOT-223-3_L6.5-W3.4-P2.30-LS7.0-BRU1
1LOGOlogos:logo2G***
1MODEeasyeda2kicad:SW-SMD_L3.9-W3.0-P4.45SW5
1NH-B2020RGBA-HFeasyeda2kicad:LED-ARRAY-SMD_4P-L2.1-W2.1-TL_NH-B2020RGBALED1
1POWEReasyeda2kicad:SW-SMD_L3.9-W3.0-P4.45SW6
1ProgConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1RESETeasyeda2kicad:SW-SMD_L3.9-W3.0-P4.45SW2
1SN74AHCT125PWReasyeda2kicad:TSSOP-14_L5.0-W4.4-P0.65-LS6.4-BLU4
1headerConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ1

Questions

How big is the Esp32-led controller PCB?

It measures 53.8 × 36.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Esp32-led controller use?

25 parts, built around the ESP32-S3-WROOM-1-N8, SN74AHCT125PWRE4, LM1117S-3.3 and NH-B2020RGBA-HF. 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 KiCad files?

From the arkandas/esp32-led-controller repository on GitHub, at the commit this page was made from: the board is v1/kicad/esp32-led-controller.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 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).

More from arkandas/esp32-led-controller

1
  • 2 layers93.4 × 42.6 mmEsp32-led controller v2, the printed circuit board in 3D

    Esp32-led controller v2

    arkandas/esp32-led-controller

    Controller for ws2812b/sk6812 LEDs

    66 parts5MIT

Similar boards

  • 2 layers139.5 × 153 mmPannel, the printed circuit board in 3D

    Pannel

    cocobot/cocotter

    370 parts2
  • 4 layers138 × 125 mmLeds, the printed circuit board in 3D

    Leds

    marmbrus/circuits

    159 parts
  • 4 layers80.4 × 49.3 mmLeany, the printed circuit board in 3D

    Leany

    gilleshenrard/leany

    STM32 ARM Core-M3 based inclinometer

    83 parts3
  • 2 layers15.2 × 33 mmPromicro smol, the printed circuit board in 3D

    Promicro smol

    picafe/promicro_smol

    Shield for the nRF52840 Pro Micro for SlimeVR trackers, supports 1.8V

    31 partsCERN-OHL-S-2.0
  • 2 layers40 × 40 mmTopaz's Board, the printed circuit board in 3D

    Topaz's Board

    picovrfbt/PicoVR-Trackers

    A Collection of trackers & Designs as well as documentation for PicoVR Trackers

    49 partsApache-2.0
  • 4 layers85.9 × 85.9 mmPd1180-epr r0.3, the printed circuit board in 3D

    Pd1180-epr r0.3

    techmannih/pd1180-epr

    PD1180-EPR — NEMA 34 Smart Motor-Mounted Stepper Controller with USB-C PD 3.1 EPR

    277 parts
  • 2 layers423.5 × 392.5 mmMtt final, the printed circuit board in 3D

    Mtt final

    itsmevjnk/MelbourneTrainTracker

    Melbourne Train Tracker project repository (SIT210, T1/2025)

    758 parts40