Xmas Light Mania 2007 (yes, 2007)
Since Christmas is now upon us, it is time for that age old tradition: Christmas lights! When I was younger, my dad and I used to deck out the house with tons of lights. It was always a lot of fun (for me, maybe not him... he always pulled that "I'm too old for this blah). Now my dad doesn't do nearly as much, since all their kids have moved out. Since Trish and I just in an apartment, we can't do much at our place, though that doesn't keep me from dreaming of the day or enjoying other displays.
To get myself in the mood for 2006, I was checking out the computerized light show to TSO's "Wizards in Winter" from last year. I was showing it to Trish and then she said the fateful words that ignited a fire: "we should do something like that."
And thus, my quest to have something for the 2007 Christmas season shall begin. Why 2007? Because next year, we'll be in a house instead of an apartment, and the displays are quite elaborate, so can take time to develop. Also, I am going to go the geekier route: do it yourself!
There is a company called Light-O-Rama that makes the hardware and software for the computerized displays. They have a nice video collection of people using their products. They are a little expensive though. I know I would one day love to have one of the very elaborate displays, so some things like their 128 channel package run $2,500. Even their base 16 channel controller is $330 each, or 8 channel for $220 each, and the software is $100. Even their hobbyist kits (minus the enclosures) are $210 for the 16 channel and $100 for the 8 channel. Being the geek I am, I know I could build my own for far cheaper, and have far more fun doing it.
Almost the same as how they are doing them. Design a very simple mini-controller device that uses a series of solid state relays to turn different channels on/off. It would be controlled by an embedded processor and receive commands over ethernet. Using a network, the range of lights is easily scalable. Also, to avoid the overhead of using a full TCP/IP stack, would likely drop down to using UDP or maybe even raw ethernet headers. The mini-controllers would receive very basic "toggle channel 1" or "toggle channel 2" commands, so there isn't a lot of processing.
The show would be controlled by a main controller that issues commands to all of the mini-controllers. Initially, it would be a PC, though I could eventually move it out to an embedded device working along side a hardware MP3 decoder for synchronization, and a RTOS (Real Time Operating System) for issuing the commands.
For the software, I'd write some sort of storyboard software. Similar to how video editing software works, would have something like "turn on channel 1 at 2000ms for 100ms, turn on channel 2 at 2050ms for 100ms", etc. Maybe even one day software that lets me design it along side the MP3. Then the program would translate the series of sequences into a single series of commands. I'd like the timer like feel of "turn on for 100ms" rather than having to think of it like "turn on at 2000ms, turn off at 2100ms". But the translator would look at the storyboard and come up with the needed commands. Have it see "sleep 2000ms, turn on 1, sleep 50ms, turn on 2, sleep 50ms, turn off 1, sleep 50ms, turn off 2".
My goal would be to have the hardware and software designed for Christmas 2007 and have just a very basic display. No music, but some computerized sequence that just loops.
Though there are a few design details on my mind:
- Biggest question of all: shall I go PIC or AVR? Both have free C compilers, both have cheap development kits with ethernet (~$50), both have active hobbyist communities. Still torn here.
- Will be dealing with AC current... prototyping and dealing with AC current? Not looking forward to it. Hope I don't electrocute myself or burn the place down.
- Going to need a sealed enclosure for the device, so would need to figure that out as it will greatly affect how the hardware comes out.
- PIC or AVR? Damnit!