EmbeddedRelated.com
Blogs
The 2025 DSP Online Conference

Project Log: Pixelblaze Christmas Lights

Nathan JonesDecember 22, 20252 comments

Contents

Introduction

It was a festive time of year! The merriest of times!

Also, my wife likes holiday decorations and I want to be the kind of Maker and embedded engineer who can whip up decorative and festive electronics projects. So I decided to build us some Christmas lights! Building a set of Christmas lights out of addressable LEDs seemed neat and easy and a classic Maker project; I even have a friend (ElectroMage) who sells an LED controller called Pixelblaze. The only other things I would need would be the LEDs, a power source, and some connectors. How hard could it be?

What’s Pixelblaze?

Pixelblaze is an ESP32-based addressable LED controller made by ElectroMage (a.k.a. Ben Hencke). The firmware running on the ESP32 (written by ElectroMage) makes it exceedingly easy to find or create LED patterns, to sequence those patterns, and to coordinate larger, multi-controller LED installations.

This article is available in PDF format for easy printing

I didn’t need to use a Pixelblaze controller for this project, of course; controlling a set of addressable LEDs is a very standard hobbyist project and I probably could have found sample code for whatever microcontroller I wanted on the internet or via an LLM of choice. But since my main goal was to get working lights on my house (and to not spend 4+ weeks in development), and also to support my friend, I bought a Pixelblaze. (Update: I’ve very happy with my decision! The interface is exactly the kind of thing that I would want from my LED controller and one that I might have convinced myself I could write on my own, only to regretfully realize afterward how much work Ben puts into this project.)

The general idea

All you need for a simple Pixelblaze setup is a 5 V power source, a 3- or 4-pin cable (for power, ground, data, and, for some LEDs, clock), and a 5 V-tolerant LED strip.

There are limitations on how many LEDs you can light up before overloading the USB port, though. Given the number of LEDs I wanted to light up (enough to go all the way around my house), I knew I would need a separate power adapter. I had some 13 V power adapters laying around that I wanted to use up, so I figured I’d use those. That meant I would need to source 12 V LED strips, not 5 V, and I would also need to find a way to generate 5 V for the Pixelblaze controller.

My solution was to use a P3 cable (below left) from ElectroMage to connect the power adapter to my Pixelblaze and LED strips. And ElectroMage sells a tiny 5 V buck converter (only 12 mm x 11 mm!) that I could put “inline” with the 13 V voltage line for conversion to 5 V.

So my setup (only slightly more involved than the basic one), looked like this:

(The X12 cable came with the Pixelblaze controller and was for the purpose of converting the standard header on the Pixelblaze PCB with whichever type of LEDs we’re going to be using.)

Now I needed to pick out my LED strips. Christmas lights don’t need to be particularly dense (LED-wise), and I didn’t want to spend $500 on my LED installation, so I eschewed strips like this or this (with upwards of 60 LEDs/m) and instead went with this one I found on Amazon. It might only have about 5 LEDs/m but it’s also far cheaper at around 1 USD per m, as opposed to 25 USD per m.

I did need my lights to be “weatherproof”, though, since they would be semi-permanently installed in a fully exterior location. Looking at the “IP” (ingress protection) scale, I would have guessed that I would need an LED strip rated at least IP54-ish. Most of the “weatherproof” LED strips I found were IP67 or higher (the ones I ended up buying were IP68), which definitely seemed sufficient.

With my preliminary design complete, I ordered my lights and my Pixelblaze and waited expectantly for them to arrive!

The parts arrive! Along with my first problems…

A few days later my parts arrived, and I began assembling my circuit. The barrel plug on my power adapter was a weird size, but I had expected this and was prepared to swap it out with a solderable 2.1mm barrel plug.

And that’s when I ran into my first problems.

To begin with, I realized that I didn’t have a spare wire for the 13 V “IN +” on the buck converter! I could have tapped into the 13 V line when I cut it to add my barrel plug, but that seemed kludgy, even for me, and I wasn’t confident I could sufficiently weather-proof it when the time came. Luckily, I realized that the blue wire on the Pixelblaze’s 4-pin connector is superfluous, since it goes to a CLK pin that I’m not using for my LEDs (which are WS2811s and only need the one DATA pin for controlling). Coincidentally, that blue wire would also be connected to 13 V once I plugged the cables together, so I realized that I could just snip the blue wire where it connected to the Pixelblaze and use it to bring 13 V to the buck converter. I used a spare wire that I cut from the end of my power adapter to make the ground connection. (Thanks, ElectroMage, for keeping those through-holes accessible, even with the white cable connector in place!)

The second problem was that I didn’t realize that the JST SM connectors that are typically used to connect LED strips together (the black connectors in the images above) have housings that mate specifically for the number of pins in the opposing connection. They aren’t like plain header pins, which you can offset if you need to. So the 3-pin JST connector on my P3 cable (left cable) wasn’t mating with the 4-pin JST connector that I bought with my Pixelblaze (the one that ends in a white connector on the controller board)!

I decided to attempt cutting open the housing on one side with my Dremel, so that the larger 4-pin connector would fit (below left; notice that the side nearest my index finger has been cleaved of its wall). I also needed to file down the tab on the 4-pin connector, since it was offset from the tab on the 3-pin connector that grabbed onto it (below right).

Incredibly, everything fit and mated fine. There was even enough left of the tab on the 4-pin connector for the 3-pin connector to still grab on to!

I plugged everything in for my first test and … nothing worked. Well, the Pixelblaze controller started just fine and I was able to connect to it without trouble. It even said it was generating a pattern! But the lights? Nada.

A quick Google search didn’t turn up any useful debugging tips, so I turned to ChatGPT. It also suggested the normal things (Is the voltage at the LEDs in the proper range? Do the LEDs and the controller share a ground?) along with some novel ones that seemed less likely to be the culprit (The LED strip is using an odd timing pattern for communication; the DATA line on the Pixelblaze might not be a high enough voltage to drive the WS2811s in the LED strip). I was starting to think that I was going to need a level shifter when my brain latched on to this suggestion:

“Yeah, I know there’s a directionality to the LED strip. But why would the cable on the Pixelblaze mate with the output of the LED strip?”

Welp, paint me red and slap me silly, that’s exactly what was going on! Once I’d flipped the LED strip around (and made a test connection with some jumper wires), the LEDs came right on! =D


The last problem I had was that, as a result of flipping the LED strip around, the 3-pin connectors also were inadvertently flipped horizontally: with the tabs of both connectors facing me, the connector coming from the Pixelblaze was PWR-DATA-GND (below right, bottom to top) but the connector coming from the LED strip was GND-DATA-PWR (below left, top to bottom).

I thought I was maybe going to need some more cable shenanigans, but I decided to simply flip the connectors around (as in the picture above) and mate them with a set of extra-long female header pins. I “locked” the connectors together with a pair of twist-ties (I knew I kept those twist-ties for a reason!).

Now, how to weatherproof it?

While the LEDs themselves may be IP68, my controller, at the moment, was not. I tried my best to not overthink this part either, and found an empty spice container in my recycling bin that seemed the perfect size to stuff all of my electronics.

I drilled holes in the top and bottom large enough to fit my connectors. To improve weather-proofing, I decided I wanted all connectors to sit inside the enclosure, with the LED strip connecting through the lid; I thought this would help the whole apparatus shed any rain water the best. Hot glue was used to seal up around the wires.

Once it was closed up, I was ready to go!

Hmm, what a spicy little setup I’ve got there!

NOTE: These LED strips also came with stripped fly-wires to insert power between any two LED strips along a chain.

I was pretty sure that those two wires accidentally shorting together had already caused my project to reset once, so I made sure to trim off any exposed wire before I installed my lights.

And the hanging part?

This part was the jankiest of all! Although there are lots of plans on Thingiverse and Printables for light clips, I wasn’t sure which would actually hold on to the eaves on my house. There was, however, a little lip next to the soffit that it seemed a paper clip might hold on to (you can see one in the center of the photo below).

So yes: I hung up my Christmas lights with paper clips.

Okay, but how does it look?

BEAUTIFUL. =D



Closing thoughts

Overall, I’m very pleased with the result. The Pixelblaze firmware is great, and I haven’t even explored the nearly 300 user-created patterns nor the scripting language that lets me define my own LED patterns. I let myself come up with janky solutions on this project and it helped me get the thing done, not overthink it to death.

On my next project, I intend to plan out the connectors a little better; I’ll do my best to answer questions like “What does this connector actually look like?” and I’ll make sure to include details of the connectors in my block diagrams so I can catch mis-matched connectors early on. I may also move to a 5 V power supply to help simplify the circuit.

This is a project I can highly recommend for all hobbyists. The electronics are pretty forgiving and the parts are easy to acquire, so the most important skills you’d need to complete it are soldering skills, debugging/problem solving skills, and middle-school level prototyping skills (hot glue and paper clips, y’all!). But maybe hire a professional to get up on your roof for the installation…

If you’ve made it this far, thanks for reading, happy hacking, and happy holidays!


The 2025 DSP Online Conference
[ - ]
Comment by praveenzil25December 24, 2025
Love the recommendation for hobbyists; those middle-school prototyping hacks are underrated! What's your next project looking like?Hey, great wrap-up on your Pixelblaze project! I'm glad the firmware lived up to the hype—have you tried any of those 300+ user patterns yet? The scripting language sounds powerful for custom animations; what's one pattern you've scripted that really stood out? On the connectors front, I totally get the janky solutions vibe for quick prototyping, but yeah, planning them out in block diagrams is a game-changer. 
[ - ]
Comment by 0xc0decafeDecember 28, 2025

Thanks! I appreciate your comments; definitely things I'm going to keep in mind next time!

Next project is probably either going to be a power supply tester for my friend who runs a microphone company or to finish the "reverse geocache" I started building for my wife 14 years ago. =D

To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.

Please login (on the right) if you already have an account on this platform.

Otherwise, please use this form to register (free) an join one of the largest online community for Electrical/Embedded/DSP/FPGA/ML engineers: