Armageddon421's Hackingblog

LED Panels

LED panels spice up club NightFly!

by on May.28, 2014, under LED Panels, Projects

A while ago a friend of mine who is a passionate specialist for event technology made this awesome bargain buy. He found some used LED panels from the Stone Age on ebay, each armed with 25 (5×5) red, green and blue LEDs covered under ping-pong ball like plastic hemispheres. His dream was to mount 24 of them to the ceiling of the club he is currently re-rigging, which is club NightFly in Waiblingen, near Stuttgart.

The problem with those panels was, that the controller boxes they came with could only handle 16 panels each and there is no way to synchronize multiple controllers. Also, the only input device is an infrared remote, which is not very comfortable to use in a club environment.

So he asked me if I could find a cheap and simple way to control all of these panels (24) and make it easy for the DJs to change the mood of the location. Since the panels just consist of LEDs and resistors, the project consisted of two parts: Driving the LEDs and providing a simple to use interface for the DJs. Oh and he wanted it all to be done in three weeks. Sure!

The first logical step was to design a small board to control and drive the panels. Since there would be a considerable distance between each panel, I chose to make it one board per panel. For ease of use and reusability, I decided to use DMX as communication protocol. This just requires a RS485 driver IC – I used the SN75176 – connected to the UART RX pin of the ATtiny2313, which I chose as a brain for the thing. The panels work with 5V, so just throw in some mosfets and off you go to the PCB manufacturer, right? What could possibly go wrong? Below is the design I actually submitted to the manufacturer after one night of design.


Unfortunately, the silk screen did not turn out quite the way I wanted it, but who cares…

nf board

As you can see, I threw in the pads for an optional 7805 5V voltage regulator because the common anode design would allow me to use the same circuitry for LED strips or similar things that work with 12V, too. Did I say common anode? Well, how do the panels actually work? Of course, they are common cathode. Bummer. Not such a big problem, though. Just switch out the n-channel mosfets with p-channel ones, right? Yeah. That, and 2 hours of cutting through ground planes and rewiring.

nf fix

First testing shows that it works (kinda) and after 8 more hours of soldering tiny SMD parts, 24 of the boards were finished.

Turns out that the panel being supplied from the same 5V supply as the uC circuitry causes huge spikes on the power supply for the ATtiny, on which it reacts by resetting all the time. The solution was considerably easy: Add a huge capacitor.

Look at the beautiful boards!

nf boards assembled

Onwards, to the software! Just add some DMX library and make it use three channels for red, green and blue and bob’s your uncle, right? Not with me! In the end, I used every single byte of the 2kb flash storage the atTiny2313 has to offer. There is a fourth channel that is used to control effects like rainbow fading, strobe and random color. Those effects can also be used in a standalone mode that is activated by flipping the unused 10th DIP switch (only 9 are needed for the DMX512-address). Instead of DMX-address, the other switches can then be used to setup the standalone effects. In DMX mode, the effects sync together nicely between two panels, because a mode change results in an internal reset of time and random variables. The DMX adress is used as a random seed in DMX mode because every panel gets its own DMX address anyways.

It’s time to wire up some of the panels to see how it works.

nf panels 4 test

That’s all good and fine, but now I need a nice interface for the DJs to play with. Thanks to the laser cutter at shackspace, this is what I got an hour later:

nf frontpanel

After hours of perfboarding, soldering and wiring, I was done with the circuitry that allowed me to use the LEDs, buttons and potentiometers from a teensy3, a 96MHz 32bit arm chip that can easily be programmed from within the well known arduino IDE. Because of the low current driving capabilities of the teensy, I had to use some strange shift registers that were lying around at shackspace. For driving the DMX lines I used the same transceiver IC (SN75176) that I used for the receiving end. I might swap that one out for a much more expensive MAX483/5/7 chip because they include filtering for the appropriate signal frequency, which greatly increases signal quality. This is important in EMV critical environments like “directly next to a ginormous subwoofer”.

The software is actually not overly complicated. It consists of some event management (button presses etc.) and some time management for the beats, controllable by the “speed” potentiometer. The animations are basically just formulas with lots of modulus on time and beat values. Of course everything is done using fixed-point arithmetic because the teensy3 does not have an integrated floating point unit (FPU).

I implemented a few animation patterns and did a quick test run at home… errrr at shackspace. Somehow someone had some fog machine with him, so we fired that one up, too. It’s worth watching in HD for best epilleptic experience!

Two nights later and with a little help of the fog machine owner, the 24 panels were finally mounted on the ceiling in the club NightFly and I could start adjusting the animations for the bigger grid, as well as adding new ones. I don’t have a video of the latest version at hand, but this should show how impressive the panels appear in that club.

There are more photos over at Imgur!

All that in three weeks.

In case anyone wonders: There are leftover rgb-dmx boards.


5 Comments :, , , , , , , , , , , more...

Snake on LED-Panel

by on Feb.14, 2014, under LED Panels, Projects

Hey there!

Today I want to show you a project from early 2013. Someone sold adressable LED-Stripes on the 29th Chaos Communication Congress in Hamburg and I just couldn’t resist getting me some. I bought 10 meters. The strip has 32 RGB-LEDs per meter and is made adressable by adding an IC (can’t remember the type right now) for every two LEDs. The protocol is equivalent to the WS2801, using SPI (with clock line, as opposed to the LED-integrated WS2811 which have no clock line and are pain in the a** to talk to) and therefore can easily be used directly with the raspberry pi.

Since the raspberry pi outputs a logic level of 3.3V and the LED-strip expects 5V level, some level shifting had to be done. On the 29C3 I found some nice guys giving me some SMD MosFETs, resistors and perfboard so I could fiddle together a basic level shifter. It could only handle frequencies of about 1MHz, but that was enough to make the thing shine!

The trash cans at the location had a circumference of exactly 1m, wich was ideal to just wrap the stripe around. So it happened. A USB battery pack was used to supply the thing, so it was even portable! Go party with a trash can! Unfortunately I had to leave the trash can there… This video is from the guy who sold me the stripes. Check it out!

Back at shackspace, my local hackerspace in stuttgart, I rearranged the stripes on a wooden board to make it look more like a normal LED-Panel. What game could be better on such a thing than snake? So it happened. I implemented the main thing in one night, everythin in one file. Ugly. Works. The rest of the time was spent optimizing the bot. Did I say bot? Yes I did. One weekend later I made this video showing off the result. Unfortunately it is german. Watch it.

Things like plasma effects look super smooth!

Later I added a proper level shifter, allowing stable bus clocks of up to 8MHz and much higher framerates. Next steps include prettifying, that means building a nice enclosure with milk glass and maybe cleaning up the code.

The code can be found over at github.

That’s it for now. If there are any questions… You know the drill!

Leave a Comment :, , , , , , , , more...