Skip to the content
PCBKitNew board
4 layers35.5 × 52.5 mmLedify, the printed circuit board in 3D

A super small addressable LED controller with USB-C PD up to 100W, a switchable 5V/12V output and Bluetooth!

Size
35.5 × 52.5 mm
Copper layers
4
Thickness
1.58 mm
Parts
80
Nets
61
Pads
309
Tracks, vias
528, 399
Pours
10
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
4 Sep 2026
Updated
15 Oct 2026

Overview

Ledify is an open-source printed circuit board by notaroomba, from the notaroomba/ledify repository on GitHub. It is a 4-layer board of 35.5 × 52.5 mm with 80 parts on 61 nets, routed with 528 tracks and 399 vias.

It is built around the ESP32-C6, AP63203WU and BMP581, with the FUSB302BMPX, LM61495QRPHRQ1 and OPT4001DNPRQ1 among its other parts. Its parts include 44 capacitors, 11 resistors, 10 ICs, 4 connectors and 4 inductors. It belongs with the ESP32 and RISC-V boards of this library.

Main components

12

README

README.md


Ledify

A super small addressable LED controller with USB-C PD up to 100W, a switchable 5V/12V output and Bluetooth!

KiCad Espressif MicroPython

Key Features • PCB • Firmware • Credits • License

Ledify Render

Key Features

  • ESP32-C6 microcontroller with Wi-Fi 6 and Bluetooth LE
  • 16MB flash (W25Q128JVP)
  • USB-C PD up to 100W with the FUSB302B
  • Switchable 5V/12V LED output from a 10A buck converter (LM61495), selected in software
  • Addressable LED pads (VCC / SIG / GND) for WS2812B, WS2811 and WS2815 strips
  • IMU and Barometer - BMI323 (6-axis) and BMP581 pressure sensor
  • Ambient light sensor (OPT4001) for automatic brightness
  • I2S microphone (ICS-43434) for sound-reactive effects
  • PCB trace antenna with an impedance matching network
  • 3.3V buck converter (AP63203) for the logic side
  • ESD protection on the USB data lines
  • Reset and boot buttons and a mounting hole
  • 4-layer PCB design with optimized RF layout and routing
Ledify Flyer

PCB

Designed in KiCad with attention to RF design and high current power delivery. The board is 4 layers with a solid ground plane under the ESP32, the flash and the antenna feed, and the LED buck follows the layout in the LM61495 datasheet.

Schematic

Schematic

Layout

PCB Layout

Pinout

GPIONetFunction
2LED_SW_VLED voltage select (low = 5V, high = 12V)
3LED_ENABLELED buck enable
5LED_CONLED data (SIG pad)
6MIC_OUTMicrophone I2S data
22MIC_CSMicrophone I2S word select
23MIC_SCKMicrophone I2S bit clock
10I2C_SDAI2C data (FUSB302B, OPT4001)
11I2C_SCLI2C clock (FUSB302B, OPT4001)
16USB_PD_INTFUSB302B interrupt
18SPI_MISOSensor SPI
19SPI_MOSISensor SPI
20SPI_SCKSensor SPI
21CS_IMUBMI323 chip select
7CS_BAROBMP581 chip select
12DNUSB D-
13DPUSB D+
9CHIP_BOOTBoot button
8-Strapping pin, pulled up to 3V3

Next revision

Rev 1 works; these are the changes queued for rev 2, each with the reason it is worth a spin of the board.

ChangeWhyHow
Measure the strip currentThe power limit and the warnings are arithmetic from the frame; a measurement catches strips that draw more than the model and lets the firmware show real wattsINA226 (I2C, address 0x40 next to the FUSB302 at 0x22 and the OPT4001) with a 2 mΩ 2512 shunt high side on the LED rail after the buck (10 A gives 20 mV, 1 mA resolution; 0.2 W in the shunt). Its VBUS pin reads the rail, so it also sees the 12 V setting. ALERT to GPIO14 for an over-current interrupt
Second data outputTwo strips from one board, or a strip fed from both ends with the data going into each halfA second SIG pad on GPIO17 (a second RMT channel in firmware). Both outputs through a 74AHCT1G125 each: 3.3 V data into 5 V pixels is out of spec today and works only over short leads
5.2 V setting for long stripsA one-end-fed 5 V strip sags towards the far end and goes warm; starting 0.2 V higher is what long-strip supplies do499 kΩ from U6 FB to the drain of a 2N7002, gate from GPIO0 with a 100 kΩ pull-down. In parallel with the 24.9 kΩ bottom resistor it makes 23.7 kΩ, so 1.0 V × (1 + 100/23.7) = 5.22 V on command; the 12 V setting (14.3 kΩ switched in by Q1) is untouched
Power injection padsThe real fix for the sag is a second feed into the far end, and it needs a 10 A home on the boardA second VCC/GND pad pair next to the first, both on the wide copper of the LED rail
A user buttonThe BOOT button already toggles the output in firmware, but it sits under the case and shares the strapping pinA button on GPIO1 with its own pull-up, away from the strapping pins
Microphone portBoard 1's ICS-43434 passes the electrical checks but hears nothing: the acoustic port is suspectedConfirm the port hole in the copper and solder mask under the mic, and keep the mic away from the buck inductor

Free GPIOs after rev 1: 0, 1, 14, 17 (4 and 15 are strapping pins). The feedback network today: 100 kΩ top, 24.9 kΩ bottom, 1.0 V reference, 5.02 V; Q1 adds 14.3 kΩ in parallel for 12.0 V.

JLCPCB Quote

JLCPCB Quote

Firmware

The firmware in firmware/ is an ESP-IDF v6.1 project with drivers for everything on the board: USB-PD negotiation on the FUSB302B, the LED strip, the light sensor, IMU, barometer and microphone. It takes the same text commands from three places: the USB serial console, Bluetooth (it advertises as Ledify with the Nordic UART service, so nRF Connect or Bluefruit Connect work) and MQTT. Point it at a Wi-Fi network and a broker and it shows up in Home Assistant on its own as a light with eight effects (solid, rainbow, temperature, spectrum, meter, sound, VU, pulse), an auto-brightness switch, sliders for the pixel count and the sound, light and temperature tunables, a chip-type select and illuminance, temperature, pressure and sound sensors. The colour source, brightness source and overlay can also be mixed freely, so a rainbow VU meter that dims in a dark room is three commands. Brightness is capped automatically to what the USB-PD contract can supply, so a long strip on a laptop port dims instead of browning out.

CommandAction
on / offLED buck on or off
rgb R G BFills the strip with a color (0-255 each)
level NBrightness cap (0-255)
count NHow many pixels to drive (up to 1000, also a slider in Home Assistant)
type ws2812Chip type: ws2812 (B/C/D/E, WS2813, WS2815), ws2811, sk6812, sk6812w, ws2816
mode NAMEPreset, also the Home Assistant effect: solid, rainbow, temp (blue-white-red from the temperature), spectrum (bass/mid/treble bars), meter, sound, vu, pulse
color / bright / overlayMix your own: colour source, brightness source (level or sound), overlay (none, vu, pulse)
auto on / auto offBrightness follows the ambient light sensor, off below a night threshold
gain N, lux LO HI, night N, temp LO HISaved tunables for the sound, light and temperature styles; temp 21.5 feeds a temperature in
volt 5 / volt 12Selects the output voltage, turns the output off first. 12V needs a 15V+ PD contract
statusJSON with the PD contract, network state, lux, temperature, pressure, motion and sound level
pd / netThe charger's offered voltages / Wi-Fi and MQTT state
wifi SSID PASSSaves the Wi-Fi credentials and restarts
mqtt URL USER PASSSaves the broker and restarts
ota URLUpdates the firmware over Wi-Fi, with automatic rollback

The output always boots at 5V and off, and the board asks the charger for the highest voltage up to 20V as soon as it starts. Credentials, the strip length, the chip type and the tunables are stored in the ESP32's NVS partition, never in the code. SIG is 3.3V logic going to the strip's DIN; the wiring notes, MQTT topics and the Mosquitto-on-Railway broker setup are in firmware/README.md.

Building and flashing

bash
cd firmware
source ~/.espressif/tools/activate_idf_v6.1.sh
idf.py build
idf.py -p /dev/cu.usbmodem2101 flash monitor

Credits

This project uses:

You may also like...

  • Cyberboard – A Raspberry Pi Pico-sized STM32 development board
  • CyberCard – A Cyberpunk themed NFC hacker card
  • Ember – USB-C PD Powered Hotplate
  • Trace – An ruler for engineers
  • Athena – A flight controlelr with a triple MCU architecture

License

MIT


notaroomba.dev  ·  GitHub @NotARoomba  · 

Parts

80
QtyValueFootprintReferences
14100nFCapacitor_SMD:C_0402_1005MetricC16, C19, C20, C24, C26, C27, C30, C31, C37, C38, C39, C40, C43, C44
74.7KResistor_SMD:R_0402_1005MetricR5, R6, R7, R8, R9, R10, R11
51uFCapacitor_SMD:C_0402_1005MetricC21, C25, C28, C33, C36
522uF 25VCapacitor_SMD:C_1210_3225MetricC10, C11, C12, C13, C14
418pFCapacitor_SMD:C_0402_1005MetricC22, C23, C34, C35
310uF 50VCapacitor_SMD:C_0805_2012MetricC5, C7, C15
3Conn_01x01_PinConnector_Wire:SolderWirePad_1x01_SMD_3x6mmJ1, J3, J4
2100KResistor_SMD:R_0402_1005MetricR1, R2
222uFCapacitor_SMD:C_0805_2012MetricC17, C18
2470nF 50VCapacitor_SMD:C_0603_1608MetricC6, C8
2470pFCapacitor_SMD:C_0402_1005MetricC2, C3
2TS-1088-AR02016lcsc:SW-SMD_L3.9-W3.0-P4.45SW1, SW2
1100nFCapacitor_SMD:C_0402_1005Metric_Pad0.74x0.62mm_HandSolderC4
110nFCapacitor_SMD:C_0402_1005MetricC32
110uFCapacitor_SMD:C_0603_1608MetricC29
114.3KResistor_SMD:R_0402_1005MetricR4
11uFCapacitor_SMD:C_0603_1608MetricC9
124.9KResistor_SMD:R_0402_1005MetricR3
12N7002KPackage_TO_SOT_SMD:SOT-23Q1
14.6pFCapacitor_SMD:C_0402_1005MetricC42
14.7uF 35VCapacitor_SMD:C_0603_1608MetricC1
14pFCapacitor_SMD:C_0402_1005MetricC41
1AP63203WUPackage_TO_SOT_SMD:TSOT-23-6U3
1Antenna_ShieldRF_Antenna:Texas_SWRA117D_2.4GHz_RightAE1
1BMI323lcsc:LGA-14_L3.0-W2.5-P0.50-TL_QMI8658AU7
1BMP581lcsc:LGA-10_L2.0-W2.0-P0.50-TL_BMP581U8
1ESP32-C6_C5364646lcsc:QFN-40_L5.0-W5.0-P0.40-TL-EP3.3U1
1FUSB302BMPXPackage_DFN_QFN:WQFN-14-1EP_2.5x2.5mm_P0.5mm_EP1.45x1.45mmU4
1ICS-43434_C5656610lcsc:MIC-SMD_6P-L3.5-W2.7-P0.90-BLU11
1LM61495QRPHRQ1lcsc:VQFN-16_L4.5-W3.5-P0.50-TL_TI_RPHU6
1MountingHoleMountingHole:MountingHole_2.2mm_M2_Pad_ViaH1
1OPT4001DNPRQ1lcsc:USON-6_L2.0-W2.0-P0.65-BL-EPU10
1Q13FC1350000400lcsc:FC-135R_L3.2-W1.5X2
1TCGL1005B1N8SATlcsc:L0402L5
1USBLC6-2P6Package_TO_SOT_SMD:SOT-666U2
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_HCTL_HC-TYPE-C-16P-01AJ2
1VHF160808H2N0STlcsc:L0603L3
1W25Q128JVPPackage_SON:WSON-8-1EP_6x5mm_P1.27mm_EP3.4x4.3mmU5
1XL2EL89COI-111YLC-40Mlcsc:CRYSTAL-SMD_4P-L3.2-W2.5-BLX1
1XRCD43-3R9Mlcsc:IND-SMD_L4.0-W3.2_XRCD43L2
1ZEMS1770-6R8Mlcsc:IND-SMD_L17.5-W17.5_SLO1770HL1

Questions

How big is the Ledify PCB?

It measures 35.5 × 52.5 mm and has 4 copper layers, 1.58 mm thick.

What parts does the Ledify use?

80 parts, built around the ESP32-C6, AP63203WU, BMP581 and FUSB302BMPX. 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 Ledify KiCad files?

From the notaroomba/ledify repository on GitHub, at the commit this page was made from: the board is pcb/ledify.kicad_pcb and its schematic pcb/_restore_backup_2026-09-29T14-25-15-173/ledify.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ledify design in my own project?

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

More from notaroomba/ledify

1
  • 2 layersLedify, the printed circuit board in 3D

    Ledify

    notaroomba/ledify

    A super small addressable LED controller with USB-C PD up to 100W, a switchable 5V/12V output and Bluetooth!

    12 parts1

Similar boards

  • 6 layers85.6 × 33.7 mmIWR AOP MODULE, the printed circuit board in 3D

    IWR AOP MODULE

    l3wi/IWR-AOP-MODULE

    60 GHz mmWave radar module built around TI's IWR6843AOP: USB-C or carrier-socket operation. KiCad 10, JLCPCB-ready.

    158 parts4MIT
  • 4 layers26.7 × 20.3 mmOPT4001, the printed circuit board in 3D

    OPT4001

    LordsBoards/OPT4001-STEMMA-QT-Light-Sensor

    A STEMMA QT board using the Texas Instrument's OPT4001 ambient light sensor

    17 parts2
  • 2 layers50 × 70 mmNode Alarm Electgpl, the printed circuit board in 3D

    Node Alarm Electgpl

    electgpl/NodeAlarm

    This project is a simple motion sensor with subgigahertz FSK interface based on RFM69 and ESP32C3 RISC-V core, all devices are woken from deep sleep by the IRQ of AS312 PIR sensor, this project is open source and…

    50 parts
  • 2 layers34.8 × 33.8 mmBuck converter 5v, the printed circuit board in 3D

    Buck converter 5v

    waxters-osu/senior_design_low_noise_visibility_drone

    Low-noise & low-visibility drone senior design project.

    26 parts
  • 2 layers50.8 × 101.6 mmCASE, the printed circuit board in 3D

    CASE

    awetzelkern/CASE

    Miminal flight computer designed to be a stepping-stone into creating PCB hardware and software for a fully custom thrust-vectored rocket.

    57 parts
  • 4 layers25 × 41.5 mmPhyphox m, the printed circuit board in 3D

    Phyphox m

    Dorsel89/phyphox_m_pcb

    61 partsGPL-3.0
  • 4 layers100 × 35 mmNavigator, the printed circuit board in 3D

    Navigator

    Mig-M27/Avionics-PCBs

    Este repositório é usado para gerir as versões dos projetos KiCAD do sistema de Avionics da Porto Space Team. Está dividido em 2 secções: 1.

    107 parts
  • 4 layers52.5 × 59.7 mmESPHome Indoor Multi Sensor, the printed circuit board in 3D

    ESPHome Indoor Multi Sensor

    mikelawrence/esphome-indoor-multi-sensor-hardware

    ESPHome Indoor Multi-Sensor hardware. This design supports Radar/PIR Presence, Temperature, Humidity, Pressure, Light, CO2, CO, VOC, NOX and PM sensors.

    113 parts14CERN-OHL-P-2.0