Hi all, I am finally starting a new project in about 3-4 days for

Hi all,

I am finally starting a new project in about 3-4 days for a conference we run up in North Queensland, Austrlia (and hopefully something that will last a few years) using 1,600 of these https://www.aliexpress.com/item/200pcs-DC12V-3-leds-WS2811-26mm-diameter-transparent-milky-cover-LED-Module-Point-Light-5050-SMD/32809327580.html?spm=2114.40010208.4.145.RIoMnI with the ws2811 ic although from a different supplier (just an easy link to find). From the centre of the led, they will be separated 5.5cm vertically and horizontally and span roughly 4.4m x 1.1 meters. I will use a Teensy 3.2, an OctoWS2811 adaptor (I think this is the best option?). I will mount them on a 2.5mm aluminium sheet for because it’s light and should act as a heatsink to some extent and use PC PSUsfor the 12v supply (pulling approx. 110 amps max).

The issue that I have (and this comes down to me being a bit of a newbie to it all) is that I saw a youtube clip on the t-3000k controller where it has a “viewing” window on the screen and what ever is under it is what’s displayed on the LEDs. I have posted on the pjrc forum (https://forum.pjrc.com/threads/45010-12V-26mm-Node-Display-(4-4m-x-1-1-meters)?p=148287) and they were so helpful but someone suggested I post here. If anyone can help me I would be forever greatful as I am getting so close to the due date for this project and I’m starting to think I’ve taken on a little more then I thought…

Other then that, does any have any pointers before I get started?

Would anyone like updates on how it goes once complete? Let me know either way as this is new territory for me!..

Thanks in advance!

I like what you have so far and your chosen platform seems excellent. Double check power and be sure your under the max amp ratings. It wouldn’t hurt to fuse your feeds for extra safety.

The big question you have me asking is what do you plan on doing with these? Do you want to have dynamic content like text , video and cool light patterns? Is this going to be synced with music much like a DJ light show? Depending on the answer will help me give some suggestions or direction. If your talking my about mapping a section of screen to the pixel array then You need to look at using DMX approach like the e1.31 Ethernet module and using teensy to drive the pixels. See my video below for examples. (One video is with a uno and ws2811 flood light and the second is with 100 ws2811 12v pixels driven with a teensy 3.2 octows2811 and wiznet module using DMX e1.31. Both are being controlled by jinx led software.

G’day Chris,

Thanks heaps for the prompt reply! I have had a crazy weekend so apologies for my delay.

I think I have found the solution to my problem. In a nutshell:

The only thing is that I have no knowledge of coding. The Glediator Code is as follows:


// Glediator example with OctoWS2811, by mortonkopf
//
// Gladiator with OctoWS2811 - working example

#include <OctoWS2811.h>

const int ledsPerStrip = 34;
const int NUM_LEDS = 272;

DMAMEM int displayMemory[ledsPerStrip6];
int drawingMemory[ledsPerStrip
6];

const int config = WS2811_GRB | WS2811_800kHz;
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);

void setup() {
leds.begin();
leds.show();
}

int serialGlediator() {
while (!Serial.available()) {}
return Serial.read();
}

void loop() {
byte r,g,b;
int i;

while (serialGlediator() != 1) {}

for (i=0; i < NUM_LEDS; i++) {
b = serialGlediator();
r = serialGlediator();
g = serialGlediator();

leds.setPixel(i, Color(r,g,b));

}
leds.show();
}

/* Helper functions */
// Create a 24 bit color value from R,G,B
unsigned int Color(byte r, byte g, byte b)
{
return (((unsigned int)b << 16) | ((unsigned int)r << 8) | (unsigned int)g);
}


My question is what do I need to change in that code for it to work for me? I’m thinking the following:

I will have a matrix that is 80 x 20 pixels. Do I just need to change const int ledsPerStrip = 34; and const int NUM_LEDS = 272; to const int ledsPerStrip = 80; and const int NUM_LEDS = 1600; and also const int config = WS2811_GRB to const int config = WS2811_RGB - are they the only three changes I need to make and then just upload it to the teensy and it should receive data from Glediator (assuming I install it correctly)?

Your just about there. The teensy has only 8 feeds so if you leds is 80 per strip then the code is only going to account for 80*8=640. The way you will need to make this work is to zigzag your led data connections so you can get more per strip. The octows2811 explains this here

https://www.pjrc.com/teensy/td_libs_OctoWS2811.html

Since your using gladiator you will need to map each pixel (strip/zigzag) to the correct row and orientation. Glediator will serialize your data in the correct order so the teensy will display it as intended. Some other things to consider the teensy is quite fast with the usb serial connection so there may be a need to increase your serial settings on the pc side to accommodate that many pixels.

What I would do in your situation is group your matrix into 5 zigzag rows per teensy octo feed. You will only be using 4 octo pins out of the 8 . In your code you will be doing 400 pixels per strip (zigzagged) even if you use 4 out of the 8 pins your software will only send what you define.

Keep your grounds all connected and inject power where needed . If your using multiple power supplies kept the positive power isolated from the other positive feeds

By the way love Australia! Lived in Sydney for two years in Hurstville and Campbelltown. Plan to go back soon and visit

Thanks so much Chris! This is all starting to make sense… I was going to use all 8 and cut the last one short as per my initial post in the PJRC forum.

So how would I wright this into the Glediator code above? The part I don’t get is how does it know to only use 4 of the 8 pins, like does the code tell it to do so (if so, what do I change/edit to do that?) if it’s the Glediator software, how would I represent that in the preferences? Would I have to set it up as 5 “boards” of 20 x 400? That’s where I’m a little confused…

Also, I was originally going to break it up into 4 sections and run it power via 4 PC power supplies (two mounted on each side) where the negative and positive of each supply meets it corresponding “panel” and fans out to the lengths of 20 LEDs. This means I will have a vertical snake starting in the bottom left.

And yes, Australia is an amazing country. We aren’t grateful enough. I just went to Thailand for about a week for my honeymoon three weeks ago and then to Sydney for a week and it just shows how good we have it here :slight_smile: I live in sunny ol’ Townsville which is up in Tropical north queensland (even though Townsville is this desert looking part smack bang in the middle of tropics haha)

Check out this video and it explains the pixel mapping method about half way. They call it snake (zigzag). One issue I think we might have is your pixel count may be too high for the serial output unless it can go above 1000000 baud. The reason is that many pixels and a decent refresh rate (24) will need a higher speed. This is where using Ethernet is going to be your better option. Look at the teensy Ethernet options using a wiznet module.

Hey mate, sorry for the delay. I have kinda got my head around all of that okay - my curiosity is how does the whole set up know that the octo is only using the first 4 outputs rather then say 6 or all 8?

Hmmmm that’s not good to hear…
I have a few limitations, the main one is that I’ve blown budget big time and we are a non-for-profit organization sponsoring a lot of delegates so I’d rather not spend more money if I have to. The second one is time. I can possibly order one , but I don’t know how soon it’ll get here. I’ll see if anywhere in Australia has one in sock and post a link so you can approve it in case it’s reallllllyyyyy necessary.

Would it be hard to add the extra code to make the Wiznet module work?

would this one work? https://littlebirdelectronics.com.au/products/wiznet-w5100-network-module-with-mag-jack-wiz811mj

and then is it as simple as plugging it into a network and Glediator will still find it and send the data over a network based on it’s ip address , or am I totally off the money?

http://m.ebay.com.au/itm/1pcs-WIZ820io-WIZnet-Ethernet-Modules-W5200-and-MAG-JACK-ioPLATFORM-MODULE-/262941107243?hash=item3d3882e42b:g:dmgAAOSwvKtY9Pl0&_trkparms=pageci%3A715caff1-6c81-11e7-83c5-74dbd1800e07%7Cparentrq%3A5aea3c6615d0aa47a0043b6affff262e%7Ciid%3A14

I have code ready for this setup using teensy, octo and this w5200 (wiz820io) module so your plug in play time should be very minimal. however the software I used is jinx (much like glediator) and will allow you to map a section of screen. Jinx allowed me to use my preferred DMX e1.31 protocol. Glediator uses DMX artnet protocol and I don’t have any tested code for that.

Or you could use vixen or nutcracker software to pull a video file and push it to the teensy via DMX e1.31 method.

@Andrew_Gardner how it knows is by the pixels per strip being defined in code. So if you define 400 pixels the only pixels 1-400 will be parsed out to the first pin, then pixels 401-800 the next pin, 801-1200 the third pin 1201-1600 the 4th pin. The reason only doing 4 pins is to match your matrix layout so you can wire it up easily on one side

As far as Ethernet being necessary is a good question. I know the baud rate glediator will go up to 1000000 is capable of driving 600ish pixels at 24fps. Your 1600 pixels could work but your refresh rate is going to be very low and that’s if the software will allow you to reduce the refresh. (I haven’t done this method so your treading unfamiliar ground with me). Glediator does say it’s capable of driving more using Ethernet so I am leaning towards that recommendation.

The wiznet module has a 3.3v that will be able to be powered by the teensy 3.3v. The problem I had initially and could not get it to work was do to resetting the module on power up . So the code I have does the proper reset and it works perfect. The one video link of the long pixel strip is the teensy running with octo and Ethernet. I was connected wirelessly to the router.

Ethernet requires use of a network connection. You can use a router, switch or direct to the teensy. Router will be the easier since it allows you to get an IP address for your pc/laptop. The teensy will have a static ip address but in code must match the network IP format what your router is handing out . If you have a consumer router most networks are 192.168.1.x. Or 192.168.0.x so your teensy ip in code should match the network.

If you use a switch or direct connection your pc/laptop will need to have a static address assigned to it that will be on the same subnet as the teensy will be programmed with. So example you could make you pc 192.168.1.10 and your teensy 192.168.1.11 Subnet mask is 255.255.255.0 and gateway can be left blank.

Thanks for all that info Chris! It’s just past midnight here so I will reply properly tomorrow cuse I have to be up in about 5 hours for work.

just quickly would something like this work as I can buy it locally at a store just around the corner: https://www.jaycar.com.au/etherten-100-arduino-compatible-with-onboard-ethernet/p/XC4216

scratch that - they discontinued that one…
Eventually I will find one that’s in stock locally!

Try to get the WIZNET 5200 module if it all possible since this will minimize any code delays Else of use another brand or module you’re going to have to figure out the coding part which I may not be able to help you much with