Building huge displays with LED strips

led

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.

Comments

  1. polossatik says:

    Seing all those leds reminds one again how many pixels even vga resolution actually has….

  2. W00f says:

    Damn, too bad it don’t support LDP8806; i could have tried it on my 16*32 matrix :’(

  3. Galane says:

    VGA is 307200 pixels. How much would an LED strip VGA display cost?

  4. Tom says:

    Finally, now i can make my 60 meter wide, 2,300 000 euro costing Full HD video wall!

  5. Another Tom says:

    I see dead pixels..

  6. rGd says:

    he didn’t hear about the niftyled project, yet :)

  7. Whatnot says:

    At this rate somebody on hackaday is going to finalize a HD LED display before the industry did.

  8. “for really large displays” … who did the math? How large a display could you bild with chained teensy 3.0′s?

    • 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.

  9. novel says:

    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

  10. Michal says:

    There is also a system to control huge projects and any-shape LED screens – http://www.youtube.com/watch?v=S8nPihPglcM

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s