Go Down

Topic: Two 16-LED neopixels (WS2812) driven from one nano, LED rings ~20ft apart (Read 1 time) previous topic - next topic

phildo

How would you accomplish [title]?

The options I can think of are:

1. Put nano in the middle, have a 10ft cable going into ring A's "Data Input", and a 20ft cable going from ring A's "Data Output" to ring B's "Data Input". I don't like this because it's ugly, and I'm unsure what a total of 30ft of cable will do to the data signal.

2. Put nano in the middle, have a 10ft cable going to TWO rings right next to each other in series (A and A'). Duplicate the data signal (literally use the same arduino data pin) across another 10ft wire into TWO ring Bs (B and B'). Then put black tape on ring A' and ring B so no light shines through. (So I'm sending both ring A data and ring B data to both terminals, but only the relevant LEDs are visible). I don't like this because it wastes 2 LED rings (and I still have the problem where I'm sending data across 10ft.

3. Get another 2 nanos, and put one in each box with each ring, and the arduino in the middle just sends simple commands to the ring arduinos, toggling which "state" to be in (of only ~6). The per-pixel details of those states would be driven by each nano adjacent to the pixels. I don't like this because it's a waste of arduinos, and (IMO) there are more points of failure.

What are your thoughts? How would you accomplish this?

Use two Nano output pins, one for each direction and definitely remember a series resistor close to the WS2812. Use a cable with signal and GND twisted is also a good idea, the power for the leds can be feed from some other wires.

phildo

[Original response, leaving it here for future readers:]

great info (and I really appreciate the additional tips!)- but to clarify, do you mean run two separate "instances" of driving ws2812 strips? I'm currently using the FastLED library, and had assumed it only allowed for running a single strip at once (the API to flush the pixels is just FastLED.show()- how could I choose which strip that is referring to?). <- this is the justification for why all my options are essentially hacks on "pretending I'm driving a single, double-length LED ring".

[I figured I'd do some research on my own before posting that, so now that I have:]

Aha! Apparently that's actually quite straightforward to manage w/ FastLED. (Details here: https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples ). Just treating them as separate strips is now an obvious/straightforward solution! Thanks for your help! :)

Grumpy_Mike

Quote
and I'm unsure what a total of 30ft of cable will do to the data signal.
It will mash it.
At those distances I would put a differential driver in the Nano end and a receiver at the ring end. It did this for an art installation I made a few years back and had no problems with the data integrity.

Grumpy_Mike

Use two Nano output pins, one for each direction and definitely remember a series resistor close to the WS2812. Use a cable with signal and GND twisted is also a good idea, the power for the leds can be feed from some other wires.
Odd you are only keen on sticking to an absurd adherence of specifications on other people's designs and not your own.

Odd you are only keen on sticking to an absurd adherence of specifications on other people's designs and not your own.
Please be more specific, it is very hard to guess what you mean!
The Nano is 5V output, but the 10ft cable is definitely a very long distance for a about 1MHz signal. My advise is the best way to transfer that signal 10ft without extra electronic.

Paul__B

This would appear to be a situation where it would be far more appropriate to use a Nano or Pro Mini located at each  ring, directly attached to both data and 5 V supply as it powers the LED ring.  Being directly attached, there is no need for the series resistor in the data line but you would want that 1 mF capacitor between 5 V and ground.

Communication for synchronisation between the two can then be done using serial with a much lower data rate.

A 16 LED ring could at full power, draw 960 mA so a common USB "Phone Charger" rated at 1 A at each ring would be a practical power supply.  :smiley-cool:

Grumpy_Mike

Quote
My advise is the best way to transfer that signal 10ft without extra electronic.
So you think a twisted pair will transfer a 1MHz signal? The act of using a twisted pair increases the capacitance of the cable thus screwing it up even more than three wide length of ribbon cable.

But digital signals at those sorts of frequencies need a differential driver, then the twisted pair makes sense.

So you think a twisted pair will transfer a 1MHz signal? The act of using a twisted pair increases the capacitance of the cable thus screwing it up even more than three wide length of ribbon cable.

But digital signals at those sorts of frequencies need a differential driver, then the twisted pair makes sense.
The difference in capacity between straight and twisted is very low, what you need is a small loop area to keep the inductance low. Ribbon cable is not that common anymore, but yes using two GND wires with a signal between would also be a good way.

Anyway we are talking 10feet of wire, that is long for 1MHz, but definitely not impossible.



The above is after 10ft of wire (2x0.5mm2) driven from a Nano, the series resistor is important due to the spikes, but the waveform look fine in the 2V to 3V range where the input of the NeoPixel triggers.

Grumpy_Mike

Quote
Ribbon cable is not that common anymore
Rubbish, I use lots of it.

Like I said you are not so good at looking at specifications for your own recommendations, only you are shit hot at erroneously criticising others.

Look have you tried this? It is a rubbish idea you are promulgating even if you had.

Quote
that is long for 1MHz, but definitely not impossible.
Sure it is also not reliable, will radiate like f***, perhaps to the extent of being illegal, and is simply the wrong engineering solution.

We have a certain responsibility here to offer the best advice we can for a beginner. You in my opinion are falling short of that ideal.

Paul__B

GM is not happy!   :smiley-cool:

I would be sticking with my recommendation.  :smiley-roll:

Rubbish, I use lots of it.
I did not say it was unavailable, but it is not common anymore because most stuff use serial data transmission today.


Like I said you are not so good at looking at specifications for your own recommendations, only you are shit hot at erroneously criticising others.
It would be more appropriate that you showed where I misunderstand the specifications, when you do not agree.


Look have you tried this? It is a rubbish idea you are promulgating even if you had.
Sure it is also not reliable, will radiate like f***, perhaps to the extent of being illegal, and is simply the wrong engineering solution.
Standard ethernet transmit on twisted pair at much higher datarates, how much do it radiate?
And what about a long NeoPixel strip, there the lines are not twisted and the full raise time is restored for each pixel.
Many Arduino designs are probably illegal due to radiation, very few people run them in shielded boxes.


We have a certain responsibility here to offer the best advice we can for a beginner. You in my opinion are falling short of that ideal.
Using a single Arduino is much easier than running multiple Arduinos with communication between.


Go Up