Building a giant LED audio visualizer for a music studio

Hey guys, so i´ve been dreaming of this project for a while. My idea for this is for 2x0.5m led matrix panel made with 12 2m long, 60led/m LED strips made with SMD3528 led chips, powered with a single 12v 33A power supply.

I´ve based my design on this https://subms.com/projects/led_wall_viz and after seeing another post here mentioning pwm and transistors, but i dont really know how or where i should put those.

And another question, this build has 1440 Leds. Is an arduino enough to handle that many, or should i hook it up somehow to my computer (or to another more powerful arduino-like device).

Hope to get some help from you guys! been learning a lot this quarantine but this is totally new, thanks in advance!!

dyable:
My idea for this is for 2x0.5m led matrix panel made with 12 2m long, 60led/m LED strips made with SMD3528 led chips, powered with a single 12v 33A power supply.

So 1440 LEDs then. If these 12 V strips are the version that has a driver chip for every three LEDs, then it will draw only 27 Amps at maximum but you will have three LEDs in a row illuminated for every "pixel". If however it is the version that has individually addressable LEDs, at full brightness it will draw 80 Amps. Which is it?

dyable:
I´ve based my design on this https://subms.com/projects/led_wall_viz and after seeing another post here mentioning PWM and transistors, but I don't really know how or where I should put those.

Neither do I, that's for sure! :astonished:

Driving WS2812 has nothing whatsoever to do with using PWM or transistors. It is true that the LEDs themselves use PWM to control brightness but this has nothing at all to do with controlling them.

dyable:
And another question, this build has 1440 LEDs. Is an Arduino enough to handle that many, or should i hook it up somehow to my computer (or to another more powerful Arduino-like device).

This again depends on whether you use the 12 V three-per-pixel LEDs in which case there are only 480 to control, or individually-addressable in which case there are 1440.

Either way since they require 3 bytes of RAM per pixel plus some, this is beyond the capability of a Nano (you would not use a UNO as they are impractical, but the same applies). I believe an ESP8266 would do it. :grinning:

A PC or Pi generally will not be able to generate the necessary control signals for WS2812-style LEDs if it is running any operating system - which it clearly would be. :cold_sweat:

they are individually addressable. they are these. https://es.aliexpress.com/item/33012168378.html?spm=a2g0o.cart.0.0.2f7e3c00ix1vxR&mp=1 and they would draw at mas 28.8A, since they only draw 20mA per led. Thanks on that little bit of advice about the nano!

Aaaand what you said about pwm or transistors. Does that mean i dont need to use them? They guy in the blog i attached mentions them briefly, but i dont know where or how many did he put

I originally looked at using an Arduino since there are nice libraries for driving the WS2812b LEDs already written, but I concluded the Arduino just didn't have enough juice to drive that many LEDs and deal with running an FFT on two channels of audio. Then I came across the Teensy. This uses a significantly more juiced up processor than a typical Arduino. In addition, it has tons of hardware that can lift the difficulty of driving the LEDs from the actual processor. There was a prebuilt library (and breakout board) for the teensy to drive 8 strips of WS2812b LEDs in parallel using the processors DMA (direct memory access) and hardware PWM modules. I also found prebuilt libraries for sampling the audio and running FFTs on the data. These libraries also took advantage of the hardware built into the Teensy's chip to reduce the load and allow more things to be done in parallel on the processor.

That page is a not a tutorial, just showing off. Hence very few details. Does not say what type of Arduino, does not say what type of teensy. There is a huge range of power/capability in both brands. You should definitely check out the teensy products, forum, etc.

This is a very big project for a beginner! I would suggest starting with something smaller & simpler.

Oops! :astonished:

English version

No, those are absolutely not individually addressable. :cold_sweat: The entire 2 meter strip will be lit with the same colour and you would indeed need PWM to obtain shades other than the primary colours, given that you have the FETs set up to control the whole current of each strip.

Actually, “shades” is not quite right either as these “RGB” strips appear to have separate LEDs for each colour.

Next question? :grinning:

dyable:
Aaaand what you said about pwm or transistors. Does that mean i dont need to use them?

Correct. Ws2812 has the PWM and transistor drivers built into the chip inside each led.

EDIT: Paul__B is correct. The strip you found is not only not individually controllable, not ws2812, it's not even RGB. Each trio of leds is a separate red, green and blue led. Not suitable at all for your project.

Actually, I thought they seemed to be a fairly reasonable price so I have ordered a strip just for fun. :grinning:

It will be interesting to see if it actually ever arrives, as much of the stuff I ordered on eBay in the last few months has not. :roll_eyes:

Paul__B:
Oops! :astonished:

English version

No, those are absolutely not individually addressable. :cold_sweat: The entire 2 meter strip will be lit with the same colour and you would indeed need PWM to obtain shades other than the primary colours, given that you have the FETs set up to control the whole current of each strip.

I feared such. I´ve settled on these now

24 1m, 30 led/m strips. I´ll cut em down at 0.5m and and make it 48 led long, 15 led high, controlling it with the ESP8266 someone said. I´ll increase the power of the power supply seeing these leds need way more than the other strip i sent. Do i need anything else?

i´ve seen talk about breakout boards and such. I can guess their usage but i really dont know what do i have to look out for. Since it would be 48 leds long, i guess 24 channels is fitting, but i dont know what to be wary of.

Again thank you all so much!!

since

You may not need as big a power supply as you might think (needs to be 5V tho). Most patterns and colours only use a fraction of the maximum possible current. Only full brightness white on all leds will need the max current. A single primary colour like red, green or blue will need only 1/3rd of the max current for example, even if all leds are on at max brightness. If you use the FastLED library, you can set a maximum total power or current and the leds will be automatically dimmed a little to stay under the limit you set, should the pattern exceed that. Also, that many ws2812 leds on max brightness will be like staring at a huge flood light.

Next problem: ws2812 are 5V and esp chips are 3.3V. It might work but I wouldn't rely on it. You may need a voltage level shifter between the chip and leds to translate the 3.3V data signal to 5V. A 74hc14 or 74hct14 is ideal for this. Don't use the voltage level shifter modules offered on Ali/eBay etc for i2c, they are not fast enough for ws2812 data.

OK, let's see.

Link corrected and translated: 1m 2m 4m 5m WS2812B Led Lights WS2812 RGB Led Strip Light Individually Addressable Led Light Strip Black White PCB IP30 65 67 5V|led strip pixel|led pixel screenpixel text - AliExpress

15 by 48 - that is now 720 LEDs. 40 Amps peak at 55 mA per LED. Note this useful diagram:


It is important to convey the power to both ends of each strip or at least feed power in every 50 LEDs as the foil on the strip has limited current carrying capability. Also implicit is not too much distance of the data wire between the end of one strip and the start of the next. If your display is 15 LEDs high then you would probably run the power along the bottom of the strips and "zig-zag" the data and ground up one column of 15 and then down the next. Wit that arrangement, you might as well connect all the grounds at the top together and all the 5 V together, even if you do not take the power to those top commons (though you might as well).

An ESP8266 can drive them but you need to research the code to do so. I am afraid I cannot help with the spectrum analyser code however!

I now see that while I have been composing this, PaulRB has saved me the trouble of explaining about the level converters. :grinning:

(And I ordered a couple of the 1 meter, 60 LED strips to play with - if they actually arrive. :cold_sweat: )

Thank you both pauls!! i feel way more confident now on this build.Just one last question tho, is that one data connection from the board enough? like, i hook up all the strips to a cable connected to there and will be fine? (i was gonna do it in series)

Thank you so much!

You have 720 pixels x 24 bits per pixel divided by the data frequency of 800MHz 800KHz, so the minimum update time would be 22ms, giving an update rate of 46 frames per second if using a single data line. That sounds fine, but it allows no time to capture the audio data, calculate the FFT (which is very compute-intensive) and draw the pixel pattern. I think this is why the guy who built the visualiser switched to teensy, which I would interpret as one of the more advanced teensy models, because he mentions Direct Memory Access (DMA). This is a feature some more modern, advanced MCU have which allows data to be sent out to the LEDs while the processor is capturing or processing the next frame of data.

Another way to get around the problem would be what you mentioned: multiple data lines. This is easy to do with any of the standard arduino libraries for ws2812, but it would be completely pointless, because those libraries can only send data to one line at a time. So the total time taken is exactly the same as for a single data line. What would be needed is a library that can send data on multiple data lines simultaneously. I don't know which arduino libraries support that.

I am concerned that you are feeling more confident already. Paul and I may be giving you the impression that this project is within your reach. But as I said before, it's a very complex one with many advanced techniques and technical hurdles to overcome. I personally would not feel confident, if this were my project, I would feel challenged, because it is an interesting project, but also nervous, and I have been dabbling in Arduino projects for 5~10 years and have a background in programming.

Reading over the original project, my first though was he used something like the Octo2811 Adapter for driving the LEDs with a teensy. DMA data transfer would significantly decrease the load on the processor.

Do a google search for arduino spectrum analyzer projects, this is basically a spectrum analyzer display with added rainbow effects in the output.

ywah i also saw the octo ws2811 controller, and i think im going to pair that with a teensy 3.x (still deciding which, gotta research that). There seem to be a lot of resources about it, and there is already code written for a project like mine. Seems like the hard part is the wiring, and maybe tweaking the code, but ill address that when i get there. At least now i know the hardware that i need and works. Thank you all so much!!! any suggestions still accepted tho, im just gonna start with the woodwork for now

dyable:
Seems like the hard part is the wiring, and maybe tweaking the code,

Let me assure you, along with PaulRB, that the wiring is the dead easy part compared to the software.

A big power supply - such as they advertise to match the LED strips, heavy duty wire - at least 2 mm2 in two runs from the power supply, one to the section running along the bottom of the columns and one to the section running along the top, a much lighter three wire cable (all using stranded flexible wire by the way) connecting the data line, power and ground back from the start of the data run to the Arduino or other (because you use the power feed from the LED array to power the Arduino itself, a 1 A fuse in the 5 V line for this at the array end is recommended) and good soldering skill.

The code - that’s another thing altogether. :astonished:

PaulRB:
You have 720 pixels x 24 bits per pixel divided by the data frequency of 800MHz

Bit of a typo here, it’s KHz.

Grumpy_Mike:
Bit of a typo here, it’s KHz.

Good spot Mike, thanks. But clearly I did use KHz in my calculation!

Yes you did, which is why I knew it was a typo and not a mistake. Just pointed it out in case anyone wanted to follow your calculations. :slight_smile: