Achievement unlocked: The Matrix on a matrix

I’ve been wanting to do this for a while: to make my own LED display. Clearly, I’m not the only one with such aspirations. With a little bit of elbow grease, you can put together this beauty:

Ingredients

Directions

The Hardware

Originally, I used the datasheet to determine the power supply I would need. I calculated I would need 70A@5V, but in actuality I measured and only use on average 6A@5V. Therefore, you can save yourself some money and get a much smaller power supply.

I put together a mini circuit board where on the ESP32, I used some of the GPIOs to connect to the LED matrix boards.

27232
26224
25215
GPIO pins corresponding to the panels

Since the ESP32 is a 3.3V part, I needed a way to make it talk 5V, so I just did the cheap way and put in a 3.3KOhm pull up resistor:

It’s a bit tricky to do, but kind of works in a pinch. Just make sure you do a good job on your soldering. I spent a couple evenings trying to debug why periodically some of the panels flashed all white. My theory is that a weak solder joint would have charge build up on it and thus would send faulty data to the LED board.

The better solution would be to get a strip of WS2812 parts, like this and use one per GPIO that’s close to the ESP32. It will essentially level shift the 3.3V signal to 5V and will transmit a lot better. I didn’t need to do this for my project though.

The board I got from Home Depot for $8. Cut it in half and drilled holes where the wires from the LED boards would come through. To mount the LED boards, I simply used hot glue. It stayed put really easily and was not messy.

Overall, the cost of putting everything together was under $100. Not too shabby.

The Software

You can simply load up WLED onto your ESP32 from https://install.wled.me/. No compiler needed, just a Web browser. Pretty simple. I used version 0.14.3. The 0.15.0-b1 seems to have issues with the brightness across panels, and 0.15.0-b2 for some strange reason doesn’t output correctly on the 9th panel.

Once you have WLED installed, you will need to configure the LED boards as to how they are connected to the ESP32. There are plenty of tutorials out there, and it’s pretty self explanatory, so I won’t bother writing it up here.

The piece that you are probably here for is the Python script that will stream a movie to your display. Running it you install the dependencies, then the script should start streaming your movie. It also supports GIF animations as well as still images.

The script uses the WLED’s UDP Realtime: DNRGB mode. Essentially, the video is streaming across the wireless the entire frame. Not entirely sure where the bottleneck is, could be that my wifi mesh is pretty bad, or the ESP32 doesn’t have enough bandwidth to process at the rate I need it. Either way, it is usable, but I’m always looking to improve it.

Leave a comment