One pixelblaze to mirror another or wireless expansion?

Is there anyway to have one pixelblaze simply mirror or send the same pattern playing to another on the same wifi … That is without having to run the raspi controller or implementing my own webhooks calls to both pixelblaze boards?

Or have an expander board address 0 on one PB, then expander board address 1 via wireless that’s attached to another PB?

Reason being it’s all the rage this year to put Christmas light tunnels “arches” over ones sidewalk, and the neighbor and I want to sync our setups without having cables run across one of our driveways.

Perhaps a strange use case, but I thought I’d ask.

Maybe running one long 2 conductor cable to an expander board in the neighbors garage would accomplish it? He would have his own power supply but the data and ground would be connected back to my PB with my own expander board for my arches???

I think the wireless solutions as you said are:

Best: Run Firestorm, or @zranger1’s new code to control both
Far less good: Use an expander board to run a serial connection. Technically, you could probably go wireless but not without trouble and work.

As discussed in a few threads now, there isn’t really a good way to push pixel data to a (second) PB. Yet. (@zranger1’s code is limited in speed) You can control multiple boards wirelessly and tell them to run patterns. You can even use a wired connection to sync two boards to run as close to synced as possible. (Or use Firestorm to do so wirelessly).

I should really try setting Firestorm up on Termux
(Android) and see if that works. (It should, see
https://wiki.termux.com/index.php?title=Node.js
And https://www.freecodecamp.org/news/building-a-node-js-application-on-android-part-1-termux-vim-and-node-js-dfa90c28958f/
)
That would at least be relatively “mobile”.

I did just order some more v2 PBs (on sale!) So I have more inventive to do so now. Hoping the v3s PBs ship soon too…

Having one Pixelblaze publish sensor data (or other variables!) is definitely on the roadmap. Until then, you can getVars from the one with the sensor board, assuming it runs a pattern that has exports for all of the sensor data in question, and setVars to the other Pixelblazes.

Apr '23 edit: Now you can use the new Sync feature to do all this in a much simpler way. It lets you code in one place, share sensor board data with many other Pixelblazes, and synchronizes the timebases.

Without Firestorm, if a Pixelblaze joins the AP network of another Pixelblaze, animation timebases will synchronize. It doesn’t switch patterns too, you’d have to load each Pixelblaze’s IP, but a timer could be used to make a multi-pattern pattern with synchronization.

For example, if you took one of the multi-mode examples, you can make it synchronize modes using time():

var minutesPer = 1 //run each pattern for a minute
var numModes = 5 //use up to 5 modes
mode = floor(time(numModes * minutesPer * .915) * numModes)
2 Likes

What would you say the max distance I could extend the data + ground lines to a second expansion board??? Would I need to ensure both expansion boards have the same length of 80ft cable before connected to the PB for the sake of timing?

Would I have any issues with a second expansion board being run from a different 5v supply as the PB and the first expansion board? Just the data/ground lines would be tied together.

@jpm,
There’s a resistor on the sensor board that can be shorted out to increase drive strength. With that, I’d expect a handful of meters at most, and that is depending on cabling used.

For longer distances, I’d use a differential transceiver. Something like this:

BTW you could also use something like that to send LED over long distances.

The sensor board needs 3.3v, but otherwise yes, it can be run on a separate power supply.

1 Like

Your referencing the sensor board, but I’ve been asking about the expansion board…

Is the resistor to eliminate the same???

PB --------- locally connected EXPANSION board, address 0
∟_______ really long wire ------- remote EXPANSION board, address 1

Hi @jpm
My misunderstanding. Both are expansion boards and I missed the context. I must have music reactive Christmas light shows on the mind haha.

There’s no resistor modification necessary but I wouldn’t recommend a direct wired solution with your setup (80ft 2 houses power). It’s quite long and thinking about it a bit more, bridging GND between 2 houses power could make a massive ground loop.

An isolated differential signal would work.

It may be possible to use a wireless serial relay, as long as it can handle 2mbps.

I saw a project to use a pair of esp8266 modules to do something like that a while back.

Still, the mode trick above and just a pair of PBs could get you a synchronized display.

Thanks for all the help - I finally got our Christmas arch display going glitch-free with Firestorm and a pair of PB + Output expander boards

Short demo video here: https://www.youtube.com/watch?v=jgM8WfJmEX8

3 Likes

OSC pub/sub instead of WebSocket put/get would make this kind of stuff dreamy and uncomplicated. I made an OSC-WS proxy to control my PixelBlaze from an OSC source but would love for it flow the other way.

It’s a SMOP :slight_smile:

1 Like

Whoops! I was thinking about this and remembered OSC is a send/receive UDP. Even better.

1 Like