Merry Christmas!!

Control the lights!!

How did I do this?


For the few of you out there that are nuts enough to do something like this yourself - here's the basic story.

2011


This all started with a bad bulb in some old incandescent lights. After an hour of trying to find the bad bulb, I gave up -- it was time for something new. So I bought some GE Color Effects lights. They were cool, but they always got out of synch with each other. I took to the web to find a solution, and found much better stuff!

I stumbled upon a site where someone (deepdarc) had hacked the GE lights using an oscilliscope, and discovered that each bulb has a microprocessor in it, along with the timing of signals to control them. Next thing you know I'm at Radio Shack buying an Arduino board. With a little work adapting some code I found online, I'd turned the Arduino into a replacement light controller, for up to 7 strands of lights. Below are a few links to resources that influenced me and/or provided some open-source help.

Link to Deepdarc's (Robert Quattlebaum) instructions on hacking GE lights
Link to Scott Harris's blog - Scott built on Deepdarc's work
Link to Andrew Coulson's blog
Link to Doityourselfchristmas.com, a forum filled with ideas
Link to the Arduino project -- an open source electronics platform


2012


Getting the lights in sync was great, but that wasn't enough -- even though I had wonderful synchronized patterns, I started getting interested in music controlled shows. The process of building a sequencer that could control the Arduino turned out to be very time-consuming, and there wasn't anything available to build on at the time (I have one designed for my old house, which is close to working but the timing is off -- but I haven't worked on it in a while). Then www.cheerlights.com gave me another idea.

So next I built a Visual Basic program that communicates with the Arduino box, and set it up to subscribe to messages from Twitter. After a few weeks, I discovered that only maybe 2 people in the neighborhood actually had a Twitter account. So I added a web site. That is where it took off -- we would get a few folks, each week, stopping in front of the house and playing around.

Link to the Cheerlights project
Link to the TweetInvi C# project (which can be called from VB programs
Link to Amazon Web Services (AWS), where this website is hosted.
Link to the pForm site, which helped me get started on the web pages.

2013


In 2013 I wanted to add something new, and came up with the idea of voice control -- after several experiments, I landed on a VB library and some code that produced a spectrum anaylzer. I changed the code from sending colors and patterns to the screen, to sending messages to my Arduino box. Using a Skype phone number, the machine running VB auto-answers the incoming calls and, if it hears sound, puts the lights and light box in a mode that visualizes whatever it hears. The lights will change colors based on pitch, and more/fewer of them will light up based on the volume. The delays of the Internet mean it isn't pefect, but still pretty fun to play with. When I get time, I am going to enhance this portion of things to make it more interesting -- but the first year I made it public, 2014, has been fun!

Link to the BASS audio library project

One other thing I did in 2013 was to convince my then next-door neighbor, Jason, to add some G35's and an Arduino and join the fun. Jason went out one weekend, soldered up some bulbs, loaded some of the Arduino and VB code, and he was up and running. Jason and I have both since moved, but our lights are still in sync. I am always open to more friends and neighbors joining the fun as well, and willing to share all the oode it took to get this going -- so just email me at cekowalski@yahoo.com if interested.

2014


In 2014, we moved, so that was an event in itself (new cables, more light strands, new web domain, and a new sign). I have also discovered that there are no longer any NEW Color Effects lights available, apparently, but the word on the web is the iTwinkle lights can be hacked and are pretty much the same as the old G35's (just with a Bluetooth controller -- GE finally caught up with all us hackers). I wound up paying nearly $5 a bulb for another strand of icicles this year, so I hope these things last a while!

I had just enough time this year that I went looking for a way to implement Jason's idea of a color wheel from the year before. Since each bulb contains a red, green, and blue LED, you can make thousands of colors. I had to learn some web development well beyond my prior experience, but eventually I got jscolor working and sending its color values to my VB program and Arduino light controller.

I also decided it was time for better webcams -- so with a couple of cameras and a Cloud based service called Mangocam, I now have a webcam facing the house, and another facing the street, to capture the cars that pass by and tinker with the lights, and allow those who aren't here in Colorado to see the lights remotely. The cameras allow my website to grab a single image and store it, so I have a history of all the visitors.

Link to the JSColor Javascript Color Picker
Link to MangoCam service

2015


For 2015, I got distracted with a few things. For starters, the installers pulled my wires loose for the upper roof -- leaving one strand nearly dead (it worked partially, but without a ground, there were a lot of lost signals resulting in bulbs randomly turning on and off). Some high winds made things worse by blowing down a strand of lights (they're clipped to shingles using plastic clips, and once one is loose, they all come down). My display wound up with about 10 bulbs just hanging down -- there's no way I am going to the 2nd story roof to fix it!

This year I bought 2 stands of iTwinkle lights and spent some time trying to reverse engineer the protocol used by these lights so that I can add more to my display WITHOUT getting the soldering iron out. So far, unfortunately, it appears that GE has still limited these to very few features -- although they did finally address the issue I had when this all started, i.e. the lights getting out of sync. The iTwinkle lights use Wifi and communicate with each other - and via software other than what you can load on your Apple or Android phone. But if I add these in 2016, it'll be with a new controller, or by using the same technique I have so far, connecting them to an Arduino. The features they include are just too limited, in my opinion, compared to what I've been able to add on my own. If I find a way to control individual bulbs with the existing controllers, however, this may greatly simplify the process of adding more lights. When this all started, I had way more time than I do now!

Anyway, I did manage to add a few things in 2015 -- the Candy Cane feature, and enhancements (and fixes) to voice/music control. The voice control feature now makes the lower roof of our house a "visual keyboard" of sorts -- detecting the primary frequency of your voice (or music) and displaying the appropriate "note" using a group of 6 of the 75 lights in that row. It is a work in progress though -- I doubt I'll be able to perfect this in 2015.

One major improvement in 2015, that many may not even notice, is that I have improved the timing of the light update. For some flashing features, you could actually "see" the 200ms+ that it took to update the lights. I modified code in the Arudino to update all strands in parallel -- bringing the update time for 200 bulbs down to just around 25ms. This should make the "fireworks" display for New Year's Eve look much better -- and open up more possibilities for synching to music.



Here's a diagram of the current setup





Here is a photo of the Arduino light box





2016


Well, 2016 got off to a big start. I'm writing this in February, and there have been dramatic changes already. For starters, after experimenting with the iTwinkle lights and trying to do some reverse engineering on the protocol, a group buy for a replacement controller appeared on doityourselfchristmas.com. The replacement involves a basic Wifi chip, the ESP8622, which can be programmed via the same language and IDE as the Arduino. A guy named Bill Porter designed a circuit board around this chip, specifically for the GE Color Effects lights. This gave me the happy possibilty of adding more pixels to the show in 2016, while not having the hassle of additional CAT5 cabling to run to each string. The entire show can now be run over Wifi.

This replaced my having to maintain any Arudino code, thanks to a guy named "Forkineye" on the doityourselfchristmas.com forum. He wrote software for the ESP8266 solution that would accept the saCN protocol for light control, an industry standard. Instead of maintaing Arduino code for 2016 and beyond, I ported the different features to VB.NET, and set the show up to be driven by Wifi. I had to solder 12 circuit boards from their components, which you can learn from the links the below. It was remarkably simple to do, actually. The VB.NET programming was a tad more difficult, since I needed to learn the sACN protocol. The standard for that is also attached, below.

As of Feb 13, 2016, I've basically finished converting the show to Wifi/sACN, 12 circuit boards and a few hundred lines of code later. I'm now moving on to enhancing the show for 2016 -- where my plan is to add a "create your own pattern" capability, allowing you to specify colors, patterns, and speed, and even save the pattern for later use.

If things go well this year, I'll also be adding voice control (started in late 2015 but put on hold for the Wifi controller side of things). I'll also be adding more lights this year, hopefully.

Here are some links to the works of others that I was able to leverage, this year:

Bill Porter's ESPixel GECE Wifi Pixel Contrller - build instructions
Forkineye's ESPixelstick software, used to translate SACN packets to GE Color Effects lights
sACN protocol standards


2017-2018


In 2017, I had to update some of the Twitter software (this is the 2nd time in several years that needed to be updated). That occupied quite a bit of time. I also presented the project for the GT program at Silver Creek Elementary, and experimented with the ability to create and save custom light patterns. Unfortunately, the voice control project was put on hold.
In these two years I did add the ability to control the light's speed, and continued to tweak the timing of the various speed levels to make the lights just fast/slow enough to still be attractive, while giving the visitors the ability to change it.

2019


In 2019, I took a break from the lights. I ran for Thornton City Council that year, and needed a few months off after having spent every weekend of my summer and fall talking to community members about our city. I did get a new laptop that year, and had to upgrade Visual Studio in the process -- which also meant some updates to the code. It ultimately wound up being too much work to get the lights up and operational in time.

2020


In the year of COVID-19, lights were a must, so up they went! So far, this year, I've done some more tweaking to the timing of the show, updated to the latest version of Skype (which has caused some slight problems with being able to call into the lights). I also decided to try and experiment with leaving the lights set to the last program selected, to encourage folks to set our house to their favorite color/pattern and see how long it lasts!

Finally, this year, I have fixed a longstanding issue with the color wheel - which only worked well if you tapped a color. Many folks were sliding their finger around (as they should) and the lights couldn't keep up. I finally found the source of the problem, and fixed it!

2021


This year (so far), I've added 50 new lights to the display (the garage). Some progress is being made toward settings things up to create a street-wide show, and possibly to set up a musical show with outbound music played over the phone or web. It's doubtful this will be complete by the end of the 2021 season, however.

2022


2022 Begins with some next experiments. It's early as I write this (12/2), but so far I've started to address a few things that I've wanted to tackle for a while.

First, when using the phone interface, there is a delay. I'm hopeful that few have noticed this, but with some music it is hard to miss. It's about 1-2 seconds because of how cell phone technology works, and there's really no way around it. My fix has been to upload pre-set tracks to the server, and when you choose one on your browser, I've attempted to synchronize the moment the song launches on your phone with the moment the sound analyzer starts sending signals to the lights. It's not an exact science without advanced software, so you may still see a 10-100ms delay, but it's better than the cell phone interface, which is easily 500ms or more.

Second, I've updated things on the sound processing, hoping to produce a better spectrograph. Amplitude multipliers should produce a better number of on/off bulbs as the sound gets louder/software in your music/singing, and I've updated the color analysis so that the upper and lower roofs detect sound on different octaves, as well as the arches.

My work continues in this area, with research on various algorithms to detect melody from polymorphic (multiple voices or instruments) sound. As it turns out, this is an area of computer science that is still quite a research problem, and a great example of how much more powerful the human brain is, over a computer. Anyway, I'm hoping to incorporate some of the rough research in this area into the system this year -- we'll see how it goes!

The future...


One of the ways that the Silver Creek students have inspired me is the idea of providing some type of "code window" where someone could paste in a simple program and have the lights execute that as a program. Stay tuned, but this will likely be a big undertaking. As of 2022, this one remains on the backburner. It would not only be a big undertaking, I'm not certain that many people would get a chance to take advantage of it.

By now you can see that I am always looking to add something every year -- so if you have any ideas you want to share, from new light patterns to other ways to interact -- please do! cekowalski@yahoo.com



Back to controlling the lights