After working on my last hardware project, the Ara’Kus (a heavy metal opera) flickering/wireless lantern, I have moved on to hacking some Christmas lights.
I found that many people liked GE’s Color Effects G-35 lights. I happen upon this set of lights at Costco while shopping with my family. The price tag was ~$65 w/o tax. This seemed cheap for a string of 50 addressable rgb LEDs, but expensive for a set of Christmas lights. I didn’t buy them that day. Instead I sneaked over to Costco after work one day and picked them up under the radar.
I tried out the preset and found them less than desirable. Of course I needed to fix that. My plan was to be able to control the light via an Android app or web site or some such. I had the grand idea of allowing uses to write there own controller script (ECMAScript). I still think this is a good idea, but only after I have more stands that I could put in a 20×20 matrix ($570 w/tax in lights, ouch) or something. For now I am just going to use a simple web form to pick from a list of preset programs.
I found that sowbug’s G35Arduino library was a good place to start. I used the TiconXmas2012 example as a baseline. It was pretty easy to add new LightProgram classes to the ProgramRunner. I also modified ProgramRunner to provide the randomization of the LightPrograms and to allow a program to be specified via a byte provided from serial input. With this simple solution I could use an XBee module attached to an Arduino Fio to read remote serial communication. In other words I could put my Christmas lights outside and control them from my computer inside. With this wireless magic I was able to write a simple HTTP server that would relay the selected program (from a browser) to the XBee and ultimately to the Arduino Fio. I did this all on a breadboard. The power supply that comes with the G35 lights supplies 5V @ 3A. The Arduino Fio runs on 3.3V. I took the simple approach of using a fix linear voltage regulator with some filter caps. I tested the 3.3V supply with my DS1052E oscilloscope to find the most quiet filter configuration for the output. This involved a 0.1uF capacitor on the input and output and a 10uF electrolytic capacitor on the output as well. I replaced the data line going to the GE MCU with one going to a digital pin on the Arduino Fio (pin 13).
I’ll leave the reader to write there own version of this stuff. I suggest reading up on XBee series 2 communications as they apply to Arduino Fio. I also suggest checking out sowbug’s G35Arduino library. There are a bunch of libs out there that work very well so if you find one you like please let me know. If I have time and am motivated maybe I’ll clean up the code for all or some of the areas and post them. If you are interested in this please let me know.