Skip to main content
shopping_basket Basket 0

Lights Fantastic Challenge - Infinity Mirror



Here I will explain in detail my Infinity mirror project. I will show the build process, design, the electronics, some code, show colourful lights and a sneak peek to my next lighting project. 


The RGB Infinity Mirror


The main part of this project is, of course, the RGB LEDs. The used LEDs are called Neopixels or WS2812b RGB LEDs. The LEDs are individually addressable and can show 16M colours. 

The main advantage of Neopixels is that the APIs can be used by almost every type of microcontroller. In this project, I use it together with an Arduino (the Intel Arduino/Genuino 101 board), but it can be used by Raspberry Pi, NodeMCU etc.

I used a strip that contains 60 LEDs per meter. 

Arduino code

The main steps to use the Neopixels are as followed:

1. Declare the LEDs
int PIN = 6; // This is the digital pin where the strip is connected to. 
int LEDCOUNT = 125; // this is the number of neopixels on the strip. 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LEDCOUNT , PIN, NEO_GRB + NEO_KHZ800);

2. 'Start' the strip

3. Select a specific LED or a range of LEDs.
for(uint16_t i=0; i<strip.numPixels(); i++) {
  strip.setPixelColor(i, white); // set every pixel (number i) to the color white

4. Send the LED update to the strip.; 

In the links below I have included two tutorial pages for both the Arduino and Raspberry Pi. Here you can also download the Neopixel drivers. 

The Infinity Clock

I connected a DS1307 RTC (Real Time Clock) to the Arduino and read it out through I2C. Since the inside of the mirror consists of 60 LEDs, it is easily converted to seconds/minutes/hours. The one white led represents seconds, the two red LEDs are minutes and the three green LEDs are the hours. 

(It seems that the video is mirrored, but you get the concept... ) 

Material, Components & Electronics

This project consists of multiple layers. 

The bottom is a round mirror, above it, there are two strips of LEDs (one strip of 60 LEDs facing inwards, and another strip of 65 LEDs on the outside) In between those strips there is a wooden frame of MDF. Then there is a film of one-way see-through mirror foil, mounted on a transparent acrylic plate. And on that plate is an acrylic black ring (to cover the LEDs and wooden frame). 

Laser Cutting

The drawing to cut was quite easy; just a circle with an inner circle. I can provide my files if you want, but every printer has its own requirements. 

The following was cut by this machine:

- The black ring
- The transparent acrylic
- The MDF/wooden frame

Costs of the project

 2x Acrylic plate 
 MDF plate 
 LEDs (for 300 LEDs / 5 meter)
 Arduino 101 (any Arduino can be used) 
 Laser cutting: renting a machine for a hour 
 Miscellaneous/other costs 
 12 euro
 1 euro
 8 euro
 22 euro 
 20 euro 
 30 euro
 5 euro

Total costs: 98 euro

LED Grid project

A sneak peek to my next project

My initial plan was to create a 24 x 32 LED grid that will be the main lamp inside my house. All the ideas, parts and design were thought through, but due to some delays, I have postponed this project for now. Here is the detail of the project so far:

Power Supply

There are 768 LEDs (24x32), each colour uses 20mA on full brightness, for each LED the maximum usage is 60 mA (full brightness red + green + blue). 60 mA * 768 is 46A, this is huge so I will make a setup where the LED's only can output 50% of its power. Then the max amount is 23A. But even that will rarely be used, half of it is a more valid scenario. 

I ordered a Chinese power supply on eBay, a power supply (5V, 50A, 250W), but when it (finally) arrived it was damaged and I won’t trust it to power the 768 (24x32) LEDs. I have now decided to order the Power Supply from Mean Well, the UHP-200R-5 (RS 174-8129, link below), it's an AC/DC power supply with an output of 5V 40A (200W). I spoke to Mean Well during Electronica 2018 in Munich and asked if it was an issue to generate a constant load of ~30A when this power supply has an output of 40A, that was no problem. I only had to mount the power supply to an aluminium plate, so the heat of the supply can distribute through the plate. The main advantage of this supply is the size; it’s only 2.6cm high. 

LEDs + Driver
It will also be based on the WS2812b (aka Neopixel) LEDs, but now with a strip with 30 LEDs per meter. With the 768 LEDs needed means that there is 25,6 meter needed!

Each LED is 5mm wide, and there is a 28,3mm distance between each led. 
To defuse the light so a whole area is gradually lighted a distance between the LED and front panel a waffle grid will be used to make each led clearly visible. 

LED Driver
Facecandy is a hardware driver that connects through USB and can power 8x64 LEDs (512). This board is made to drive the Neopixels in a very precise way. The brightness is very accurate and it can show videos, GIFs and animations. (This would be very hard to program to the LEDs directly). Below is a link to the GitHub page with samples that can be used with the Fadecandy driver board. It is compatible with Linux and Windows and requires a USB port.

Housing + 3D images
The outer housing will be made of wood. The LED grid needs a waffle grid. This grid will make sure the light of the LED will only shine to its cube, so no light from other lights blends with each other.

This will require a lot of cutting and a light, also solid foam is needed. I use Depron, this foam-like material is normally used for floor isolation, but also for model aeroplanes or by architects to make scale models. It is easy to cut by a knife and keeps its posture and can resist heat.

Image: a 3D drawing of the metal frame. Each LED has its own cutout and the larger cutout is used to place all the electronics and wires. I will cover this large hole with a plate of cherry-wood. Hopefully, that will look nice. 

I called some nearby metal shops to ask if they can create (by laser cut or punching) the image above out of an aluminium plate. They can, but since this is quite a large project (85x114cm) with a lot of hole cutting, the costs of only to carve/edit the metal will be 450 euro (excluding the metal material). Since this is quite expensive I want to make sure every mm is correct in the 3D image before it is sent for manufacturing. 

Costs of the LED Grid:

- 768 LEDs (900 recommended) ~ 80 euro
- Power supply ~75 euro
- Wood ~10 euro
- Depron (grid material) ~ 8 euro
- Aluminium plate ~80 euro (+ 450 euro editing costs)
- 2x fadecandy driver board ~50 euro
- Raspberry Pi ~35 euro
- Miscellaneous/other costs ~10 euro
total costs are around 350 euro (+ 450 metal editing costs)


Below is a list with all the external links that are used in this article.

[1] RS online - Mean Well power supply: (174-8129)

[2] Youtube laser cutting video:
[3] Youtube clock demo video:
[4] Arduino 101 product webpage:
[5] RS online - Neopixels
[6] Adafruit Neopixel tutorial for Arduino
[7] Adafruit Neopixel tutorial for Raspberry Pi (Python)
[8] Fadecandy github source code and samples

Kind regards,

Marcel Kruse

Test Engineer. Love to play with embedded hardware and software.

Related Content

DesignSpark Electrical Logolinkedin