Is it possible to go beyond the single ESP32 10 hardware output boundary? I know that WLED offers sync and virtual LEDs with more than one ESP32. I’m just a bit confused if it’s possible to go to 16 hardware outs, and if it’s possible, what’s the best way to do it. If I do 2 ESP32s, can I balance the load and use 8 hardware outs on each ESP32, thus making 16 hardware outs? I know I can configure as many segments as I want on a single LED string on just one ESP32/8266… But in my situation, this isn’t possible. I’d rather not electronically mirror hardware outs to strips, unless there is no choice. Thanks!
That is very much interesting question which we also like to know . I have recently found out that when you are doing DDP that there is also limitation of 10 output . This tells me right away this might not be HW limitation but a code restriction ( could be intentional ) .
It’s very likely both.
I know there’s a hardware limitation of the RMT interface(s) used for generating the LED data streams.
That’s been fairly well documented in the NeoPixelBus library that underpins WLED.
Segments are limited to 32 on ESP32 and outputs to 10 physical + 2 virtual. If you use audio then available physical outputs drop to 8.
This can only change if you modify source, which I do not recommend.
The ESP can definitely drive more than 10 WS2812 outputs. Before I switched to WLED, I had my own ESP32 code using FastLED and driving 14 outputs and about 16,200+ LEDs at about 18FPS.
Granted, my code was specific/purpose built, so it wasn’t doing much more than feeding those output from a dedicated, specific effects logic, but it is proof you can physically do it.
I expect WLED, being more general purpose and having multiple configurables, might not be able to keep up with that. But it would be interesting to recompile with that limit bumped and see what happens.
Gerry
Many of the output “limits” are set by the use of RMT/I2S hardware in the ESP32.
They are fast and reliable, but there are only so many of those channels available.
The NeoPixelbus library in WLED makes driving strips via that hardware very simple.
The library also allows for “bit-banging” drive of strips based on software timing loops, which can work but are very much more CPU intensive.
For an ESP32 processor, you will rapidly run out of timing resources and certainly impact the ability to maintain other time/resource activities (such as WiFi) as you (over)add outputs.
But hey, the source is there and it’s pretty easy to specify the way you wish to drive a strip with NeoPixelBus.
Give it a shot.
The other question that comes to mind if you’re down to 18FPS, why do you need more outputs?
At 16,000 LEDs you can get 2,000 per output on 8 GPIOs and probably still have something like that FPS (somewhat guessing on my part).
Anyone ever try one of these for additional hardware outputs? I was seriously considering designing one of these, only to find out its already been done. Pixelblaze Output Expander – ElectroMage Shop It would be great if this could work in conjunction with an 8266/32 and WLED, then have your WLED segments correspond with the desired hardware LED config.
They look like they can be used with a wide range of data sources.
There are Github details
Seems the caveat is being able to communicate with the host device over a 2Mbps serial channel.
Might end up being problematic with 16 live streams over a single data channel???