Skip to the content
PCBKitNew board
2 layersLedify, 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!

Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
61
Pads
120
Tracks, vias
29, 16
Routed
Yes
KiCad
KiCad 10.99 (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 2-layer board with 12 parts on 61 nets, routed with 29 tracks and 16 vias.

It is built around the ESP32-C6, FUSB302BMPX and USBLC6-2P6, with the DO5022P-103MLD and VS-6TQ045STRL-M3 among its other parts. Its parts include 5 capacitors, 4 ICs, 1 diode, 1 connector and 1 inductor. It belongs with the ESP32 and RISC-V boards of this library.

Main components

5

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

12
QtyValueFootprintReferences
3400pFPackage_TO_SOT_SMD:SOT-666C2, C3, C8
14.7uFPackage_TO_SOT_SMD:SOT-666C1
1470nFPackage_TO_SOT_SMD:SOT-666C4
1DO5022P-103MLDlcsc:IND-SMD_L18.0-W15.2L1
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
1LM2678T-5.0/NOPBlcsc:TO-220-7-L10.5-W4.5-P1.27-BLU5
1USBLC6-2P6Package_TO_SOT_SMD:SOT-666U2
1USB_C_Receptacle_USB2.0_16PPackage_DFN_QFN:Texas_X2QFN-12_1.6x1.6mm_P0.4mmJ2
1VS-6TQ045STRL-M3lcsc:TO-263AB_L10.0-W9.2-P5.08-LS15.4-BLD1

Questions

What parts does the Ledify use?

12 parts, built around the ESP32-C6, FUSB302BMPX, USBLC6-2P6 and DO5022P-103MLD. 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.collab/base/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
  • 4 layers35.5 × 52.5 mmLedify, 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!

    80 parts1

Similar boards

  • 6 layers76 × 46.4 mmRp2350 driver, the printed circuit board in 3D

    Rp2350 driver

    sequoia-hope/rp2350-motor-controller

    An RP2350 based brushless motor controller

    291 parts39
  • 4 layers90 × 80 mmGlider, the printed circuit board in 3D

    Glider

    pdyxs/glider

    Fork of zephray/glider (Modos Glider e-ink monitor) with a DP AUX polarity fix and a standalone GCC firmware build

    379 partsCERN-OHL-S-2.0
  • 4 layers58 × 47 mmGlider, the printed circuit board in 3D

    Glider

    kitspace-test-repos/kicad6-file-collection

    192 partsMIT
  • 2 layers100 × 55 mmWellD, the printed circuit board in 3D

    WellD

    kinggh0stee/WellD

    ESP32-C6 Zigbee well monitor — reads a 4–20 mA pressure transducer and DS18B20, reports water level, temperature, and battery to Zigbee2MQTT with OTA update support

    122 parts2MIT
  • 2 layers27 × 43.4 mmDevboard, the printed circuit board in 3D

    Devboard

    ImShyMike/C6dev

    A tiny and low power dev board for the ESP32-C6

    53 parts1MIT
  • 2 layers15.8 × 20.3 mmC6WiFI, the printed circuit board in 3D

    C6WiFI

    AngeloDuenas/SmartwatchProject

    This is an ESP32 demo project showcasing LVGL v7 with support for several display controllers and touch controllers. The demo application is the lvdemowidgets project from the lvexamples repository.

    26 partsMIT
  • 6 layers30 × 50 mmESP32-C6 Controller, the printed circuit board in 3D

    ESP32-C6 Controller

    j-alloy/ESP-C6_Custom

    To develop a Custom ESP32-C6 for study

    54 parts
  • 2 layers66 × 50.8 mmRGBW Led Driver, the printed circuit board in 3D

    RGBW Led Driver

    Morels31/RGBW-Led-Driver

    My first KiCAD Project, a 24v RGBW led strip driver.

    23 parts