p2:2 – 910 LED matrix display build
It’s been a little while since my last post but I’ve got some exciting news. I’ve spent some time putting together this LED matrix display. It was difficult finding time to work on it with all the other things going on, but I was always excited when those bits of time came along. As discussed in the previous post, the LED matrix is housed inside a 24″ x 18″ shadowbox. However, undoubtedly the most important part of this build is the grid and light diffusion to create the desired pixelated look.
making the diffusion grid
Going into Fusion 360, I modeled up the grid to ensure accurate spacing and keeping the LED centered within each pixel. After a few tests, I determined that a 10mm depth was sufficient to diffuse the light and fill the pixel. I modeled out the rest of the panels and assembled them. Each row of pixels is designed with a small notch in which the LED is meant to snuggly fit. It wasn’t until after the display was fully assembled that I noticed the notch may have been slightly too tall and allowed for a tiny bit of light bleed. While it is slightly noticeable, it definitely does not take away from the sharpness of each pixel. The ends of each row have a slightly deeper notch to account for wiring and hot glue for securing and insulating the connection. These features can all be seen in the video below.
It took about 4 hours of print time for each panel of 10 x 11 pixels, which maximized the build area of my Prusa MK3s without pushing the edges. Just in case there was any warping. Each of the panels were printed first with standard, white PLA with a switch to standard, black PLA after the first layer. This resulted in one solid grid piece, which would later be superglued to the other pieces giving me one large panel.
preparing the shadowbox
Once the diffusion panel/grid was complete, it was time to prepare the shadowbox and the LED panel. Shadowboxes often come with a layer of foam on the back panel for attaching things to display. In order to maximize the space and reduce heat retention, I chose to remove this layer. It was attached with adhesive, so it took a little elbow grease to get it off. There was some adhesive residue left behind but it was no longer sticky, so I didn’t attempt to completely remove it.
The next step to prepare the shadow box was to create the holes for the power cable, the power switch, and the microphone for the spectrum analyzer feature. Unfortunately, I did not capture many photos of this process, but you can see the holes in the overall video below. These shadowboxes are essentially made of an MDF like material, which is more like compressed paper than anything. I used some painters tape to ensure I didn’t damage the finish on the outside of the frame.
I used a power drill to create the holes as best I could and then carefully cut away more pieces until the power switch and cable gland fit. The hole for the gland was especially difficult and I ended up damaging more of the frame than I wanted. As a quick remedy, I simply printed a cover to finish it with a clean look. Again, I apologize for not taking more pictures of this particular part.
Next up was the glass. As I mentioned in the previous post, I wanted a look that differed from the other DIY LED matrix displays I have seen. Most have used frosted glass or translucent diffusion panels or even plain, white paper. I wanted a dark display when the LEDs weren’t off and while the ideal would have been to have black diffusion acrylic, I went with 20% automotive tint.
This was my first time applying tint. I messed up the first attempt but learned from it and the second attempt was much better. The most difficult part was ensuring that there were no fuzzies or debris between the tint and the glass. I did my best but in the end, there were still some bits of debris that I failed to see through the application liquid (soap and water) and the darkness of the tint on a dark table (probably not the best idea). In the end, it doesn’t take away from the look of the LEDs, so it all worked out.
the LED panel
The final major component is of course, the LED panel itself. I chose to mount the LED strips on 3mm plywood panels. They’re cheap and easy to work with but sufficiently sturdy. I cut the panels to size and used a bit of duct tape to secure them together at the seam. Then, using the grid panel, I traced and outline and marked the notches with a pencil to give me reference points that I used to draw guide lines across the plywood. Each row of 35 LEDs were attached with a drop or two of super glue here and there to ensure they stayed even if the adhesive started to give way. The notches in the diffusion grid and pressure fit inside the shadowbox would help keep the LED strips in place.
Then, it was time to wire everything up. I decided it would be best to wire everything in a zigzag or serpentine pattern. Doing so meant that I needed less wires to connect the data from one strip to the next. I used 22 gauge wire for the data and to connect the power from each strip to each power line coming from the power supply. Each power line is 16 gauge wire to ensure safe power delivery. It’s probably excessive, but since the distance is short, the resistance factor wasn’t a concern. Ground ran up the right side while positive ran up the other. The convenience of these LED strips is that they simply don’t care from which direction they get their power, which makes wiring them simple.
Before I completed the assembly and fitted the power supply and ESP32, I decided to test everything to make sure the LEDs worked. I loaded up a test sketch and plugged everything in. The sight of 910 LEDs shining bright and changing colors was amazing. With the test successful, it was time to move on to completing assembly. The pictures below don’t do the display any justice. It was difficult to capture the brilliance of the light and colors. Also, these pictures are of the LEDs without the tinted glass.
power supply, microcontroller, and spacers
I printed a simple mount for the power supply to slide into. The mount ensures the power supply stays in place without requiring screws and also has the vent, which allows heat dissipation through the back. The ESP32 is mounted on a simple 3D printed riser board. Additional spacer blocks were also printed and glued to the back of the LED panel to keep the back panel of the shadowbox from pushing too far into the open space.
The video below shows the sequences of steps for assembling the display.
With the display assembled, it was time to move on to the bulk of this project – the programming. The first task at hand is to create a font and program the necessary functions to display the correct characters in the correct places. Each of the features will be slowly added after that and I look forward to sharing the slow, but steady progress. Please look forward to additional videos as I add features.