For this project I built out a custom PCB with 10 SK6812 mini LEDs for use with WLED. Pretty straightforward board with a level shifter, mic, and IR inputs for controlling the colors. Uses a Xiao ESP32C3 for the control board, flashed with custom firmware to enable usermod for audio for this board as the official builds don't include it for ESP32C3.
PCB Project Link (gerber and BOM): https://www.pcbway.com/project/shareproject/WLED_Display_Board_ed596119.html
π BackgroundLast year around this time I won one of the tracks for the AMD AI Pervasive Developer Contest hosted on Hackster with my entry for "Infinite Sands" an interactive sandbox that used a projector and camera to get images which were processed with DepthAnythingV2 to get back a depth map and utilized with ComfyUI and ControlNet to generate images based on provided audio based prompts.
I received the award trophy at their ceremony and from the moment I got it I knew it was one I wanted to create a custom LED board for. It's a glass trophy so light can travel up through it and it's massive so makes for a nice display piece.
π€ SponsorshipI'd like to thank PCBWay for sponsoring my project by sending me the PCB used here.
I like how consistently reliable they are as a service. Every PCB I've received from them has been high quality, clean, and matches my gerbers without issue. The trace and space tolerances are held well, and the ENIG finish is beautiful and easy to solder on. Additionally I like how they offer to place the order number in a location of your choosing as I often place it under components to keep the board neat (like under the grove connector here).
Should check them out if you're in the market to order some PCBs. For the month of September 2025 they also have a special for purple solder masks.
For this PCB I designed it with intent to utilize an INMP441 microphone to make the project audioreactive. The PCB itself is pretty simple as I'll describe below.
As you can see I'm using A0, A1, and A2 for the INMP441. Additionally I have the IR sensor set to A3 for the MCU. Finally, the MOSI pin is setup as the pin for the LED data.
The SDA and SCL lines have pull-up resistors of 4.7k ohms to 3V3 for use with i2c. I've added two connectors one for uart and another for i2c to allow the board to potentially expand on its capabilities down the line. I like to leave the option open for home assistant based ESPHome projects so I may utilize this board later for that (although I like the color control with WLED).
I'm using a SN74LV1T34DBVR for level shifting the LED data line to 5V. It may not be needed for these LEDs (I see conflicting information) but it's cheap enough where I wanted to ensure I did everything correctly and covered all my bases.
Finally, the LEDs are setup with 100nf capacitors for each. They are one segment which I later mirror inside of WLED for creating effects that happen across both sides of the board.
You can see the placement of the components above. I used a 2 layer PCB for this project with GND fill on both sides.
π οΈ SetupAfter the board was soldered I put together the enclosure as shown in the video. I've attached the STL files with this writeup but they are specific for the trophy I have so you may need to make your own files or adjust my STL accordingly.
For the WLED side you'll need to either utilize the unofficial installer for audioreactive ESP32C3 or use platform.io to build your own custom firmware. Given it's going to be on my network I opted to build it myself to alleviate my concerns regarding prebuilt firmware from unofficial sources.
The process is pretty simple to build it yourself anyhow. Note: the documentation is a bit dated for the board selection process but otherwise is good.
You can see the official documentation here: https://kno.wled.ge/advanced/compiling-wled/
The steps involved though:
- Download the WLED project from github: https://github.com/wled/WLED
- Inside of the WLED directory run
npm install
Open
the WLED directory with VS Code- Install the platform.io extension if you don't have it already
- Open the
platformio.ini
file in the directory - Set the
default_envs
to your board (in this case I set it to esp32c3dev (https://github.com/wled/WLED/blob/v0.15.1/platformio.ini#L13C212-L13C222) - In the build flags for the esp32c3dev add
-D USERMOD_AUDIOREACTIVE
(you can see other boards with this flag in the file) (https://github.com/wled/WLED/blob/v0.15.1/platformio.ini#L531) - Build and flash your board
Lastly you'll need to configure your board inside WLED. First of course you'll need to assign it to your wireless network. When it's initially loaded it will create a WLED access point where you'll need to provide it with your information to continue.
I've included setup screens from my build above. You'll need to enable the audio reactive usermod in the usermod menu. After doing so you'll need to set the appropriate pins.
Next you'll need to set the LED data line pin and configure it for 10 LEDs.
Finally you can optionally set the LEDs to mirror the effect from the segment configuration.
π EnjoyI think the project turned out really well. The enclosure with the opaque diffusion looks neat and the glass nature of the trophy really helps to highlight the LED colors creating a really neat effect. This was a bit of a vanity project but one I really wanted to do some day as I felt just putting it on a shelf would do it a disservice as it was a really nice award.
Comments