Make an Interactive IPad Controlled LED Wall




Introduction: Make an Interactive IPad Controlled LED Wall

Show me the youtube video of the wall in action!

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:
Pixelpusher on Illumn:

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!



    • Water Contest

      Water Contest
    • Fix It! Contest

      Fix It! Contest
    • Tiny Home Contest

      Tiny Home Contest

    69 Discussions

    Hello, we have 2 PixelPushers and 2400 LEDs (50 LED tapes) and we have 3 outputs on each PixelPusher.

    The wall worked for about three days, but now it is lit only in blue and the following text shows in the "LED setup" menu: "No piselpusher controllers are discovered".

    This text appears and then disappears again and again (about 5 seconds).

    What should we do? We have the LED wall at the exposition

    and it does not work anymore.

    Thank you very much for your help

    2 replies

    Sounds like your wireless router crapped out! Try resetting that, then all your PPs.

    hello, we already know why it was all blue - it was set in the program ..

    But we have another big problem - big lags - the first three days it was ok but now there's a big delay. I'm sending a video:

    We wanted to try coonect tablet via LAN, but we do not know how to resolve the power over one connector ...

    Please help us. Thanks

    Hello, we have 2 PixelPushers and 2400 LEDs (50 LED tapes) and we have 3 outputs on each PixelPusher.

    The wall worked for about three days, but now it is lit only in blue and the following text shows in the "LED setup" menu: "No piselpusher controllers are discovered".

    This text appears and then disappears again and again (about 5 seconds).

    What should we do? We have the LED wall at the exposition

    and it does not work anymore.

    Thank you very much for your help

    1) do you know of any brighter LEDs that could be used instead?

    are there any LED strips that could be used instead as this would save
    on time considerably. ( Strips compatible with your setup that are also
    addressable by your hardware )

    2 more answers

    Yes and yes. There are tons of options depending on your budget. There are not options that are brighter for less. I find LED strips to be a wiring nightmare. Whatever you save on plugging in LEDs to holes, you gain in power routing. Its up to you where you want to spend your time.

    Quite frankly, I'm not sure which way to go because, I understand this technically but this a for my wife. She's in film and television. She want to create a background set that she can use for casting various patterns and designs. The main priority is that it when she is standing in front of the wall, she will be fully lit using various other light sources. This background wall need to be clearly visible and bright enough to be seen behind her and through the light lighting her. She's presenting in front a large crowd next month and I need to have this ready for then.

    Hello, fantastic job! We are trying to make a wall like this about 8ft High x 10ft Wide. The purpose we are looking for is for a TV Show Set. However my concern is the brightness of these LEDs as all your shots are in low light. Are they bright enough for our purpose as a TV Set for Shows, which requires some minimal lighting for good video / photography? If not, is there a brighter alternative we can use?

    Hello, we need a 3m x 2m wall (length x height) and separate the LEDs by 3cm.

    According to my calculations, 134 strips (50 LEDs / tapes) are needed. In each row, 2 strips will be joined in series.

    Overall, there will be 67 lines.

    But I do not know how many Pixel Pushers will I need and how do I get involved? Do I have it well designed?

    Could you give me an advice please? Thanks

    I'm interested in building something very similar to this, but a battery powered light weight version that could be carried - it'll be a hand held sign at a concert. Do you think this is possible given the various power requirements?

    I'm finding a lot of WS2811, not 2801s online, would those work with the pixel pusher? I know they're a 3 wire unit, I wasn't sure if the Pixel Pusher was compatible with these. Also, I noticed the PP is limited to 25 amps. But your display looks like it's more than 50 amps total. How do you power the pixels, if the power exceeds the 25 amps per PP?

    3 replies

    Yes, you can use LEDs which support 1 wire and a fixed clock like WS2812s, just need to switch up your pixel.rc file to match...I've actually just made a much larger display with WS2812s which is around 5,000 pixels.

    Remember - you don't need power to be managed through the pixelpusher to use it. If you think you're going to draw more than 25A, just shunt power straight to the LEDs and have the PP manage data only. You'll have to share ground between them, but that is all.

    I'm planning on making 4 separate panels (identical) with about 500 pixels each. Could I use one controller, and just run data to each panel? Or would it be easier to install 4 separate PPs and network them together. Obviously 1 PP would be cheapest, but if the programming would be easier with 4, it may be worth the extra money.

    I don't know how you are planning on programming, so its up to you on this front.

    Very cool! Can you explain how you determined the power supply wattage? Is all power delivered to the led strips from the PixelPusher?

    1 reply

    For wattage of power supply, take current per LED and multiply it by the number of LEDs. You can under-rate this a little bit to save some cash if you know you won't blast them all to white at the same time. (i.e. 60mA * 4000px = 240,000mA = 240A @ 5V. 240V * 5V = 1200W power supply req'd).

    Adafruit has a really good primer on this and how to distribute power amongst the LEDs here:

    Hope that helps!


    1 year ago

    I have ws2812b led strips. They only have three connectors. Power data and ground. How do I make those it on the 4 pins on the PP board where it says power data clock ground? Is there an adaptor pin?

    1 reply

    Hi! Ws2811s and 12s have a fixed clock, so there is no clock wire. I don't know if the 12b's are officially supported by pixel pusher or not, but you can run the 2811s by setting that for your strip parameter in your setup file, and you can use onewire as a multiplier to match the clock on those LESs. More info is at the hardware configuration guide:


    1 year ago

    I have tried connecting a string of ws2811s to a pixel pusher but the first pixel is keeping its red colour on all the time. I tried this with a WS2812 strip to the same effect. So if its meant to be black, it's red, if it's meant to be green, it's yellow. Did you face this issue and how could it be solved. What might this be?

    1 reply

    That's a really weird one. Are you setting the strip attributes correctly in your pixel.rc file? See step 3. You could also try using swap to swap the data and clock lines in your setup...that could be it...