Introduction: MirrorClock

About: ... using laser cutter, PCBs, 3D-Printer and whatever i get into my hands to build things

Just a side project for fun (actually trying out other combinations with the spy mirror, in this case a combination of diffuse acrylic as kind of light guidance). Nothing new by itself, just a remix/thrown together of well-known technologies

2 circles of spy mirror acrlic hold sheets of normal acrylic in between, where the middle layer holds spaces for diffuse acrylic rods as clock pointer. A strip of WS2812b Leds is then wrapped around, everything covered with 3D-printed parts. In the socket a 3*AA battery holder is used for power supply, control is done with an Arduino Nano (clone) and a PCF8523 real time clock module.

Minutes and Hours should be at the moment distiguished by brightness (not really the best way), while both change color over time. Easier and better to distinguish would be of course two different (constant) colors for hours and minutes, but where is the art in useful displays ^^. (Could be easily changed in the code by just commenting out the colorIndex++ in the main loop...).

But honestly, it looks almost better in a non-clock, but just animations way.

Step 1: Laser Cutting...

First we lasercut some parts: 2 circles out of 3mm spy mirror acrylic, 2 circles with the same size out of 2mm acrylic, and another one with cut outs for the rods out of 3mm acrylic. The rods are then cut out of 3mm diffuse acrylic.

A sandwich is made out of all circles: Starting with the 3mm rod holder in the middle, the 2 2mm parts are placed on top of bottom of it, followed by spy mirror on each side. The rods are inserted afterwards.

The hole package is then glued together with transparent tape around the side.

Step 2: LEDs

A strip of 60 WS2812b LEDs (144LEDs/m) is then wrapped around it and fixated again with tape. Connect it with a Nano for testing and aligning rods and LEDs. Since both inner acrylic circle and LED strip are not glued together it can be adapted afterwards.

If everything works we can start 3D-printing.

Step 3: 3D-parts

The hull consists of a socket and two rings. If everything works correct, it can be hold just by press-fit: First the two rings are clipsed on the acrylic sandwich from both sides (holes for the wires are included). Afterwards the ring can be stuck into the socket and we can test again and start wiring and programming.

Step 4: Wires and Electronics

Wiring is rather easy: We solder both on the real time clock on the left side on the picture wires for I2C and power, connect then the I2C wires directly to the Nano on the other side. Same goes for the date line of the LED-strip (pin 5). Afterwards just each power line from battery pack, strip, Nano and real time clock is bundled together and isolated. Done.

The Program is uploaded beforehand to the nano, it uses the fast-led library as well as adafruits real time clock library. After initialising the led strip with 60 leds on pin 5, the program checks in the main loop the time and lights up one led for hours and minutes (or one for both, when at the same spot). The color cycles with the rainbow palette of the library, for easier reading of the time (the different brightness level didn't work that well) the colorIndex++; should be commented out.

Also the LED-strip starts at the bottom of the clock, 12 is therefore at the bottom. Which is kind of fun (because additional confusing), but for correct time you might want to change

leds[(now.hour()*5)%12] = ColorFromPalette(RainbowColors_p, colorIndex, 255, LINEARBLEND);


leds[now.minute()] = ColorFromPalette(RainbowColors_p, (colorIndex+128)%255, 128, LINEARBLEND);


leds[(now.hour()*5+6)%12] = ColorFromPalette(RainbowColors_p, colorIndex, 255, LINEARBLEND);

leds[(now.minute()+30)%60] = ColorFromPalette(RainbowColors_p, (colorIndex+128)%255, 128, LINEARBLEND);

One thing remains of course unsolvable: Since you can look on the clock from both sides one side will still run backwards ^^.