Bypassing LED Daisy Chain

I'm working on a project that has a relatively complicated path that individually addressable LEDs follow. There are a variety of WS2811 LED strips, but they are all geometrically dispersed, making it challenging to loop the signal wire back to maintain the daisy chain.

Rather than daisy chaining the LEDs to all of the disparate locations, is there a way to bypass that chain and start a strip of LEDs from the nth position? What I have in mind is that there would be an Arduino local to the strip that would receive the complete bit stream to the first LED and then would adjust the LED strip to the relevant position.

Any advice would be greatly appreciated.

Lastly, you may be asking why not just make separate parallel strips. The rationale is that the system is currently setup with a mobile phone interface that we would like to retain and that interface only works with a single in series strip.

Draw a diagram of your proposal.

I prefer one string from one pin, then address the segments when needed.

Current architecture is something like this:

I would like to use more of a hub and spoke model:

The dip switches are used to index the first LED in the relevant strip to the nth position (as defined by the position of the dip switch).

If I understand your idea correctly, this would require the microcontrollers to receive the ws2812 data stream from the controller, filter it for a specific range of led indexes, translate those indexes for a smaller, local strip, then send out the data to the local strip?

Unfortunately, I think you may fall at the first hurdle: getting the microcontrollers to receive the data stream from the controller. I don't know of any Arduino code or library for that function. But if you can clear that hurdle, the rest should be possible, I think.

Hi Paul, that's exactly what I'm trying to do!

I recommend you to read about I2s reading with DMA in esp32. This way could help you to receive a addressable led signal.

It is really quite hard to get that working. The cause is that the signal used for WS2811 (or ws2812b or most of the worldsemi chips) is a form of semi-self clocking SPI. Basically it uses a bitstream of 800KHz, where every bit is represented by a HIGH signal switching to a LOW signal, and the duration of the HIGH signal determines whether the bit is a 1 or a 0.
The bitstream is received by the first chip, which chops off the first 24-bits (or mutes them) and forwards the rest.

Having had a good look at the code that is used by Makuna Neopixelbus, i can tell you that 1 Bit is represented by 4 bits, 1110 for a 1 and 1100 for a 0 (or 1000 i can't quite remember but i think the 1100) send at 3.2Mbps, and i know that the method used by Paul stoffenregen for the teensy does something similar, though by sending 10 bits at 4Mbps. If you use those particular methods for transmission, you should be able to receive at the same baud rate which is supported on Teensys and ESPs but somehow i think you would be better of with different methods.

Options that come to mind.

  • Create a DMX chain, and receive at different addresses
  • Use Artnet to transmit & receive the data packets either wired thru ethernet or wireless trhu WiFi
  • Pass the signal over distance using 2 MAX485 transceivers, either in parallel or serially. You can cross up to about 80 meters that way, using cat-5 UTP cable and use separate PSU's without issue. (this is the simplest method and requires no extra coding)

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.