Are you going to decorate for Christmas? Never!
My agent mentioned during closing that, “the selling agent said this is a crazy Christmas light street or something…”
I didn't think much of the comment because there's been a steady principle to my life, present since birth:
Decorating = TimeSpent / NoUsableFunction;
Clearly this is dividing by zero… a compile error every time!
One day while moving things a neighbor introduced himself by saying, “Welcome to the neighborhood, my name is Greg… by the way, did anyone tell you about the Christmas lights we do?”
It's June, 95 degrees, I'm still moving in, and Christmas lights is sentence number three… what did I get myself into?
Five months later, I hesitantly hung up cheap Home Depot Lights with a few of those $20 laser spreaders.
Are you happy Greg!?
Within weeks I changed. Every night as I walked my girls down the street I saw wonder and joy in their faces. Three conclusions came to mind:
- I need to contribute to this joy, and I want to go all in.
- There is a lot of December traffic on our street to see lights, and I am the first house!
- I have to be me, and decorating isn't it.
Now like many of you reading this, I'm a systems builder and PLC programmer, and I bring industry to life by choice because it is rewarding and awesome.
This fact, along with my three insights, started me on an 800 hour journey to build a system to play a music-sequenced light show with full color control.
Being an experienced systems builder, I knew a long road was ahead to get to startup: New technology, complexity, first time installation.
I knew I needed a proof of concept before investing and scaling up, so I bought several types of lights from China (which is normal in this hobby space, and a task in itself) to see what I liked working with.
Through my proof of concept I learned the basics of the sequencing software, control hardware, and DMX addressing. By early March I had the following proof of concept up and working:
From there I placed full orders for the lights needed.
In building the full scale I had to learn numerous new things:
- Sequencing software
- DMX addressing (same concept as a Mobus map)
- Available light formats (voltage, protocol, brightness, etc.)
- Light controllers
- Distance limitations for power and the light serial protocol
- Welding (one can easily argue I never learned)
- How to design the lighting to fit the house
- Placement of power and control sources
- Optimizing sound levels in music files (using Audacity)
- Raspberri Pi setup
- Reinforcement of the importance, and gratitude, of standards (finding a reputable seller in China, and testing everything delivered, is key)
- Reinforcement of the importance of development methodology
Lucky for me there is a well-established online community of light show builders, and the tools available advanced substantially right as I joined in. There are also multiple open source options for sequencing software, and cheap light controllers.
The typical lights used for “RGB Pixel” full color control are lights made in China for advertising applications (e.g. building signs.) Many of the shows you will find online (e.g. YouTube) primarily turn entire strings of fixed color on/off.
How My Christmas Light Show Works
While there are countless ways to accomplish the same results, I'll focus on how I did it which is similar to the architecture image below.
The Raspberri Pi is the show player, the brain, and it runs Falcon Player (“FPP”), an open source light show player.
FPP plays the sound and sequence files for each song, broadcasting the light control packets via Ethernet.
The protocol used is E.131, or “Streaming-ACN”, which essentially is DMX512 over Ethernet (DMX512 was originally developed for stage light control and was closely related to RS485 serial.)
In my case I have the Raspberri Pi talking to two Light Controllers, one on each side of my house, to make my light string wiring easier.
The Light Controllers are middlemen, translating the commands they receive on their network port from the show player to the electrical signals the field devices (RGB Pixels) understand.
The controllers are configured with address maps that link DMX addresses to the controller ports the lights connect to (conceptually similar to hardwired IO or a fieldbus network.) The controller sends power and serial commands to each string of lights.
Each individual light in a string has a red, blue, and green LED, which can be set at brightness between 0-255 (hence “RGB pixel”.) The RGB brightness mix determines the brightness and color of each light. Do this fast enough and thousands of LEDs will dance to music.
RGB Pixel Nodes or “Bullets” Up Close
Many people use their PC as the show player to send commands to controllers, but it turns out a Raspberri Pi RUNS CIRCLES around a PC for this task. This provides superior refresh rates which equate to faster animation and more possibility for sequence detail.
In my system I output the audio from the Pi through a USB to 3.5mm jack adapter to a Yamaha mixer which then outputs to an FM transmitter. The adapter helped cut down on signal noise vs. using the native 3.5mm jack on the Pi.
Having the FM transmitter allows cars passing by to tune in, and allows me to use an FM receiver to play the music over outdoor speakers for pedestrians walking by.
The show player also includes a scheduling function to start/stop the show, and I use programmed power strips (link below) to cut power to my controllers, mixer, FM transmitter, and receiver. I do not hard power cycle the Raspberri Pi, because like a PC the install will corrupt eventually.
The sequencing software is comparable to PLC programming software as it abstracts the details of the devices (lights in this case) to provide a human-friendly programming environment with a library of existing effects.
I start by configuring the type and quantity of lights (like PLC IO), assign DMX addresses (like a PLC tag database), and creating light groups I want (like PLC UDTs, user defined tags).
To create each music sequence, I import the sound file and the software adds markers of each beat for visual reference and displays the wave form in the editor. I'm off to the races “programming my house”!
The following screen shot is three seconds of my “Sugar Plums” sequence done in Vixen. There is a lot going here, but for conceptual sake notice the following:
- Time is left to right
- There is a tree of my defined light groups on the left. I can apply effects to entire groups, the software in takes care of mapping the effect to all lights in the group. Groups can also be expanded to apply effects to sub-groups, or even the individual light level if desired (I have gone that crazy before)
- There is a library of existing effects (upper right)
- Detailed configuration options for each effect are on the lower right (one of my chase effects is highlighted here). I made a rainbow gradient, ramped the brightness, set the pulse time, etc.
Key Decisions born from being a PLC Programmer
In hindsight, the following decisions proved key to pulling this off:
- Using 12v based lights yields lower currents (vs 5v lights). This made for far easier power distribution. 5v is the alternative which purists say provide a better quality of light to the eye. For me it was not worth the extra wiring, fusing, and planning. This allowed me to keep the current on all strings below 5 Amps, meaning I could use the native fusing/distribution on the controllers. No special design or wiring required.
- I bought all my lights with 18awg wire instead of 20 or 22awg which is common. Larger gauge wire means lower resistance which means less voltage drop. Voltage drop can be annoying, it can causes flickering and/or color errors and can require a ton of time to troubleshoot because it can affect the power and/or serial buses concurrently.
- By August I was burning out with many problems and not enough time, I made two crucial pivots:
- I switched to a higher quality controller which substantially reduced my configuration time and lessened voltage drop issues. Falcon Pixel Controller is a reliable and well-supported controller with native functionality to integrate with Falcon Player. I was using a “E682” previously and found mine flaky.
- Planning for the wiring was getting impractically difficult. Intuition told me my approach must be wrong. I was spending a ton of time with Sketch3D trying to figure out how far each 50 light string would get on my house. As a hail mary I did a 1 hour consulting call with HolidayCoro. Breakthrough, I was playing the wrong game. Instead I cut the light strings as needed to make custom fit strings for each house segment. It's madness otherwise, imagine trying to design, and later install, an irrigation system without being able to cut the 8ft PVC pipes.
- I decided to use heat shrink solder tubes for splicing (vs. traditional soldering). While I wouldn't use them in a plant floor, they have been convenient and reliable here.
- From the start of design I maintained maps for the DMX addresses, controller port assignments, and current load per power supply. This is comparable to a master tag map and I/O list for an industrial system. Being organized saved a ton of time throughout the year.
- I used Evernote to maintain to do lists, at times there were 100s of tasks (to buy, to fix, to test, to learn, to install etc.).
- I tested, then tested, followed by testing, then tested some more. I knew “year 1 startup” would have countless unplanned issues (it did) and there wouldn't be time to work out basic quality mistakes.
Startup and Finale
I took off the entire week of Thanksgiving for good measure. I ran into flickering issues, accidentally taught one of my two year olds a profanity, but by Thanksgiving day IT WORKED! The visual is stunning – video of any quality does not capture the brightness and fidelity.
By December I had witnessed families dancing in my driveway, which still happens to this day. The below video is my favorite sequence, which you may notice was the song in my proof of concept. I spent 100 hours sequencing this song, down to timing the swell of each bass drum hit. No it doesn't have to take that long, but I was obsessive with experimenting and detail.
Performing project debriefs substantially accelerates the value of experience, for individuals and teams. I make them routine events where I work.
I ended up with a three page debrief for my “year one” light show, and have done one every year since (e.g. what went right, what went wrong, key lessons learned).
My PLC programming and startup background was instrumental. Many of the software and control architecture concepts new enthusiasts struggle with the most I was able to work through relatively quickly.
Maintaining a “Growth Mindset” (see image) got me through countless challenges and mistakes. By August I was ready to quit and had to lean on growth mindset self-talk to manage my motivation cycles and press on.
The community and tools available for this hobby craft are unbelievable. The folks behind Vixen, xLights, Falcon do amazing work. It's hard to believe how modern, functional, stable, and reliable these (mostly) free tools are. The key to getting a good look is equidistant spacing of the lights.
My style isn't for everyone. There are puzzled looks and rapid drive-bys, but I also see faces of wonder. I even saw square dancing once.
I still watch the shows all the time. Like an industrial application, I remain fascinated seeing my work coordinate the behavior of individual components to manipulate the physical world as a system. I bet you can relate.
I didn't track costs real well, and probably spent 50% more than needed… IF I knew what I was doing the first time.
I'm guessing $2,500 for what you see. With probably another $1,000 spent on mistakes between Home Depot runs, trial and error, tools I didn't have, and proof of concept items I didn't use.
- I see more dancing each year and want to focus on that
- One or more large pixel based matrices for advanced animations and pictures
- High power DJ moving light heads (my current fixation with proof of concept complete in 2017)
- Learn video editing and capture
- Maybe some motion control, maybe a PLC?!
Some of My Other Sequences
Summary of Resources/Links
- Vixen Lights (free sequencing software)
- xLights (free sequencing software, more complicated, arguably more powerful)
- A handy Raspberri Pi kit
- Heat shrink solder tubes
- 12vdc 350W Power Supplies
- TP Link Gigabit Switches
- Programmable Power Strips, these are cheap and super handy
- Falcon controllers
- Falcon Player (free show player software for Pi)
- Audacity (open source audio file editor, I use it to normalize sound levels and create skits)
- Christmas Light Forum, highly engaged community, countless issues can be shortcutted using the forum
- Ray Wu's Alibaba Store, lights used for this hobby are exclusively from China, Ray is trusted in the community
The heart of the show:
- The North side of my house has the “brains”
- There is another smaller cabinet in South side with my other controller
- I have gigabit TP-Link switches which isolate show traffic on my home network, the show is all hardwired Ethernet
- Yes, Africa and South America are in the wrong locationInside the heart:
- Raspberri Pi in upper right
- Mixer (this model is way overkill, I bought it while troubleshooting noise problems)
- FM transmitter
- 12v 350W power supply
- Falcon F16v2 controller (red board)
- Light strings shown, I had to use extension cord cable for my furthest elements (to minimize voltage drop)
- Ethernet cables on right are actually DMX512 over serial for the flood lights
- Power and communication is carried over umbilicals to each string.
- Flood light for the window. Outdoor speaker.
- In background, roof outlines are done with strings mounted via PVC pipes.
Equidistant spacing of lights is fundamental for sequenced lights to look decent. The untrained eye will see this even if they can't describe it.
About the author:
Engineering Manager at Enterprise Automation
I am a systems builder at heart, with a project manager mind, and love bringing life to process. I am devoted to methodology – nothing feels better than a drama-free startup with a client watching.
I want to thank Chris for taking the time and effort to write and share his Christmas Light Show journey with us here on The Automation Blog.
If you've enjoyed it as much as I have, please show him your support by sharing it with friends and colleagues.
I'd also like to note that during the editing process I had to make some minor changes to Chris's original article in order to format it for the blog. And in appreciation for Chris sharing his story with us, I encouraged his to include product affiliate links the the products he was recommending so he would have a change to earn a small commission if anyone uses his product links to make a purchase.
Finally, if you'll like to join Chris as a guest blogger here, please let me know using the contact form here.
Sincerely, Shawn Tierney of The Automation Blog.