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: 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!

<p>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? </p>
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.<br><br>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.<br><br>
<p>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.</p>
<p>I don't know how you are planning on programming, so its up to you on this front. </p>
<p>Very cool! Can you explain how you determined the power supply wattage? Is all power delivered to the led strips from the PixelPusher?</p>
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).<br><br>Adafruit has a really good primer on this and how to distribute power amongst the LEDs here: https://learn.adafruit.com/12mm-led-pixels/power<br><br>Hope that helps!
<p>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?</p>
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: https://sites.google.com/a/heroicrobot.com/pixelpusher/home/getting-started
<p>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?</p>
<p>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...</p>
Nope, that didn't work. I'm finding this to be very strange. It is clearly a signal issue since it lights up red on a GRB string and green on an RGB string. It is just the first address/led that's doing this.
Yes I'm pretty sure the rc file is ok.<br><br>I set it to be a ws2811, in grb (for the string light) and in rgb (for the strip) order. The string light turns its first led in red and the strip in green. Mine are already swapped. Are yours swapped or did you attach the pin to the data line without swapping? I swapped so I could have data next to ground (+ C D - instead of + D C -)<br><br>I'll try unswapping it. Great instructable btw.
<p>I'm very curious as to why you used two PixelPushers. From what I read a single unit should be able to control the amount of LEDs you used. Any particular reason for doubling down?</p>
<p>It has to do with mapping. If I used 9x outputs, I could make each of the panels exactly the same, and have a way easier time mapping the pixels to the overall display. Although the total number of LEDs is less than the maximum allowed by the PP, it is far simpler to program large LED matricies if you know your individual units are the same (particularly if you want to do video / picture display). </p>
<p>Hi, so i want to make some thing like this but a much more scaled down version. Approximately 3M x 2m (10' x 6.5').</p><p>Would i essentially undertake all the same steps / software? and just set the software to a smaller area?</p><p>How many pixels do you think i would need?</p><p>Thanks</p>
I understand that each led draws .06 amps at full white, what will happen if with your setup, you turn them to ful white?
hi <br>Great job, how we tell controller our wall DPI?! for example 50 x 30 pixel?? <br>how it can figure it out?
It will depend completely on your control setup, and how you connect all the LEDs together. in my example, there is a pixel layout feature in LED lab that I used, otherwise you'd do this in bare code in processing if you were using a pixelpusher as we did in this instructable
<p>This is great! Thank you for the clear instructions. Has anybody looked at letting other sensors control the Pixel Pusher? I'm thinking like a webcam or an XBox kinect sensor would allow for some really cool interactions with the wall.</p>
hey! although my implementation was using an iPad for simplicity, PP is natively controlled via processing, so yes - lots of sensor and graphic stuff could happen there via native code or arduino formats.
<p>did you use only 1 psu for all 2000 leds?</p>
yes - check out the first picture in step 4, one big 5V power supply for a router and all LEDs.
<p>hello! i will be building this soon , I've already purchased some strips and a pp to experiment and then expand it =)</p><p>but i don't get why do you used 2 apps when 1 has 8 outputs can you epxalin this to me please?</p>
I had 9 outputs :-)
This is an great use of leds! Looks amazing.
<p>Things have become so much easier in the past decade or so. When we did a wall with about the same number of pixels in 2001 it was an immense amount of work and custom programming! I know Pixel Pusher appeals to a broader audience, as it is well supported by now, though I've seen some really impressive work done with other controllers - the LEDscape stuff using Beagle Bone works really great and is also totally scalable, including some truly massive displays. Fadecandy is fantastic for higher-resolution work in the colorspace, though the USB interface limits scalability somewhat. And new stuff coming out all the time, it seems.</p><p>It's worth noting that ALL of the controllers geared towards the cheap LED strips and pixels coming from China are limited in color resolution since their controller chips (even the newest ones) use fewer bits than the truly professional (and expensive) systems made for LED video walls and while there are software tricks that will help for some applications there is something to be said for that, especially when the color steps become really noticeable at lowest intensity levels.</p><p>I would also point out that for people who want to build a wall or panel with a simple grid pattern, the cost per pixel can be greatly reduced by going with dedicated LED arrays on PC boards, and using them like tiles. I've seen costs as low as 15 cents per RGB pixel using this approach! The real advantage of using premade chains of pixels such as you used is gained when mounting them to irregular surfaces and in nongrid patterns.</p>
<p>Hi. I designed PixelPusher- as far as colourspace goes, PP supports five-axis pixels (RGBOW) and 48 bits per pixel. Even using the APA102 BetterPixel parts (which are cheaper than the TLC59711 48-bit-per-pixel-plus-seven-bit-brightness parts) we support 29 bits per pixel.<br><br>We also sell 20x20 PCB tiles. :-)</p>
That's great, for the few serious users who have the resources to fabricate their own custom hardware at the display/pixel end of their video wall. <br>The processing resources available at the controller end (i.e. PixelPusher or whatever) are FAR less limited, since you only need a few comparatively fast and expensive boards to format the data streams going out to all of those strings or panels of RGB-only pixel control chips. Bit per pixel support isn't the limiting factor here.<br><br>Virtually everyone who isn't a professional with a serious budget is going to be cost-sensitive enough to find anything other than RGB pixels using cheap Chinese control chips (whether APA102, WS28xx, LDP8806, or whatever) even an option for their wall-sized array, however. Even if they have the skills and time to design their own PC boards using pixel controllers with better resolution such as the TLC59711.<br>By comparison, the 36 and 48 bit-per-pixel RGB displays used on pro-grade video walls can look ultra-smooth at the low brightness end, and global pixel brightness control just isn't as flexible.<br><br>I've seen expensive multiwatt 4, 5, or 6 channel (LED color) pixels on the market (no pixel controller chip of course, just the LEDs). Are there any 4 or 5 channel monolithic LED packages akin to the low-power RGB ones typically available to the public, or any comparable ones with onboard pixel control chips?<br>
<p>The TLC59711 chips are available to the public and support 52 bits per pixel- they're really quite nice, though they're not integrated into LED packages (monolithic is the wrong word, since *no* LED controller-LED system is monolithic- you can't fabricate control logic in gallium nitride yet).</p><p>The APA102s, for which PixelPusher supports the 5-bit brightness vernier, is a significant improvement over simple 24-bit pixels like the WS2812. They stop clip-down and banding from happening at low brightness levels. We're also working on support for a later APA part which has deep pixel support, with a true 48 bits per pixel.</p>
interesting! first I'm hearing about the LEDscape stuff - I'll definitely check it out. The cool part about the iPad LED Lab app is its built in interactivity options, and intuitive (read: non-programmer oriented) controls for creating new scenes. Clients *love* to be able to build their own scenes for the piece. However, sometimes we really just need a static rotating loop though that I can seal up in a box somewhere which is much better suited for an embedded solution. Thanks for that!<br><br>I hear you on color depth - since we're normally not making real *video* walls for people, and more like light up architectural features, a bunch of our clients have appreciated being able to shave some cash off of the price by moving to less expensive tech. Definitely a good point to bring up on color depth though!
Good work!
<p>That looks really cool... and expensive. :)</p>
<p>haha - well, smaller versions aren't as expensive :-D</p>
<p>Very cool setup. How many LEDS is that? and how much was the build? </p>
Thank you!! Its a bit over 2,000 LEDs. the cost of the LEDs alone was a bit over $1,000 from Chinese suppliers - would be a bit more than double that from US sources. Hope that helps!
<p>could I get the led supplier source? Was it on alibaba?</p>
yes - no one fancy :-)
how much would this cost on an average ?
<p>hi </p><p>this is really great project thanks a lot for sharing this with us realy cool i like it and i thinkj i will go to make it 2</p>
<p>Very nice build! I have a bunch of the W2801 pixels I got from China and have been looking for something cool to do with them. This fits the bill!</p>
<p>Super awesome ! How about a packman game on it ;P</p>
haha :-)
<p>Thats sooo cool! I want to try this Project as a schoolprojekt and i was wondering how many Pixelpusher i can chain together and run with LED lab?</p>
If I remember correctly, on a single pixelpusher you can push 4000 LEDs. However, the *really* amazing part of the PPs is that you can chain multiple controllers together to push as many pixels as you can pay for (in this instructable I used 2 of them to make my life easier on the install). LED Lab supports as many PPs as it finds on your WiFi connection, so theoretically there is no limit to the number of LEDs you can use with this setup.
I love this, you should sell and install them (thinking clubs and pubs). Could do picture sized variations as well. To you it might seem simple but to me I'm marveling at the shiny and thinking I'll never have time to do that.
Thanks for the compliment! This one was built for a client...Sheet Metal Alchemist used to be just me, but now its the name of my custom fabrication firm...check out: www.sheetmetalalchemist.com :-)
Would an arduino be capable of driving the LEDs in a reasonably sized (say, 25x25) matrix smoothly (as opposed to the pixelpusher)? I've been meaning to look into it, but school has been getting in the way.
<p>Yes, Ladyada has a really good example of this on her website. I've become a fan of the pixelpushers though because of their extendability and ease of programming beyond the basics (i.e. I see a lot of LED arrays which use only primary colors instead of smoothly bending waves over the 256^3 colorspace). For some info on how to use an arduino to power a 32x32 array, check out: https://learn.adafruit.com/32x16-32x32-rgb-led-matrix/overview</p>
<p>Hi, I was planning to build something similar with my leftover ws2811 leds. What's the spacing between each led? Seems quite nice</p>
<p>Hey Jokkeh! The spacing is about 3-5/16&quot; on center of the LEDs. Its kind of a weird number so I could generate even spacing of the pixels to fit into 9 equally sized panels. Hope all that helps!</p>

About This Instructable




More by sheetmetalalchemist:"Spiro" - a 5' Diameter, Wall Mounted Spirograph Make an interactive iPad controlled LED Wall How to Survive an Inpatient Hospital Stay 
Add instructable to: