Go Down

Topic: Giant interactive Peggy LED board clone (Read 3759 times) previous topic - next topic


Oct 30, 2009, 08:42 pm Last Edit: Oct 30, 2009, 08:47 pm by MonsieurBon Reason: 1
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!


p.s. MEGASPECIAL thanks to Windell Oskay at EMSL for his advice that he dispensed for free on his forums that really helped us!


Quite a project!  The scale of the thing! wow!


Bonjour MonsieurBon :)

First of all let me congratulate you for the amazing project you just accomplished. It's an amazing piece of work. My sincere thumbs-up for it :)

I am not acquainted with "peggy", nor did I have time to investigate, so I'd like you to answer some questions I have about your project:

* Refresh rate ?
* Is refresh row based or column based ?
* Power dissipation - what are you using to drive columns/rows ?
* Modulation: are outputs pure digital or [can be] modulated with PWM or [ch931][ch948] (sigma-delta) ?
* Have you thought about using a CPLD/FPGA as "graphic card" ?




The Peggy is this product, designed by Evil Mad Scientist Laboratories - http://www.evilmadscientist.com/article.php/Peggy2.

The rows are sinked through STP16DP05 LED Drivers. The columns are provided current by STX790A PNP transistors, controlled by 74HC154 multiplexers.

The multiplexers cycle through the 30 columns as fast as the microcontroller can handle it, and the LED driver sinks the appropriate LEDs in that powered column. The refresh rate is not visible, so it's pretty fast.

The display can be modulated with software PWM, as described here - http://www.evilmadscientist.com/article.php/programpeggy2

Could you describe to me the benefits of using a CPLD/FPGA? Our current setup is pretty straightforward currently, but we're always interested in ideas to improve it.


Could you describe to me the benefits of using a CPLD/FPGA? Our current setup is pretty straightforward currently, but we're always interested in ideas to improve it.

If you want to go beyond those 30x30, then you might want to use some "dedicated" HW to drive the display, much like acting as a graphic card.



That's such a great project. I love the fact it can be interactive - it really adds to the fun.

Any plans for a new version? I love the low res photo example on the Peggy on the Evil Mad Scientist site. If you could dim the LED's you could hook it up to a webcam for low res portraits of people as they passed.


Wow, that is amazing!
Who had to solder all of those LEDs, you or Sarah?


Mrnick1234567: We got 16-level grey(green)scale video working on it. We can play video through it and we can also run a video camera into it through a computer. We've taken a break from working on it after taking it to about 3 large events. We had some Java issues on the old Mac we were using to run video at the last event, which was really annoying. It would run just fine until we turned our back on it.  :o

Pauly: We both soldered them! We drilled 1800 holes for the leads so they wouldn't touch, then put stickers over each set of holes, painted the board, removed the stickers, drilled holes in 900 ping-pong balls, put an LED in each set of holes, put a tight ring of silicone caulk around each LED, pushed a ping-pong ball onto each LED so it went in the hole in the ball, bent all the leads at an angle so row and column wires wouldn't touch, put strips of wood under where the wires would be so they REALLY couldn't short, then soldered 1800 leads! Then we still had to solder all the wires to connect to the "brain" and connect the two halves.

We got pretty good at soldering quickly and well. It's where I developed my "solder finger" technique of wrapping solder around a finger-tip so you can have a soldering iron in one hand, stabilize a wire or component with several of the fingers on the other hand, and feed solder in with the remaining finger. Don't burn yourself, though!


Cool, shame the mac gave up on you! Love to see some video of it sometime.


Go Up