Introduction: Make an Interactive IPad Controlled LED Wall
Everyone wants to make giant LED displays to show their cool, geometric LED waves, or fuzzy pink Elvis art. However, in order to address a massive wall of LEDs, you have to figure out how to turn your fuzzy pink Elvis art into a string of zeros and ones which get properly buffered, shifted, and sent down a wire at the speed of electricity - no easy feat. However, in this instructable, we're going to demonstrate how to use a PixelPusher LED controller coupled with L.E.D. Labs' iPad software to eliminate that pesky middle step of digital buffoonery.
Step 1: Get Your Supplies
This instructable focuses on the back end components needed to make this wall work, although we will talk a bit about fabrication of the superstructure as well. This method of controlling LEDs requires the use of a pixelpusher to do the heavy lifting of physically driving the LEDs. The LED Labs software running on the iPad does the heavy lifting of taking your image / video / algorithm and breaking into chunks the PixelPusher can understand.
For this instructable, we are going to be controlling WS2801 LEDs in "pixel" packages instead of "strip" packages. They are very common, and are a bit more expensive than some other options, but are very easily controlled from a wide variety of chipsets. Typically, strip packages are much more common since their installation is substantially simpler, but to get the effect we desired with this piece, we had to go after the pixel versions instead. We ended up getting ours from a bulk supplier in China since we needed around 2000 LEDs, but going local is always simpler and saves your sanity in the long run if you need smaller quantities:
5V WS2801 pixels on Adafruit: http://www.adafruit.com/product/322
Pixelpusher on Illumn: http://www.illumn.com/heroic-robotics-pixelpusher....
Additionally, you'll of course want an iPad, the appropriate 5V power supply, and a wireless router. Our favorite wireless router to use is the Ubiquiti consumer models since they are equipped with some advanced features like auto-resetting and the like which can keep your LED system running nonstop. However, they are a bit more advanced than other consumer level routers, so pick one that suits your expertise level.
Step 2: Setup the Pixel Pusher Hardware
As your supplies come in, your first step is to make sure you aren't going to blow up your nice and new PixelPusher. There are a few hardware options to set via jumpers on the mainboard. Step 1 is to crack that plastic baby case open and take a look at the goods.
5v bypass: This jumper should be used to bypass the onboard regulator for the PixelPusher microcontroller. The PixelPusher supports 4.5V to 30V input voltages at the regulator, but the microcontroller is 5V, so do not set this option if you are using a power supply other than 5V!
direct: These jumpers act as a team. These jumpers should be set if the LED power should bypass the onboard regulator. In general, this is what you'd like to do, unless you are running very few LEDs; the onboard regulator can only handle an amp or two.
5v strip: Sets the output regulator voltage to 5.1v instead of 10.6v. This makes sense if you are running WS2801s or 2811s or some other 5V pixel off of the voltage regulator (direct jumpers are not set).
Step 3: Setup the PixelPusher Software
The PixelPusher is configured via a FAT formatted USB key, or can be burned into the onboard EEPROM using the PixelPusher Config Tool. For this project, we wanted to use the USB key option so configurations could be easily swapped out in case we messed something up.
In either case, you need to write a file called pixel.rc to the PixelPusher which defines what kind of LEDs you are using, various timing options, and other advanced options for chaining multiple PixelPusher controllers together. A good post with all available options for the pixel.rc configuration is available here. More info for setting up the PixelPusher Hardware can be found in the PixelPusher Hardware Configuration Guide.
For our particular setup, we are using 2 separate pixel pushers. Since the wall is broken into 9 panels, and needs to be assembled onsite, it is simplest from an implementation point of view if each panel is controlled by a single strip header from a pixelpusher. Additionally, we've used the pixelpusher config tool to burn the pixel.rc files onto the hardware itself so our client always has a proper backup copy of a known working configuration.
The pixel.rc files that power our wall are attached to this step.
If you are like us, and decide to burn your pixel.rc files onto your 'pusher, I recommend you start labeling some stuff to save yourself a bunch of trouble!
Step 4: Connect Your Pixelpushers Into the Power Supply
This step is simple - connect your pixelpushers to the correctly sized power supply, and make sure everything works as expected. If you notice from the above image, our Ubiquiti router also is powered from 5V, so we can power all 3 devices from a single power supply, and only have 1 plug required on our installation wall!
Additionally, we desoldered the anderson powerpole connectors from the pixelpushers and permanently soldered 4ga wires onto the 'pushers for power supply for a more robust, permanent connection.
Step 5: Layout Your Pixels
Layout of the pixel grid has to be done with some attention to detail. If you layout your pixels completely randomly, it will be nearly impossible to setup LED lab to detect where your pixels are, and attempts to display pictures or video on the layout will fail.
To make the panels, we designed the patterned layout in Inventor, and then sent 1/2" MDF panels to be CNC cut to properly fit the pixels. The countersink on each hole greatly improves finish quality when using latex paints so paint does not want to buildup on the sharp hole corner.
Step 6: Setup LED Lab
Christopher Schardt's LED Lab is the secret sauce to making this wall work. He has determined a way to simply layout a complex network of LEDs, and control their colors and brightnesses to generate pictures, video, and mathematically generated patterns.
The software is available for free so you can try out all the functionality. You only need to start paying for packages once you want to start pushing data onto pixelpusher controllers. It is available from the iTunes store.
Once inside LED lab, you do need to tell the software how all of your strips are laid out, and what your controller setup looks like. Under main menu -> setup, pixelpushers on the same WiFi network as your iPad will be automatically displayed. Additionally, it will poll the pixel.rc file to determine how many active outputs are being used. The remaining layout is controlled via the panel buttons at the bottom of the screen. Dead simple. Super amazing work here.
Step 7: Assemble and Complete Wall Configuration
We built the wall like a massive door which can swing away from the wall. First, this allows us access to the back of the wall so we can conceal all fasteners and sleek, minimalist surface from the front of the wall. Second, if we can get to the back of the wall, maintenance and replacement of failing LEDs is much simpler for this permanent installation.
That being said, the structural engineering required to design a wall in this manner is much more intense than by individually mounting each panel to the wall. We custom built a hinge out of 3/8" flat bar which could be mounted to a wall corner with 12x 5"x3/8" lags. All wall panels were bolted to each other with 1/4" nuts and bolts.
Following wall assembly, the LED panel configuration was double checked in LED labs.
Step 8: Enjoy!
This was a really fun build...we can't wait to do more!