I've created a monster! Hexadecimal (16 output) level shifter shield for the NodeMCU-32S ESP32

(Jason Coon) #1

I’ve created a monster! Hexadecimal (16 output) level shifter shield for the NodeMCU-32S ESP32 board. So far I’ve tested with 800 WS2811 RGB LEDs. I need moar! :rainbow::metal::smiling_imp:

Thanks to @Sam_Guyer , @Rina_Shkrabova , @Daniel_Garcia , and anyone else that has worked on ESP32 parallel output support! Send me a DM and I’ll gladly send you a board to play with!


(Marc Miller) #2

Beauty! You make good stuff @Jason_Coon

(JP Roy) #3

I’ve gone cold turkey on the LED projects for a while now but that thing is giving me strong withdrawal symptoms ! Really good job there Jason !!

(dalemorris164) #4

:heart_eyes: want want want

(dalemorris164) #5

How many LEDs will this beauty support ‘in theory’ ?? Have a few large scale projects in mind and this would be perfect. Thanks again Jason appreciate your hard work!

(Jason Coon) #6

Thanks guys! I haven’t been creating any pieces of my own lately. I have been enjoying seeing the amazing things others are creating with my boards, though!

(Jason Coon) #7

@dalemorris164 each WS281X takes ~30 microseconds to update. In theory, this should support 16x parallel output, meaning if you had only one LED on each of the 16 data pins, it would still only take 30us.

So, 100 LEDs on each pin (1,600 total LEDs) would take 100 * 30 == 3,000 microseconds, or 3 milliseconds, to update. To translate that to frames per second, we just divide 1,000 by that, so 1,000 ms / 3 ms == 333.33 FPS.

200 LEDs on each pin (3,200 total LEDs) would take 6ms, or 166.67 FPS.

400 each - 6,400 total - 12ms - 83.33 FPS
800 each - 12,800 total - 24ms - 41.67 FPS
1,000 each - 16,000 total - 30ms - 33.33 FPS

This is all theoretical, of course. In practice it will take slightly longer per frame, to perform pattern calculations, handle Wi-Fi and/or Bluetooth, etc. It should be better on ESP32 than most other platforms, since we have another core handling most of the LED updates, but we also also have an RTOS, other threads, interrupts, etc.

I compiled my esp32-fastled-webserver sketch with 1,000 LEDs per strip x 16 strips for the NodeMCU-32S board, and it came up with these FLASH & RAM numbers:

Sketch uses 428,019 bytes (32%) of program storage space. Maximum is 1,310,720 bytes.
Global variables use 74,120 bytes (22%) of dynamic memory, leaving 253,560 bytes for local variables. Maximum is 327,680 bytes.

So RAM & FLASH limitations do not seem to be a concern. :slight_smile:

I’ll get all of this information added to my product pages.


(Jason Coon) #8

Oh, I should also note/disclose: I am currently having a halt/freeze issue when running my esp32-fastled-webserver project with this board and setup, with Wi-Fi and web server functionality enabled. If I disable Wi-Fi and web, it runs fine. I’m not sure if it’s specific to the NodeMCU-32S, or 16 pin parallel output, etc. Still troubleshooting, will update when I know more and/or have a fix.

I think I’m going to also make a 16x version of the Wemos D32 ESP32 board, since it seems to have the best combination of price, pins, stability, etc.

I like the Feather ESP32, but it doesn’t seem to break out 16 usable pins.

(dalemorris164) #9

Thanks for the explanation! Very informative. Wish you the best of luck with this troubleshooting. Please update if you make some progress. I’m off to tindie to buy some of these puppies

(Jason Coon) #10

Quick demo video finally finished uploading and processing: https://www.youtube.com/watch?v=0jCk7uoe0Ec

(Stefan Petrick) #11

@Jason_Coon Impressive! I see, the WS281x are not dead yet. They just need enough parallel outputs to run at decent frame rates. :slight_smile:

(Jason Coon) #12

@Stefan_Petrick Thanks! Yeah, they’re definitely still used a lot. They’re cheap, and still the only type I’ve found in the 8mm “bullet” style that I use a lot.

(Stefan Petrick) #13

@Jason_Coon I still have one of these 25 bullet chains. Back in the days when they were new on the market I payed 60€ for one in Europe… What´s the price today?

(Jason Coon) #14

I usually buy them in bulk for $4.50 per strand of 25 ($180 for 1,000 LEDs, 40 strands of 25):

(Yves BAZIN) #15

@dalemorris164 @Jason_Coon my led panel uses a esp32 with 16 parallel outputs and 5904 leds with a refresh rate of 84fps. I have also used 2 level shifter 74hc245 and plug them to link 4 rj45 cat6 wires. This is great as the data needs to travel long distances.
missing/deleted image from Google+

(Tom Schubert) #16

Damn, right after I jumped down the feather rabbit hole… :wink:

I’ll give the huzzah a try but may be jumping ship from feature alone. Great work! @Jason_Coon

(Chris Parton) #17

I just sent you a Hangouts invite, I have a potential future project that would benefit greatly from a board like this!

The invite will just say “Hi Jason,” as I tried to hit shift+enter but it sent the invite :slight_smile:

(Jason Coon) #18

@Chris_Parton sounds great! Sorry, but I prefer to communicate on stuff like this via email, mind getting it started at https://www.evilgeniuslabs.org/contact ? Thanks!

(Chris Parton) #19

@Jason_Coon No problem, just shot you an email :slight_smile:

(James Callahan) #20

@Jason_Coon - Did you ever figure anything out with the freeze/halt issue when using FastLED+WiFi+Webserver? I’m getting the same problem and I’m ready to ditch the WiFi/Web for now just to get my project completed.