Introduction: Rhombic Dodecahedron Infinity Lamp

About: Engineer from the Netherlands. Projects in 3D printing, electronics, prop making, sewing and whatever interests me. (If you have a pressing question go to my site and ask it there. I am way more likely to an…

I wanted to add some space to my house. An infinity solid seemed like the simplest way to do this.

I have been keeping an eye on infinity mirror type objects for years now. Infinity mirrors are great to see, but I never felt the urge to build one. That was until I saw the video below, where Adam Savage and Matt Parker build an infinity rhombic dodecahedron. I love the shape, and how it nests unlike the conventional dodecahedron. I wanted to build one.

A rhombic dodecahedron is a Catalan solid, meaning it is built from a quantity of the same faces. Rhombuses are the parallelograms that make up this solid with a length to width ratio of √2:1. Dodecahedron means 12 (faces). It has 24 edges, 8 places where 3 joints meet, and 6 places where 4 joints meet.

The one property that sets this solid apart from many others is the fact that it fills a space perfectly with no gaps (nests perfectly), like hexagons do in 2D. In practice this means that the shape of the rhombic dodecahedron is visible in all the reflections. This is unlike the normal dodecahedron, where you get a fairly chaotic pattern.

Step 1: Materials and Tools

The files for this project can be downloaded from my site or with the corresponding steps.

The download includes all files for every step and the STEP files should you want to change things.

I built the dodecahedron with tools and materials I have access to and am familiar with. Wherever possible I will mention alternatives in [square brackets].

For materials I use:

  • 3D printer filament (black PLA was used)
  • 2x 355x295mm 3mm thick PMMA one way mirror (Dutch supplier [3mm transparent PMMA with one way mirror foil should also work]
  • WS2812 60 leds per meter led strip
  • [any 5050 led on a 60 leds per strip should work]
  • CA glue with activator
  • Hot glue
  • 5V power supply of 4A or more
  • A fuse of around 4A.
  • Teensy 3.2 or any other microcontroller with more than 8k of RAM.
  • Thin electrical wire
  • Painters tape

Optionally I needed:

  • Medium and fine sandpaper (180 grit dry and 600 wet were used)
  • Matte black spray paint

Tools :

  • 3D printer
  • CO2 laser cutter
  • [jigsaw or table saw can cut acrylic as well]
  • Hot glue gun
  • Soldering iron
  • Wire cutter
  • Wire stripper
  • spring clamps

Step 2: 3D Printed Parts

The STL files are included in the downloads.

I am quite familiar with 3D printers, so naturally I do gravitate towards using it. For this lamp you will need:

  • 24x Edge pieces (RDIL-P02-00)
  • 8x 3 joint links (RDIL-P03-00)
  • 6x 4 joint links (RDIL-P04-00)
  • 24x Edge cover (RDIL-P05-00)
  • 7x 3 joint cover (RDIL-P07-00)
  • 6x 4 joint cover (RDIL-P06-00)
  • 1x Base (RDIL-P08-00)
  • 2x 3 way mold (RDIL-P91-00)
  • 2x 4 way mold (RDIL-P90-00)

All parts can be printed on a basic printer. I used a 0.4mm nozzle at 0.2mm layers. The parts may need to be oriented before printing (solidworks maintains wonky axes). My parts were printed in black PLA.The material you print in should be easy to glue, looking nice and not let through too much light by itself.

All parts print with the visible side facing the printbed. If your printbed is free of damage this means that a clean printbed will create good looking parts. If you have a worn out bed like I do, you will need to clean the parts up.

Step 3: (optional: Preparing the 3D Prints)

Since my printbed has a lot of pits and scratches, I needed to clean up the parts. The faces stuck to the printbed had pits of up to 0.5mm deep, and plenty of scratches. This ended up taking quite some time, but did product very clean looking parts.

The first step is to sand the visible face. With 180 grit sandpaper on a table, I sanded all parts facing down. Sanding is done when the entire surface seems sanded. If it still shines, it needs more sanding.

After the medium sanding, the part can be sanded with 600 grit wet sandpaper under water. I used a diner plate to contain the water, and sanded with the sandpaper in the plate facing up, and the part facing down.

When the part is dried, the coarse scratches from the first sanding step should not be visible. Keep sanding until only a fine haze of scratches from the 600 grit is visible.

You can continue with even finer sandpaper, but you will quickly enter the domain of diminishing return.

For the last step all parts were painted with matte black spray paint. A single thin coating is enough to color the sanded surface.

Step 4: The Mirror

In the images there is a drawing of the shape of each rhomboid if you want to cut them by hand. There is also a dxf file for a single unit and a full sheet that can be cut on a 300x400mm laser cutter.

The one way mirror is the part that gives this lamp the appearance it has. The design was scaled so it could fit my hackerspace's 400x300mm 40W CO2 laser cutter. Each sheet of 355x295mm can fit exactly 6 rhomboids with 10mm excess on the edges. You will need 2 sheets worth of rhomboids, 12 in total, for this lamp. The DXF file used to cut the mirrors is provided.

Here there are 2 things I used that might not be available to you.

A laser cutter:

I have a 40W CO2 laser cutter available to me at my local hackerspace, the Tkkrlab in Enschede. This can cut up to 6mm acrylic, so the thin 3mm it can handle with ease. Not everyone has a CO2 laser cutter to cut acrylic. Luckily acrylic can be cut with a jigsaw or table saw. I have provided a template to print and cut.

The one way mirror acrylic:

Many infinity mirrors use glass or acrylic with a one way mirror foil. This works great, but it adds a step. I opted to use ready made acrylic with the foil ( The laser cutter does not really care that it has a mirror foil already installed. I used this because I suck at applying foils, and fancied my chances better with the ready made stuff. Since I have no experience with the foil myself, I advice you to look at other Instructables making infinity items to see where they got and how they applied the foil.

Step 5: Assembling the Framework

All the 3D printed pieces that make up this lamp can now be turned into the rhombic dodecahedron.

To aid in getting the angles right, I have provided templates. The corners can be places in the template, and the struts can then be clamped to the template, holding all pieces in the right orientation. When the glue has set the template can simply be removed.

For glue I advice CA glue with activator. Waiting to hours for each joint to set will work, but it will also take quite a while. By gluing the corner pieces and spraying activator on the strut, you can place the strut in the corner and the glue will set in minutes. On my lamp I used a combination of CA with poor activator and hard plastic glue, which is essentially acetone with plastic dissolved in it. Neither worked very well for me.

The layout of the rhombic dodecahedron is very simple. Each strut on a 3 piece corner goes to a 4 piece corner, and every strut on a 4 piece corner goes to a 3 piece corner. I glued all struts on a corner piece all at once, and when it set move on to the next corner.

Be careful with the framework. Before the mirrors are added the structure is fragile. I used painters tape to hold the structure in place while I was assembling it.

(It can be helpful to add the mirrors on each face where all corners have all struts. It will make the assembly simpler because the mirrors add a lot of strength. This however does add the challenge that you need to be incredibly carefel not to spill any glue on the mirrors.)

Step 6: Placing the Mirrors

The mirrors can be inserted into the framework.

Each mirror goes with the one-way mirror film to the inside. This way you do not get double reflections, and the fragile mirror film cannot be touched. Touching a screwdriver or finger on the mirror will reveal which side film is on. If there is a gap between the object touching, the mirror film is on the other side.

Be careful when removing the protective foil from the one-way mirror side. Pull the foil sideways, not away from the mirror. The one-way mirror film can actually detach from the acrylic. I had a big chuck of the mirror film separate. It did go back without much hassle, but if it tears, that mirror is broken.

Remove the protective film from the one-way mirror side. Add a thin rim of CA around all struts of the face and gently place the mirror in the framework. You do not want any excess glue to squeeze into the visible side of the lamp. Painters tape can be used to temporarily hold the mirror in place while it sets. I do not advice using activator here since it can create a white haze around the joint.

Repeat this step for all 12 mirrors.

(DO NOT use acetone containing glue for acrylic. The acrylic will show small cracks everywhere the glue touches.)

Step 7: Wiring the LED's

With the lampless dodecahedron ready, the lamps can be installed.

For this 3m of WS2812b 60 leds per meter led strip is used. I used led's on a black circuit, but the led strips should not be visible anywhere, so it does not matter. The 60 leds per meter strips are used because they are by far the most common strip available. This strip should be 10mm wide.The WS2812 (also known as Neopixels) are individually addressable leds. Any microcontroller can set the color of each led individually. More compact leds exist, and higher density led strips exist, but either they would make this project too expensive, or require custom PCB's or complex wiring to make work.

The led strips are cut into 7 led segments. There is a line where you can cut each strip. In total 24 strips are required. With 7*24=168 leds you will have 12 leds left over.

The adhesive backing on the back of the strip is going to be in the way for this project and needs to be removed. If you peel the paper tape of the adhesive, you will be left with a thin clear layer of glue. This can be (carefully) lifted with a hobby knife or screwdriver. Once you have a small piece of the adhesive, you can completely pull it off.

For all the connections use thin flexible wire. I used the wire from a flat cable. All wires should stay a few millimeters away from the stems in each corner. Here the cover connects and wires can get in the way. The first strip with the input can have the connector provided with the led strip or some heavier gauge wire. This part will connect to the microcontroller.

Keeping track of the input and output of the strip, place the strips facing down on each edge of the dodecahedron. The pattern I used is a cluster of 6 strips (Blue), starting at a 3 point intersection, going completely around, and then moving 2 more edges to end in another 3 point intersection. A jumper wire can then be used to bridge 2 edges (Green) to the next 3 point intersection. After the first cluster you might want to puzzle a little to determine the best placement. This way I found to use the least amount of jumper wires. Any other pattern will work, though you might need more jumpers. Solder the signal pin from the output of one strip to the input of the next strip based on this pattern.

Each strip has the 5V and GND connected to the next one. This is not an exact science, and I simply soldered the ground and 5V of each strip to the nearest already powered strip I could find. Try to avoid ground and power loops, where there are several paths ground can take. Only connect 5V and ground when you are sure that one of the sides is not connected. Also be sure which side is 5V and which side is ground. Depending on the orientation of the strip, these can be flipped.

Test often with something current limited to make sure everything works. Here a current controlled variable power supply works great. I had a connection break twice during assembly, and testing often makes sure you catch these mistakes early.

Step 8: Adding the Covers

After all leds are installed and tested, the covers can be installed. The input should be on a 3 point intersection. You can add a jumper wire and input it somewhere else, but this design expects input on a 3 point intersection.

The covers have an orientation. The small 45 degree side match with a 3 point intersection. The sharper 60 degree side matches with the 4 point intersection. Flipping these will result in the edges not properly aligning with each other.

Do a dry test of each cover before gluing it in place. Some wires might pinch in the cover. If that happens, use a file or Dremel to remove some material. If the piece fits, use a few dabs of hot glue along each edge of the strip. Then before the glue cools, apply the cover on that edge and press it in place.

Once all edge covers of a joint are in place, you can glue the cover for the joint in place. Apply a small dab of glue and push the cover in place. The triangular cover should be placed as shown in the photo's.

Test often to make sure you are not breaking a wire. Repairing it while some covers are still of is possible, but once all covers are on, finding and repairing the led strips will be very difficult.

Step 9: Wiring the Base

The microcontroller and power can be installed according to the schematic. This circuit uses an Teensy 3.2, a 1000uF capacitor of 5V or more, a 4A fuse (I used a polyfuse) and a panel mount DC barrel jack with an outside diameter smaller than 8,5mm.

Before installing, there is a small jumper on the back of the Teensy that connects V-USB to VIN. For this lamp, leaving this jumper closed is a problem, since the lamp can draw more power than USB can provide. It is best to cut this jumper with a hobby knife.

A DC barrel jack can be installed into the base. The hole is 8.5mm big, and should fit most panel mount barrel jacks. A fuse is added to the barrel jack to protect the power supply from shorts.

Then the 5V can be wired to the led strip 5V, the Teensy Vin, and the positive side of the capacitor.

The ground can be attached to the led strip ground, the Teensy gnd, and the negative side of the capacitor.

The input of the led strip is wired to D6 of the Teensy 3.2.

Optionally you can add some sort of connector between the wires of the led strip and the base. I simply used a header for this, though this has no protection against plugging it in wrong. A connector gives you the ability to remove the lamp from the base, or make some other controller and connect it easily.

It is important to remember that the lamp can be powered from 5V ONLY. Any other voltage will either not make the lamp light up, or break everything. There is no safeties on the voltage.

(The images show an Arduino Nano. I initially tried with this, but the code was a headache to write with limited RAM. I switched to a Teensy 3.2, but any microcontroller with more RAM should work)

Step 10: The Animations

In the download files you can find the sketch to run the dodecahedron.

Now the Teensy can be programmed. Be sure to attach the power first before connecting the Teensy through USB. While a USB can provide enough power for some basic animations, it simply cannot provide the power for the entire lamp at full power. When the Arduino is connected to the computer, you can upload the sketch to the Teensy.

I made some animation for the dodecahedron, though I was running a bit short on time. The sketch for the Teensy is included in the files. In the provided program the dodecahedron will run through all animations over time.

All animation are either per pixel or in 7 led segments. Any pattern involving the entire strip as a whole does not really work when the pattern gets reflected infinitely.

I will at some point update the sketch to include more patterns, but for now this will do. I do advice anyone working on this project to try making animations themselves. For this I advice using the examples provided by Adafruit with their Neopixel library. The sketch I made is doing more of a simulation on some animations, and has some more complicated overhead.

If you kept the 4A fuse and power supply, do not go to brightnesses of 100 (40%) or above if you plan on having all leds on. If all leds turn on at the highest brightness at the same time, the fuse will blow. Each led will use a max of 0.06A (60mA) at max power. 168x0.06=10.08A. At 100 (40%) the maximum power for each led is 0.024A (24mA), thus limiting the max current to 168*0.024=4.032A.

Step 11: Future Improvements

While I did enjoy making it (except for the gluing of the frame) and I do like the result, there are plenty of things I will do different next time.

  • The 3D printed parts facing the printbed too hours to clean. I spent around 6 hours just sanding over a week to clean the parts. It looks great, but I rather have a design that looks great without hours of sanding, so with the visible side facing up on the printbed. Alternatively I could try and use a printer with a better bed.
  • The frame was practically impossible to assemble. The glue took forever to set and the frame fell apart several times before the glue set. I either need more patience, faster setting glue (CA with activator should work) and/or change the design so that the dodecahedron frame can keep it's shape while the glue is setting.
  • Do not use acetone containing plastic glue on acrylic. The glue I used sets fairly quickly, but it stays rubbery for a long while and eats into the acrylic. The covers covered most of it, but if you know where to look, there is small cracks.
  • The acrylic is difficult to glue in place without the glue squeezing into the visible areas. I do not want to make the joint thicker, but I do want the glue to stay in place. I need to think if I can design a place where the excess can leak to, or a different way of gluing the faces in place.
  • There is absolutely no room for cables. I had to sand all the parts to make the cables and solder joints fit. Half way I switched to thinner wires so that the corner covers would fit. This is fixed in the 3D files shared here.
  • Higher density leds to create lines, not dots. This point is more an active design choice and not wrong, but I might at some point try to make a different lamp with a more dense grid of leds. Either 144 leds per meter WS2812, neon WS2812 strip or 2020 APA102 leds on a narrower custom PCB would create light more like lines and not dots. A diffuser could also help here.

The good news is that I do plan on making a second one. I wanted one for myself, and a friend of mine wanted one as well. I did not perform any of the steps in this Instructable to make the second one, so I have the ability to make some of the improvements before making the second lamp.

Made with Math Contest

First Prize in the
Made with Math Contest