Skip to the content
2 layers50 × 75 mmMy LED controller Rev B, the printed circuit board in 3D

My LED controller Rev B

Phil-CIA/LED-controller-ws28xx

This is a LED Strip controller

Size
50 × 75 mm
Copper layers
2
Thickness
1.6 mm
Parts
59
Nets
54
Pads
210
Tracks, vias
0, 0
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
2 Jun 2026
Updated
29 Jun 2026

Overview

My LED controller Rev B is an open-source printed circuit board by Phil-CIA, from the Phil-CIA/LED-controller-ws28xx repository on GitHub. It is a 2-layer board of 50 × 75 mm with 59 parts on 54 nets.

It is built around the ESP32-DEVKITM-1, SN74AHCT125PWRE4 and ESD5Z5.0T1G, with the WS2812B, 1SMA5927A and AO3400A among its other parts. Its parts include 15 resistors, 13 diodes, 7 capacitors, 6 connectors and 4 ICs. It belongs with the ESP32 boards of this library.

Main components

11

README

README.md

My LED Controller

Standalone ESP32 + WS281x project.

This repo now supports two firmware paths:

  • custom firmware in src/main.cpp (serial-driven tests and demo)
  • official WLED firmware (Wi-Fi + WLED app control)

This repo now also supports two hardware targets:

  • breadboard target profile
  • pcb target profile

Each target has independent identity lock (port/chip/MAC) in scripts/flash-targets.json.

Hardware

  • MCU: ESP32 family (default board config: esp32dev)
  • LED data: GPIO18
  • LED type: WS281x (NEO_GRB + 800kHz)
  • LED count: 300
  • Level shifter: 74H125
  • Upload port: COM5

Quick start

  1. Set active target profile
    • Breadboard: powershell -ExecutionPolicy Bypass -File scripts/set-active-target.ps1 -TargetName breadboard
    • PCB: powershell -ExecutionPolicy Bypass -File scripts/set-active-target.ps1 -TargetName pcb
  2. Build custom firmware for selected target
    • powershell -ExecutionPolicy Bypass -File scripts/guarded-flash.ps1 -Action build
  3. Upload custom firmware for selected target (guarded)
    • powershell -ExecutionPolicy Bypass -File scripts/guarded-flash.ps1 -Action upload
  4. Monitor
    • platformio device monitor -b 115200 -p COM5

Target profile setup

Before first guarded flash on a target, pin its immutable MAC:

  • powershell -ExecutionPolicy Bypass -File scripts/set-target-mac.ps1 -TargetName pcb -ExpectedMac 11:22:33:44:55:66

If expectedMac is empty for a target, guarded upload refuses to flash.

WLED quick start (Wi-Fi + app)

  1. Set active target profile first (breadboard or pcb).
  2. Use the official installer at https://install.wled.me (ESP32 target).
  3. Select the target COM port and complete flashing through the installer UI.
  4. On first boot, connect to the WLED access point (WLED-xxxxxx) and open http://4.3.2.1.
  5. In WLED settings, set hardware values to match this strip:
    • GPIO: 18
    • LED count: 300
    • Color order: GRB
  6. Configure home Wi-Fi credentials in WLED settings and save.
  7. Open the WLED app and add the device using wled.local or the assigned IP.
  8. Set WLED max current to 12000 mA for steady-state operation.
  9. Discover by target profile:
    • Breadboard: powershell -ExecutionPolicy Bypass -File scripts/discover-wled.ps1 -TargetName breadboard -OpenUi
    • PCB: powershell -ExecutionPolicy Bypass -File scripts/discover-wled.ps1 -TargetName pcb -OpenUi

If device reboots with invalid header

  • This indicates an incompatible direct flash layout.
  • Recover to known-good firmware with guarded upload:
    • powershell -ExecutionPolicy Bypass -File scripts/guarded-flash.ps1 -Action upload
  • Then use install.wled.me instead of raw one-file esptool write-flash for WLED.

Serial commands

  • on => resume animation
  • off => LEDs off
  • rainbow => return to rainbow mode
  • white, red, green, blue => solid color test
  • probe => raw GPIO18 pulse test
  • b0 to b255 => set brightness

Rev B action list (from validated PCB bring-up)

  • Keep LED outputs as validated:
    • external strip data on GPIO18
    • onboard 3-LED chain on GPIO19
  • Keep sensor wiring as validated:
    • AHT20 SDA=GPIO21, SCL=GPIO22
    • I2C address detected at 0x38
  • Fix switch hardware biasing on PCB:
    • Current switch pins (GPIO34, GPIO35, GPIO36, GPIO39) have no internal pull-up/down support.
    • Add external pull resistors per switch (recommended: 10k pull-up to 3.3V, button to GND, active-low).
  • Preserve guarded flash identity lock per target in scripts/flash-targets.json.
  • Keep target-separated profiles (breadboard, pcb) and avoid MAC reuse across targets.

PCB diagnostics commands

  • aht20 or sensor => read temperature/humidity from AHT20
  • i2cscan or scan => scan bus and print detected I2C addresses
  • switches or inputs => print raw switch pin states
  • boardcheck or diag => run sensor + switches diagnostics together

Notes

  • If your exact ESP32 board is different, update board in platformio.ini.
  • If colors are wrong, adjust pixel order in src/main.cpp.
  • Keep strict target guardrails in place; do not flash unknown devices opportunistically.
  • Use dedicated VS Code tasks per target (Breadboard:* and PCB:*).

Parts

59
QtyValueFootprintReferences
8100ΩPCM_JLCPCB:R_0805R2, R3, R4, R7, R8, R9, R15, R16
6ESD5Z5.0T1GDiode_SMD:D_SOD-523D6, D7, D8, D9, D10, D11
4MHolePadMountingHole:MountingHole_3.2mm_M3_Pad_ViaH1, H2, H3, H4
3100nFPCM_JLCPCB:C_0805C1, C3, C19
3SPARE_OUT_HDRConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_Vertical_SMDJ5, J6, J7
3WS2812BPCM_JLCPCB:LED-SMD_4P-L1.6-W1.5_XL-1615RGBC-WS2812BD1, D2, D3
2100kΩPCM_JLCPCB:R_0805R6, R10
210kΩPCM_JLCPCB:R_0805R1, R5
24.7kPCM_JLCPCB:R_0805R12, R13
2~1My_Parts_ Passive:10mm LOGO10mm1, 10mm2
1+1My_Parts_ Passive:SW_TS-1088-AR02016SW4
1-1My_Parts_ Passive:SW_TS-1088-AR02016SW3
10.1uFPCM_JLCPCB:C_0805C18
11000uFCapacitor_THT:C_Radial_D10.0mm_H12.5mm_P5.00mmC20
1100uFPCM_JLCPCB:C_1206C2
110uFPCM_JLCPCB:C_0805C17
11SMA5927APCM_JLCPCB:D_DO-214AC(SMA)D12
1220ΩPCM_JLCPCB:R_0805R14
1AHT20_C27578501My_Parts_ ICs:Humidity sensorU5
1AO3400APCM_JLCPCB:Q_SOT-23Q2
1BSP322PCM_JLCPCB:Q_SOT-23Q1
1Conn_01x03_PinConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ4
1ESP32-DevKitM-11My_Parts_ ICs:ESP32-C3-DevKitM-1U1
1Fan Controldigikey-footprints:PinHeader_1x2_P2.5mm_Drill1.1mmJ3
1LED_STRIP_CONNTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3_1x03_P5.00mm_HorizontalU9
1MODE1My_Parts_ Passive:SW_TS-1088-AR02016SW5
1POWER1My_Parts_ Passive:SW_TS-1088-AR02016SW6
1PTC RESET FUSE 700mA THFuse:Fuse_Bourns_MF-RHT100F1
1Power SELConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_Vertical_SMDJ2
1SMAJ26CADiode_SMD:D_SMAD4
1SMAJ5.0CAPCM_JLCPCB:D_SMAD5
1SN74AHCT125PWRPCM_4ms_Package_SSOP:TSSOP-14_4.4x5mm_P0.65mmU4
1US1MDiode_SMD:D_SMAD13
1~1My_Parts_ Passive:Amazon Buck FPBUCK1

Similar boards

  • 2 layers100 × 102.6 mmDSP Regulator HAT RevB, the printed circuit board in 3D

    DSP Regulator HAT RevB

    Phil-CIA/Development-Station-Power-Supply

    3 channel bench supply with current and voltage plotting

    163 parts
  • 4 layers101 × 51.5 mmQuack core, the printed circuit board in 3D

    Quack core

    HeyPCB/quack-core

    Brain board for the Open Duck Mini: Pi Zero 2W carrier, 14-servo STS bus, fused 2S power path in stitched copper zones (15-18 A battery side), USB-C charging with balancing, IMU.

    138 parts1CERN-OHL-S-2.0
  • 4 layers225 × 140 mmPanel, the printed circuit board in 3D

    Panel

    LeanderGlanda/Endstufe

    Custom designed 2.1 active crossover amplifier board

    422 parts2
  • 4 layers275 × 240 mmSupervisor, the printed circuit board in 3D

    Supervisor

    BennetLeff/temper

    a breville control freak ++

    440 parts1
  • 4 layers57 × 56 mmIot led strip pcb, the printed circuit board in 3D

    Iot led strip pcb

    0xjmux/iot_leddriver_hw

    ESP32-based WS2812B LED Strip Driver PCB, designed for music visualization

    85 parts9
  • 4 layers66 × 142 mmHandset, the printed circuit board in 3D

    Handset

    JeremyLakeyJr/mesh-phone

    OWASSO-1 DIY ESP32-S3 phone KiCad revF PCB project

    146 partsMIT
  • 4 layers208 × 129 mmMainboard v2 r1, the printed circuit board in 3D

    Mainboard v2 r1

    Benjamin-girard-1/geophys_acquisition_module

    Modular ESP32-S3 geophysical data-acquisition system with custom hardware, multi-channel ADC, GNSS, IMU, removable analog sensor cards, firmware, and host tools

    287 parts

Questions

How big is the My LED controller Rev B PCB?

It measures 50 × 75 mm and has 2 copper layers, 1.6 mm thick.

What parts does the My LED controller Rev B use?

59 parts, built around the ESP32-DEVKITM-1, SN74AHCT125PWRE4, ESD5Z5.0T1G and WS2812B. 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 My LED controller Rev B KiCad files?

From the Phil-CIA/LED-controller-ws28xx repository on GitHub, at the commit this page was made from: the board is Rev B/My LED controller Rev B.kicad_pcb and its schematic My LED controller.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the My LED controller Rev B design in my own project?

Its repository states no licence, so its author keeps all rights: ask Phil-CIA before reusing the design.