Hi All,
My girlfriend Sarah and I built this giant LED matrix, based on EMSL's Peggy 2.0.
Here's a video of it in operation:
Here are some pics of us making it:
And here it is at Burning Man with the finished podium and a solar panel:
It's about 6.5x6.5 feet, weighs a LOT, and is pretty bright. It has two buttons; Mode and Reset, and two dials. You can play Pong against the computer or another person, use it as an Etch-a-Sketch, or watch Conway's Game of Life. You can also set the starting state for Conway's Game of Life using the Etch-a-Sketch mode. All of the states output generative MIDI music.
We set out to make a giant LED board playing Conway's Life in early May, with the goal of getting it finished by Burning Man in early September. We told people of our plans so we couldn't really back out.
We went through several hardware revisions, thinking we would be best served by an Arduino clone with more inputs and outputs. But ultimately we found that transferring board state data from the main display AtMega328P to the MIDI-processing AtMega328p via TWI allowed us to offload the MIDI processing algorithm, which prevented that step from reducing display consistency.
We increased the resolution from 25x25 to 30x30, which required some minor rewriting of the display routines. We also used a logic analyzer to remove some unwanted, multi-millisecond flickering present in the code we took from the ConwayLife sketch and Peggy libraries.
The physical board was made out of 3/8" plywood and 2x4s. Along with the support frame it is insanely sturdy, and didn't budge at all during windy times at Burning Man. However, without the support frame, it can wobble a bit, but is otherwise stable enough for indoor, non-jostling use. The LEDs (13,000mcd green wide-angle) were inserted from the front, one hole for each lead. Then a circle of silicone caulk was laid down and a ping-pong ball with a hole was pushed over that, being careful not to get any silicone on the LED. Then 22g pre-tinned bare copper wire was soldered in a matrix fashion for each LED. We added strips of wood between rows so the wires couldn't short out if pressed down.
We moved the LED drivers and multiplexers into their own enclosures attached to the board, and rotated the Peggy 2.0 design 90 degrees to allow us to use fewer interconnects, since the LED drivers work best when they are right next to each other, but the multiplexers can run just fine when separated. We used VGA cables to connect the main control unit to each of the panels. When we first did that, the board started FREAKING OUT. I o'scoped the data lines and saw a huge amount of noise/ringing. I added pull-up (or pull-down, I can't remember) resistors to the SPI connections and multiplexer intputs and that fixed the issue immediately. Whew!
Our original plan included having a motion detector, a light detector, and a voltage-detecting battery monitor. All of those pieces worked, but when we discovered that we could go an entire week of running the board every night without depleting the 75ah battery too much, we opted instead to just turn the unit on at dusk and off at dawn. Instead of having a motion detector, we just had the board play cool patterns and cycle through its modes after it didn't receive input for a while. This saved us some last-minute insane prep stress.
Sarah and I worked together on the initial code and electronics, but as time progressed, her programming skills were more useful when they were committed to that task, and the same for my electronics experience. So besides the physical board construction, which we did together, she stuck with the programming and I stuck with the electronics.
Now we're working on adapting the Mirror Peggy sketch to allow us to do full-screen video from a remote source. We have it working at 25x25, which is pretty awesome, but still have some tweaking to do in order to get it working at 30x30.
We are also going to work on a software emulator for the board in Processing. This will allow us to test changes quickly without having to re-upload over and over. We also ordered about 20 8x8 small LED matrices so that we can build a 32x32 LED display from 16 of them. This will also let us test without needing the giant and insanely heavy board around.
I still need to remove the LED drivers' brightness trimmer pots and put them on the outside of the box, since removing the back panel, opening the driver box, and adjusting the trimmers with a screwdriver and a flashlight is a HUGE pain! Without that adjustment though, we would probably fry the LEDs when we programmed the microcontrollers. I have considered another option, which would be using a resistor-capacitor circuit with some high-current transistors to shut off power to the LED driver and multiplexers for 20 seconds any time the reset pin is triggered in advance of an upload. But that seems more annoying than it's worth. But it might actually let us program the board in something other than a dark room.
In addition to folks playing it at Burning Man, we took it to a party last weekend and people loved it! Woo!
Hopefully I didn't forget anything. We still want to put together a project site for it, but that seems like the least exciting thing ever!
I think my one regret is not installing RGB LEDs, even if we only used one color at first.
Also, if anyone can think of anywhere around Portland, Oregon where we could display this full-time, that would be excellent, since keeping it in my house seems like a disservice to fun!
Thanks,
Aaron
p.s. MEGASPECIAL thanks to Windell Oskay at EMSL for his advice that he dispensed for free on his forums that really helped us!