connecting strips of APA1012 together, but not neededing sync / OctoWs2811

Status
Not open for further replies.

Tejkaran

Well-known member
I have lots of APA102 5m strips, and I have been asked to do a bit of a project, I have played around a bit and I have a solution to it, but was curious what other people's view would be on it.

I will be installing 20 x 3m strips side by side. Each strip is separated to the next by about 30cm.

There are three sections . So the first lot of 10 strips will be section one. The next 5 would be section two and the final 5 will be section three.

Each of the section I will use a RS485 link to link to another Teensy(because I now know how to do this)
Then with the code I can say Teensy 1 do this, Teensy 2 do that and Teensy 3 do whatever
I will control them via bluetooth so you can turn on/off for the sections, but each section I would like the same thing to happen.

I know a lot of users use the WS2811/WS2812 with the Octo WS2811 to sync many strips together and in essence this is what I would like to do, but what I have outlined work / is a good method of doing what I need doing, or should i rethink and approach in a different way?

Your thoughts are appreciated

vKSnJvp.png
 
The method should be fine given I take it you are just after human eye level synronisation, not scientific instrument level syncing. My main thought would be how you will drive clock and data to those strips themselves. If you are lucky you may find the Teensy 3.3V signals make the ones you have work, otherwise you will need to look into level conversion solutions that will drive them, especially if your clock pin is doing a 10 way fan out. Is the pattern the same on each block of 10/5 strips (same data pin) or is there a software process for matrixing it all?

Is the blue tooth data the LED data for each strand, or just a message to run animation X? If the bluetooth and then RS485 is streaming the pixel data there is no big sync problem, but if it's a free running animation you will need some sort of process to keep them roughly in time.
 
Hi Gtemlin
yep, just looking for eye level synchronisation. In fact as long as they are looking the same all is good.
the pattern would be the same on a single section, but all three sections can be different.
It is not a very challenging piece in that sense, all that is needed is the ability to change colour and to change brightness(on/off). So it could be that section 1 is red, 2 is blue and 3 is turned off.
The bluetooth would be a message to run animation x.
So last time I did it, for a single strand, it worked fine, I was just going to replicate it.

The piece that caught my eye in what you said:
My main thought would be how you will drive clock and data to those strips themselves. If you are lucky you may find the Teensy 3.3V signals make the ones you have work, otherwise you will need to look into level conversion solutions that will drive them, especially if your clock pin is doing a 10 way fan out.
Why would I need a level converter? What purpose would it serve? I am not suggesting I know otherwise, I am just trying to understand the role of said feature. I would have presumed that if you connected 10 identical length wires to the data line / clock line via a bus connector or the likes then the signal would have been evenly matched between them all and it would run like 'one'? I get the feeling I have overlooked something here :/
 
Why would I need a level converter? What purpose would it serve? I am not suggesting I know otherwise, I am just trying to understand the role of said feature. I would have presumed that if you connected 10 identical length wires to the data line / clock line via a bus connector or the likes then the signal would have been evenly matched between them all and it would run like 'one'? I get the feeling I have overlooked something here :/

The ICs inside the LEDs run from a 5V supply, the Teensy outputs 3.3V as a logic "high". 5V-Devices may or may not recognize 3.3V as logic high, as it is not very close to their supply voltage. This is essentially the same issue no matter how many strips you connect in parallel. The level shifter will translate the Teensie's 0-to-3.3V signals into 0-to-5V signals, which will be recognized reliably by the LED strips.
If you don't want to roll your own PCB, the Prop Shield "Low Cost Edition" has two level shifters onboard (for precisely this purpose, driving strings of APA102s), a low-cost Prop Shield per Teensy will give you a clean and compact build, but if you like to build it yourself there is no magic involved, 74HCT-series buffers will do the trick as well.

Ben
 
The piece that caught my eye in what you said:

Why would I need a level converter? What purpose would it serve? I am not suggesting I know otherwise, I am just trying to understand the role of said feature. I would have presumed that if you connected 10 identical length wires to the data line / clock line via a bus connector or the likes then the signal would have been evenly matched between them all and it would run like 'one'? I get the feeling I have overlooked something here :/

Many of the programmable LEDs (ws2812b, apa102, etc.) want voltages around 5v. The Teensy runs at 3.3v. If you want to reliably signal the LEDs, you need to boost the data signal to be close in voltage to the power source you are using for the LEDs. Sometimes it will just work, but it isn't guaranteed if you don't use a level shifter. I have some older neopixel LEDs (ws2812B) that will run fine with the data signal being 3.3v and the power signal being 5v, but some of the newer neopixels no longer run in that configuration.

The Octows2811 shield provides level shifting from the 3.3v that the Teensy uses to the external voltages (typically 5v) for each of the 8 signals in parallel.

One issue with level shifting is speed when you are using the ws2812b LEDs. The ws2812b LEDs (that Adafruit calls neopixels) only have 1 data wire, and the clock is implied. That means to do the signaling you can't have a delay. The Octows2811 has a fast unidirectional level shifter that is fast enough for ws2812b LEDs. Many of the other common level shifters meant for bi-directional communication (i2c, spi, uart, etc.) are slower, and may be too slow for the fixed clock cycle of the ws2812b.

On the other hand, the APA102 LEDs (that Adafruit calls dotstars) have both a data and a clock signal, so they aren't tied to a rigid clock period. You can run the lights faster or slower than you can with ws2812b LEDs. This is useful for POV (persistence of vision) setups, where you want a much faster pattern. It is also useful for the Raspberry Pi, where you can't always get accurate timed events.

Since the Octows2811 has 8 outputs, it means you could run 4 strands of APA102's in parallel.
 
Last edited:
I feel like I have just been slapped in the face. I genuinely had no idea of this at all. I have no previous electronic background, so I have kind of been just going along with it, but I assumed with power you had to have differences(Vcc +V--, 3.3v, 5v, 12c etc) but I had no idea for signal, though this makes sense now. Jheez. Rookie error. I've always used the Teensy as the direct link to the data lines, whereas in fact I should convert the signal to 5v before I link it!! Blimey...
Another thing that comes to mind, my signal seems to get weaker when I go further than 20m in a straight line, would this be linked to this?

I am looking at the Prop shield (You mean this right?) and it seems good, but would I only be able to link 1 strand to that? Is there a reason it is $20 though? Is that because you get the Teensy with it? Is it possible to get the Prop on its own?

For the Octows2811 sounds like a good one to be using for the data.

And if I wanted to get a quick and dirty level shifter, is this what I should be looking for? (link) I used this link, because I can drive there and pick it up.

Thanks guys!

Tej
 
Another thing that comes to mind, my signal seems to get weaker when I go further than 20m in a straight line, would this be linked to this?
This might be an issue with unstable power delivery due to losses in the long strands of conductor. Try adding a second 5V and GND line to the end of the strip (in parallel, from the same power supply) to feed energy into the strip from both ends.


I am looking at the Prop shield (You mean this right?) and it seems good, but would I only be able to link 1 strand to that? Is there a reason it is $20 though? Is that because you get the Teensy with it? Is it possible to get the Prop on its own?
No, this: http://www.pjrc.com/store/prop_shield_lowcost.html and yes you cqan link one strand to it (or multiple strands in parallel which would then all show the same pattern as they are fed with the same data).


For the Octows2811 sounds like a good one to be using for the data.
The OctoWS boars can feed four strands at once with four independent streams of data, I personally haven't used it yet.

And if I wanted to get a quick and dirty level shifter, is this what I should be looking for? (link) I used this link, because I can drive there and pick it up.
Nope, this one is too slow for SPI, it's only ok for slow signals (like I2C). You'd need something like the 74HCT245 (It's important to use the HCT version, not HC)
which is exactly what's used on the OctoWS adaptor.

Note all shields and adaptors (Prop shield, Prop shield low cost, OctoWS, ...) come WITHOUT a Teensy!
 
Thanks for the help here guys. I really do appreciate it...from the many of you who have posted.
I have now purchased a handful of low cost Prop shields, however I am in the UK so it will take a bit of time to get to me so in the meanwhile I have purchased some SMD based ones
board
chip

Hopefully this works and I can tell you how it goes.

Tej
 
Last edited:
Status
Not open for further replies.
Back
Top