Guidance for creating a 128x128 ws2811 LED display

Status
Not open for further replies.

JuanPotato

New member
Hi guys,

I'm looking to embark on a pretty big project. I want to create a 128x128 LED display using individually addressable LED strips. Obviously 16,384 LEDs is a massive amount. I've done a bit of research and have a general idea of one possibility of doing it, but I'm not sure if it is the best way. I want to have a solid plan before I start anything.

I was originally thinking to split the display into four 64x64 chunks that each are controlled by a teensy 3.2 with a OctoWS2811 adaptor since the maximum LED count for 60Hz is 4416 LEDs according to the product page. But then I wasn't so sure where to go from there in terms of connecting things together, and what would be actually pushing the data to the teensies to display.

I wanted to know if the OctoWS2811 would even be the best way to address this many LEDs. I saw an example project that used 4320 LEDs with the OctoWS2811, so it looked like I might be able to scale up to 16,384. I've seen some people talk about using FastLED, but I wasn't sure about the differences between it and octo. I also didn't know if I should use just a board like the teensy 4.0 since it is much faster than the 3.2.

If there are more powerful chips that can address this task much better, or easier to use when if I want to add wireless functionality, that would also be nice to know about.

I should mention this is for a club and we already have a tiny 7x14 LED display made that uses a teensy LC and that works nice. All the processing is done on the chip such as generating stuff to show on screen. This bigger project I feel will be much different.

Overall I'm just trying to get some research so I'm not running into a wall. Thanks guys.
 
Splitting it up would be a valid solution, the question in that case would indeed be how to connect them together. I imagine things can get pretty complicated if you're going to render the graphics directly on the Teensy's regarding synchronization and alignment of the graphics between the four chunks, this of course also depends on the complexity of the graphics you're planning to display. Rendering the graphics on a PC (with Processing) and streaming the raw image data to all four Teensy's over USB would be easier, although because of the USB 1.0 bandwidth limitation of the Teensy 3 series the framerate in your scenario would be limited to 30 fps. You could use the following example code that Paul added to the OctoWS2811 library as a starting point: Arduino Code, Processing code.

Another option would be to use my MultiWS2811 library on a Teensy 3.6 in combination with the adapter board I developed which gives you 128 WS2811 channels. This means that you could drive the entire display with just one controller at a maximum framerate of 260 FPS. Because with this solution you could render and drive the pixels from just that one controller you wouldn't have the synchronization and alignment issues that you would encounter when splitting it up over multiple Teensy's. I have a couple of unpopulated boards lying around which still need to be assembled, if you're not scared of soldering SMD components and are interested in using this board let me know and I can send you one.
 
Last edited:
MultiWS2811 library on a Teensy 3.6 in combination with the adapter board I developed which gives you 128 WS2811 channels. ... maximum framerate of 260 FPS
I assume that because this is still a teensy 3 series that if I were to stream data from a computer that it would still be capped at 30fps?

Also would I be tied to using processing for pushing data to the teensy or could I use something else? It would be nice to be able to generate the video data live.
Example: An audio visualizer that is dependent on microphone input.

if you're not scared of soldering SMD components and are interested in using this board let me know and I can send you one
I'm definitely a little interested, I've never soldered SMD components.
 
I assume that because this is still a teensy 3 series that if I were to stream data from a computer that it would still be capped at 30fps?
Yes indeed, since the USB port has a bandwidth of 12 Mbit/s and you have (128*128*24) 0,393216 Mbits in every frame, the maximum theoretical framerate would be (12/0.393) 30,5 fps. When rendering the images directly on the teensy you of course wouldn't be limited to that framerate.

You could use anything to push data, as long as you can send it to the teensy's serial port in the correct format. Although an audio visualizer dependent on microphone input sounds like something Processing would be the ideal environment to program it with.

I'm definitely a little interested, I've never soldered SMD components.
Ok, maybe this isn't the board to start with ;) There are quite some challenging parts when soldering this board.
I would suggest you use four Teensy 3.2's to control the display, since when streaming it makes no difference anyway whether you use one or multiple boards.
 
I would suggest you use four Teensy 3.2's to control the display, since when streaming it makes no difference anyway whether you use one or multiple boards.

How should I connect all four sync pins? On the Octows2811 page it says some stuff about the master board needing a buffer to transmit the signal or the PC treating all boards as master. I'm not sure what exactly that entails and which would be a better idea.

Sync Signal
The sync signal allows 2 or 3 boards to tightly synchronize their LED update times, when fed by USB communication which may have slightly different delays or latency to each board.
Because this signal is simply connected to a Teensy pin through a 100 ohm resistor, a maximum of 3 boards may be used. To syncrhonize more boards, the master board would need a buffer (or multiple buffers) to transmit the sync signal to all of the other synchronized boards.

Alternately, the PC-side software can be modified to treat all boards as masters, so no SYNC connection is needed between them. On fast computers with good quality (Multi-TT) USB hubs, the USB latency should be very small, so you may not need to use the SYNC signal.
 
I don't fully understand why only a maximum of 3 boards may be used with one sync pin. I would not be surprised if it still works with four boards anyway but if you want to be sure you can just assign a second pin to send out the sync signal as well and then split the boards up over those two sync pins. This way you wouldn't need a buffer.
 
Status
Not open for further replies.
Back
Top