Diving into Fancy Christmas Light Displays

In 2018, I had an idea: I'd build a string of lights that I could program to do awesome things. I was inspired by my neighbor who'd bought a set of LEDs which changed color and all worked together to do some cool things, but that was store bought, thus not challenging enough for me.

I wanted mine to do fancy things. Awesome things.

So, I jumped right into it and bought a 10-pack of WS2811 12V 50-pixel strands.

Turns out I had no idea what to do next. As a result, I kinda thrashed for a while, making a bunch of false starts. I ended up picking up an Arduino Uno, installed FastLED on it, and manually programmed a bunch of effects. Pretty cool, but very limited; I had to recompile and install every time I wanted to change anything.

For power, I purchased a 12V power supply, learned about voltage drop and power injection, and now I could power and control a strand long enough to go across the front of my house.

For mounting, I ended up getting 2" PVC, using the table saw to cut a channel in the back, used my drill press to drill 279 1/2" holes spaced at 2", popped pixels into the pipe, ran power wire, and hung them on the gutters or used pipe clamps on the fascia boards.

And thus, the fully programmable LED strand was born!

Since that time, I've done a few improvements, mostly on the software, but I also revamped the controller. I now have a box containing the power supply, the ESP8266 board I graduated in to, and a few different odds and ends to make it work.

Top left: ESP2866 board with level shifter and fancy data outputs for 4 channels. Top Right: voltage converter (12V power supply and lights, 5V processor). Bottom: power supply

I also upgraded the software so now I can control the lights via MQTT, chosen because I'm a big home assistant user and am familiar with MQTT.

Still though, I don't have all sorts of cool effects, and even if I did, the color correctness of the lights is going away, and there is only one string of lights. If I want fancy, I'm going to have to add on. And, if I'm gonna get fancy, I might as well make it possible to sync to music as well.

And so I'm starting down the rabbit hole of huge light displays. And, since some of the answers I'm looking for don't seem to be readily available online, I'm also documenting my process, both so I can go back and remind myself what I did at midnight two weeks ago, and so there may be more public information on how to do the things.

The blog will have two main functions: the blog itself will provide a kind of event log, going step by step through what I'm doing. There may be a bunch of wrong turns, and I may completely invalidate things by what I do later. I'll try to go back and update old posts to point to real information, but sometimes I won't. I'm lazy, I know it, and I'm not apologizing. In blog parlance, this is the "posts" section.

The second section will be more of a wiki: this should contain the latest, correctest information, and as close to a representation of my display's current state as is reasonable. Again, using blog parlance, this is the "pages" section.

So, without further ado, here goes nothin.