Building Huge Displays With LED Strips

Building RGB LED displays is one of the most interesting programming and engineering challenges we see here on Hackaday. Not only do the creators of large displays and LED cubes have to deal with the power requirements of driving a whole bunch of LEDs, but there’s also the issue of getting the frame rate high enough to display video. It’s a non-trivial task, but [Paul Stoffregen] has an interesting solution. He wrote an LED strip library that can control eight meter-long LED strips that can also be used on daisy chained Teensy 3.0 microcontrollers for really large displays.

[Paul]’s LED library works with LED strips based on the WS2811 LED controller IC. These chips are the most common controller chips for the individually controllable LED strips you can find at Adafruit or hundreds of Chinese resellers. The library requires DMA transfer to display images, so if you’re looking to build a ginormous RGB LED display, you might want to pick up a few of [Paul]’s Teensy 3.0 boards

[Paul] also created a Processing app that takes a video file and turns it into serial data for his LED strip library. You can check out a video of this app, library, and a 60×32 RGB LED display after the break.

[youtube=http://www.youtube.com/watch?v=M5XQLvFPcBM&w=580]

58 thoughts on “Building Huge Displays With LED Strips

    1. Would you believe I made something similar for LDP8806 almost a year ago? It only does streaming from the computer, not locally generated graphics. The more expensive LDP8806 is much easier than WS2811 because it has flexible and easy timing requirements. All that program does is grab each packet and rapidly burst the bytes out the pins.

      You can get my code for streaming to thousands of LDP8806s here:

      http://forums.adafruit.com/viewtopic.php?f=47&t=25854&p=143049#p143049

      So far, at least 2 projects have used it for large-scale LED projects. You can find photos and info at these pages:

      http://www.dorkbotpdx.org/blog/armatronix/led_video_wall

      http://hackrockcity.org/post/24363042425/domestar-may-2012-domestar-appeared-on-the

      I believe at least one of these, maybe both, where covered by Hack-a-Day when they were published.

      Of course, for a new project, my new OctoWS2811 library will save you a lot of money, because the WS2811 strips are much less expensive. It’s also possible to build projects that run without a PC.

    1. I recently got a 5 meter/150 led individually addressable led strip in Shenzhen for about $24. (Adafruit sells a similar strip for $24 per *meter* last I checked)

      So 307200 pixels / 150 pixels per strip = 2048 strips
      2048 strips * $24 per strip = $49 152
      Subtract a 30% from that and you’ll end up at about $35 000.

      The display would be 21 meters (69 ft) wide and 15 meters (49 ft) high.

        1. 307200 leds at about 0.25 watt each = 76KW (all pixels full white)
          At 120 volts that is 640 Amps

          I don’t live in US so I can only guess what rating the main fuses in an average home there is, but in Sweden my last house had 3 x 25 Amp fuses @ 230 volt which should be like 3 x 50 Amp @ 120 volts in US.

          So about about the same power draw as 4 to 5 medium sized houses maxed out….

          1. It’s mixed. Common circuits from 15-40 amp generally. Rarely people install higher, sometimes even triple phase. I’d expect whomever does such things to be a machinist or electrician that likes their shop time.

      1. I paid(*) $380 plus $40-something for shipping to get the 1920 LEDs (32 meters) used in the demo. At the time, that seemed to be the cheapest available on Aliexpress. As you can see in the video, I neglected to buy any spares! For a real project, always buy some spares, especially if getting the cheapest ones directly from China. The three power supplies were $20 each, plus $21 shipping, and the wood, paint, and misc supplies added about $25. I already had the Teensy 3.0s.

        (*) Actually, PJRC paid for all this stuff…. :-)

    1. From http://hackaday.com/2013/02/21/led-marquee-uses-discrete-through-hole-lights/ to this.

      That would be 90 LEDs to 1920 in four days. Linearly: 457.5 LEDs added daily. Only 20,627 days and a few hours till 4K!!!!!!!

      Wait a second. …*grumble*..*grumble**…..Lets try that again. 9.48 square to 43.8 square..**something…something..MATHS!!!**…HA only 358 days to 4k! I’ll see you on February 17, 2014 then.

      And curse http://xkcd.com/605/ and it’s heathen ways.

    1. That would be me. I did the math. I’ve been working on this library and its documentation for quite some time. A tremendous amount of analysis, design and careful verification went into making this scalable without performance loss.

      Of course there are always going to be challenges as you scale up to very large sizes… mostly the cost of the LEDs, their power requirements, and the man-hours required to physically build the problem. But here are the technical issues….

      As you scale up to an extremely large LED array, assuming you follow the 1000 LEDs per Teensy 3.0 guideline, eventually a few technical problems will come into play.

      USB bandwidth is the main issue. With 30 Hz video, each Teensy gets 180 kbytes/sec, and if you play a 60 Hz progressive video, it’s 360 kbytes/sec. Each Teensy can easily handle these speeds, and each runs completely separate, other than listening for the frame sync pulse. Somewhere around 20 to 40 Teensys, the total is going to become a substantial part of USB 2.0 bandwidth. You probably want to keep the total under half of USB’s capacity. You might need USB 3.0. No matter what, you must use good quality USB hubs. Single-TT HUBs will cause problems, but if you buy Mulit-TT hubs, you should be ok.

      Another issue is transmitting the frame sync signal. At some point, perhaps even as few as 8 boards, you’ll probably need to use a 50 to 100 ohm resistor on the frame sync pin. This is more a function of the physical wire you use. Using a good quality cable like CAT5 twisted pair with the ground and frame sync on a pair will help. If the wire runs a different path than the ground (as I did in this 1920 LED demo), the signal can get ringing and other transmission line effects.

      At huge sizes, the you’ll probably need to add buffer chips to transmit the frame sync pulse to each group of other boards. This too is pretty easily solved. However, with only a wire, it doesn’t matter which board is the master sending the pulse and which others receive it. That makes things very easy. If you add unidirectional buffer chips like a 74HC245, then it’ll become important to make sure the intended board is the master. The first board in the list in movie2serial’s setup() is the master. You’ll just need to make sure the port corresponding to the board with those buffers is listed first.

      The final problem, which I doubt would ever be an issue on any modern computer, might be lack of CPU time to process the original video material into the many streams for each board. The code might need to be rewritten in C. However, running on a MacBook Air (certainly not the fastest machine), the demo was using 8% CPU time. I didn’t investigate the CPU usage in detail, but it was approximately the same just running without sending to any boards, so most of that 8% is probably the video decode, screen updates, or other stuff Java and Processing are doing to play the video.

  1. Hi Paul
    I was checking the project you did with the LPD8806 the “led wall”. I have some strips of this type and by now i got bored having the same pattern all the time, i want to do something different and the ” led wall ” is my answer, but smaller, so i can create my own patterns.
    How was the connection in that project? do you have a block diagram?
    Once you download videos to the mini-pc and then by connecting the teensy does it imediatly start sending data to the display? don’t you need an external monitor to see and select what you want to send to the display?
    Why did you include a mini-pc? do you really need it? is not enough just having the iphone?
    Thank you

  2. I’m interested in assembling an LED light curtain which will variously display patterns (SD card controller) and/or input from a webcam. Kinda like a coarse, flexible monitor. In the end Im seeking to create a simple, ineffective invisibility shield to be utilized as part of a project at the Burning Man. As i look around the web trying to figure it all out I see a bunch of LED strips and LED “pixels” which use this controller or that and Im trying to figure out what the differences are and whether they’re pertinent to my purpose. In particular Ive seen ws2811 LED pixels/addressable strips like this one http://www.lightingnext.com/ws2811-neopixel-digital-rgb-led-strip.html and Im now beginning to see some products with a WS2811 chip. Does anyone know how these two parts differ in practice?

    1. Each LED needs approx 1/4 watt if you turn it on fully white (all 3 colors to 255). 2944 LEDs at 0.25 watts each is 736 watts. Remember to factor in power supply efficiency. Cheap switching power supplies are usually about 70% efficient, so to output 736 watts, they’ll draw about 1050 watts.

      My OctoWS2811 library page has more detailed advice about powering up large LED arrays, plus a number of other practical issues you’ll face in building such a project.

  3. Hi there,

    I am thinking about ceating a suit, fully covered by RGB leds, with a pich of somehow 1,6cm. I’d like to run video and animations on it…. battery powered….

    not another LED T-Shirt!

    my first calculations are about that i need to have aprox. 5.000 LED divided into aprox. 120 strips, distributed over boby, back, arms and legs,

    LED’s may not need to run at full brightness.

    Not only In terms of power I have no clue how to deal with it using battery power for some hours. Also cableing of the many strips makes me worry.

    I’d like to run it with arduino or similar,

    it would be great if someone of you could give me some hints please or should I better forget it.

    thank you in advance

    Thomas

  4. This is awesome but the power requirement to drive all these is insane. isn’t there a way to refresh these at a rate that is faster than the eye so you can drive 1000LED’s for eg, but power much less than that?

    1. The controller WS2811 chip inside the LED package already does this. It rapidly pulses the 3 LEDs, depending on the RGB color you write. If you write color #800000, the red LED is rapidly pulsed at 50% duty cycle, causing it to use about half the power compared to writing a bright red with color #FF0000.

      At Maker Faire in San Mateo last year, the Crashspace guys brought a 2000 LED display, using about the same number of LEDs I used in this demo, but their’s ran the LEDs at no more than about 15%. It was on large wooden panels painted black and it still looked pretty good when viewed indoors during the day.

      The two obvious downsides are you get a limited range of colors and intensities by using only the bottom 25 to 38 numbers from a 0 to 255 range, and the whole thing just isn’t nearly as bright.

      But if you’re thinking there might be some magical trick where you can get the brightness and full range of color and intensity by somehow pulsing faster than human perception, then no. You simply can’t get the intensity without the power.

      1. Hmm thanks Paul. I wonder where I remember reading something like that, that now has me confused. Being the man in the know I certainly believe you, unfortunately it isn;t what I wanted to hear :)

  5. Hi Paul, your 60 by 32 leds strips are they connected in series? that means if each led takes 60mA of current then a total of 115.2A of current going through the led strip If I am correct? How much current can each of this trip handle without giving way due to excessive heat dissipation? Is this value of maximum current a strip can handle stated on the datasheet? How does your display feel like, does it get hot dissipating all those heat?

    1. I connected 32 pairs of #22 size wire from the three 40A power supplies to the strips. It’s easily able to handle the ~ 100A max current.

      Recently we built a similar display, twice as large, with 4320 LEDs (a grid of 90 x 48). It was shown all weekend at the Maker Faire in San Mateo a couple months ago.

      Details are here:

      http://community.arm.com/groups/embedded/blog/2014/05/23/led-video-panel-at-maker-faire-2014

      The back side of that 4320 LED display is shown at 0:28 in the video. Since the current is approx 200 amps on that display, and since the LED strips are 1.5 meter, we ran 96 pairs of wires from the power supplies, 48 on each side, so each strip was fed with power from both ends.

      A single Teensy 3.1 was able to play 30 Hz video and 44.1 kHz audio from a SD card. Full source code is on a forum post, linked from that blog article.

  6. A 60 by 32 will draw about 115A of current assuming they are all series together? What is the maximum current each of these strip can handle assume one is able to take care of the voltage drop issue. Will excessive current going through a very long strip not be a problem. Is the maximum current the PCB of the led strip stated on its datasheet. Does the environment around your display get hot or warm with all that heat in the strip?

  7. So has anyone tried this with a direct “live” feed input? Such as VGA or DVI input? I want to try this but use it with a monitor output from my laptop to run visuals for a show, and just use my visual/mapping software output at whatever resolution the LED screen is. Would this be possible? Either through VGA or hdmi input and have it show up as a “monitor”?

  8. i have the led strips, and trying to learn how to program the driver. can i hire someone to teach me how to do this? the teensy controller looks like just the thing i need. i have another controller from china, but it is bigger, and the smaller size and weight savings are important to me. any one want to tach me how to do this? prefer mac friendly software. please email me.
    eblimp@yahoo.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.