About half a year ago [John] over at Frank’s Kitchens came to me with an idea for a giant lighting project. He had this 6ft diameter aluminum frame globe rescued from the Philadelphia Theater Company and wanted it to be an interactive display of sorts. After a few discussions we got together and somehow managed to order 800 3 watt LEDs in red, green, blue, and white. We had a system that worked great on paper, and managed to get it built by Valentines day for a big show. It failed miserably and hardly even illuminated the LEDs. I, naturally, took this far too personally and set out for a complete redesign, looking in the direction of digitally addressable LED strips.
In addition to building a crazy turbo charged LED array I also spent a lot (a whole lot) of time coding a nice clean fully functioning RGB LED strip controller using an Arduino Pro Mini (5V 16 MHz), the MSGEQ7 audio frequency multiplexer (PDF) , and an IR remote. I plan on using this for other projects so the code can be easily reconfigured to use many different LED strips and a whole slew of IR remotes.
The schematic of the globe is here. The top half of that schematic be catered to other projects using a variety of pre-built LED strips. The pastebin with code is here, fastSPI_LED and IRRemote here and here. Some code jockeying was required to get IRRemote.h and FastSPI_LED to play nicely together, so check the code comments.
At the start of the build I had a huge frame with red, green, blue, and white LEDs arranged in pixels on aluminum brackets. I had to strip out a ton of over sized wire, and two completely destroyed Peggy2 boards. I kept getting asked if the Peggy 2 system could just be resurrected; aside from the coding nightmare that Peggy presents (at least for a coder of my level). The original goal was to individually power every single LED (720 in total), and appropriately fade them with an individual PWM signal. This is impossible with Peggy since it relies on a row-at-a-time enumeration of an array. Keep in mind the system is great and works amazingly well for lower power applications. We had strapped high power drivers to each column and a high current MOSFET to each row. Below was a panicked “short every control pin of every driver to just light it up” version, and yet it could only put out that pithy amount of light. Everything had to go. Even my top hat.
Since the complete overhaul was now my project my budget and my money I had to keep the LED drivers under a dollar each. Well under a dollar each. Enter: China. I managed to source some crazy 12V AC drivers that were meant to replace track lighting. The boards use the MC34063 switching regulator (PDF) in some configuration that wasn’t shown on the data sheet. Lots of pencil sketched circuits later I had a reverse engineered schematic and no clue as to what it was trying to accomplish. It took some google-fu but I managed to find a current driver schematic for the IC, primarily due to my inability to spell. The schematic looks just like my drawing and has a nice simple way to pump a slow speed PWM signal into the chip, Pin 5. Cool, this is so simple: just peel up Pin 5, replace the input posts with a 3 pin connector and wire the middle pin to the chip.
It worked fantastically with a PWM signal. Now I just had to do that… 800… times.
To provide that PWM signal I needed something cheap, available, simple, and capable. I tested a few methods of driving the driver, and settled on the WS2801. This chip was easy to find cheaply, and handled all of the serial signal transmission and boosting through serial in and serial out pins. The big issue is that this chip is meant to only control RGB, not RGBW. This actually ended up being a massive problem, EVERYTHING is catered to RGB arrays, and here I was with a giant (expensive) RGBW setup. Since each WS2801 controls three LEDs, I decided to tack the white LEDs onto every 4th driver in line. I haven’t gotten around to making my code work with this scheme yet so the output looks kind of funky in the videos.
Each PCB when running can draw up to 2A of current (on the 12V line). In order to supply 60 of these boards I managed to find a couple hot swappable server power supplies. Actually 6 of them, each providing a whopping 52 Amps Max. I also bought the controller board they plug into and pried the connectors off, mounting them to perf boards. I used Ethernet wire pretty much exclusively for the entire project, it melts and shorts and doesn’t like to bend more than a few times. It was awful. The wire was cheap though, and I am still debating if the few hundred dollars to design this thing with connectors would have been worth the time savings considering I hadn’t tested it with connectors.
At any rate this was a pretty fun project. I still have to sort out a few buggy LED drivers, and glue the driver boards to the PCBs (they’ll unplug while transporting). I plan on making a few more of these controller circuits since I have to test code two states away from the shop, also I can put them in other stuff. Sound reactive top hat? Maybe I can inspire [Caleb] to do a bit more with his RGBW globe. Here is a break-down of the controller parts:
Below is the crappy video from the day I finally got the driver circuit installed, under that is one of the first “woohoo my code works” video. I’d have a better video to show off the circuit and modes and IR but I had to use my breadboard parts in the globe! I ran over my spare microphone breakout board with my chair and totally crushed the poor little guy.
Also just to annoy people trying to scroll down to the comments section, here is a massive gallery of photos for a massive project. Check out the comments for more info. Some decent computer background fodder in there as well.