Building an Infinity Mirror Dodecahedron

This was a fun project I made after building the infinity table and being happy with the results. In this project, I learned how to design a PCB and got a little bit more experience with electronics, Arduino programming, and Fusion 360.

By putting 12 reflective acrylic pentagons in a dodecahedron shape sticking 420 LEDs inside I made the "infinity" effect shown in the pictures. I 3D printed the supports between the acrylic pentagons and used hot glue to hold everything together. This took a few iterations to get right, fusion tells me my part is on "v54" but that's mostly because I was saving intermittently. 

Scroll to the bottom for more animations and videos

One of the main challenges to overcome was designing the wiring path for the LEDs. The LEDs use a daisy chain to transmit the data down a line so I had to make the data line act as one long string through all the LEDs. I did this by putting wires inside the 3D prints and having the lights branch out from the main path. CAD files are available here

Colors represent the data path

I 3D printed a soldering jig to help solder the corners. Originally I tried soldering wires together for each corner but this turned out to be pretty difficult and ended up burning out some of the LEDs. Later I designed custom PCBs that fit into each corner and worked a lot better. 

Soldering jig and solder station

Though I probably won't be designing PCBs for a career, I'm very happy I learned how to do it. In my opinion, having background knowledge on a lot of subjects is really helpful for engineering. I now have a good idea of what lead times to expect for custom boards, and if my electronics friends on the formula team talk about vias or traces I know exactly what they're talking about. 

Extremely wide traces have less resistance and help with power distribution

To design the PCBs I used KiCAD, an open-source tool that a friend recommended. After a few prototype sketches, I came up with a design that could accommodate all 4 different types of corners by rotating and flipping the PCB. The board distributes power correctly to the three LED strips meeting at each corner and also redirects the data line to the correct side. I ordered the PCBs from JLCPCB and paid $6 for 30 boards and $17 for shipping. Gerber files available here

Soldering PCBs into the corners

The acrylic turned out to be pretty brittle; I don't have access to a laser cutter so I was cutting it by hand. I ended sandwiching it between two pieces of plywood and cutting it with a fine-toothed jigsaw to prevent cracking. 

I used the soapy water technique to apply to the mirror film to the acrylic which worked out pretty well. 

Cutting acrylic pieces                                                Applying mirror film

Squeezing the last panel in

I programmed the LEDs in the Arduino IDE and used WLED code with custom animations on an ESP8266 similar to the infinity table project. The main advantage over an Arduino is being able to switch animations on my phone over wifi instead of uploading new code to the microcontroller.