These are high level instructions to build a clock showing the time of day in 5 minute increments. You can however set the time to the minute (but the display won't allow for showing that). It also features an automatic diming function that dims the light of the clock depending on the surrounding lighting conditions. Everything is based on a simple Arduino board but basically any small microcontroller should work. The schematics are provided as a draw.io and a jpg file.
- A small rotary encoder on the back that allows for easy seeting of the time. One click of the encoder equals to one minute of time. When setting the time, seconds are always set to 0
- A quartz clock including a button cell battery so the clock keeps time even if it loses power
- A photo diode that checks the ambient light and increases the light intensity of the LEDs in bright environments but dimms the LEDs down in darker condition (you don't want them to work full power in the middle of the night on your way to the fridge, do you?)
- A small easter egg by the creators in V3 which is activated if you push the rotary encoder.
I constructed my clock using four layers with an 11 by 11 LED grid (121 LEDs in total). You will need a bit of woodworking experience, a drill with a 24mm forstener bit, and a router. I added some photos below. The letters used for the front of the watch have been completely custom designed by me, including the font. It is a German version but I am sure you can adapt this to any language you want.
- Bottom Layer - the bottom layer (the one facing the wall) consists of a 9mm plywood that is used to hold the LED strips. I used a router to cut a groove of around 2mm to completly flush-sink the light strips. I chose 55cm by 55cm for my watch. The LEDs are glued on in an S-like pattern starting with the first LED (index=0) in the top left when looking at it from the front. So the 11th LED (Index = 10) is at the very top right. I added a table below that tries to show you how they are indexed.
- Middle Layer - it consists of a layer with 11x11 holes drilled into it, each 3.33cm center to cetner. The holes have a diameter of 2.4cm which perfectly fit my watch face. I used the router again to also cut multiple "chambers" into wall-facing side of this layer to create space for the Arduino and cables. It was a tight fit though. Not only does the layer house the electronics, it also allows the light from the LEDs to beam out ensuring even lighting of the letters.
- Diffusion Layer - To ensure the light is diffused correctly, I chose a 60cm by 60cm semi-translucent plate of acrylic glas. While I am not sure what exactly I ordered back in the day, I know it was from https://www.plexiglas.de/de/
- Top Layer - This has the letters cut into it and will pull everything together. I uploaded an STL and a SkechUpProject version of mine to the 3D Design folder.
I attached the bottom layer to the middle layer using screws, the middle layer to the diffusion layer using glue and the diffusion layer to the top layer also using glue. I also printed a little holder for the photoelectric sensor and a dial for the rotary encoder as well as a holder designed to be hooked onto a nail or a screw in your wall. They are all attached in the 3D_Design folder.
- Lichtsensor BH1750
- Rotary Encoder KY-040 Module
- Real Time Clock DS3231
- 5V WS2812B LED LightWS2812B Strip - the 5m strip should be plenty for this application, I chose the 30 LED/m version which allowed for a nice 60cm by 60cm clock but you can scale things however you want
- Any old Power Supply that delivers 5V. 15 Watts is more than enough.
- Arduino Nano or a much cheaper but fully compatible alternative from shops like AZ-Delivery
- Install the driver for the used Arduino Nano (most likely this here when you are using the budget friendly Arduino from AZ-delivery. When using an original Arduino Nano, I don't think you need additional drivers.
- Download and Install the Arduino IDE, there are multiple tutorials on YouTube to get you started. Chose the correct
COM
Port in the Arduino IDE and chose Arduino Nano - Chose the correct bootloader (Tools>Processor>ATMega328P (Old Bootloader)). At this point you should be able to flash the basic
Blink
example - Install the necessary libraries through the Arduino IDE library manager
- For controlling the LEDs: fastLED
- For controlling the Clock: Adafruit RTCLib
- For controlling the Light Sensor: BH1750.h
- For using the encoder: Encoder
- Flash the Arduino sketch for the watch. Versions 1 and 2 are not at all debugged in any way, shape, or form and will most likely not work. They are here for reference only. Version 3 has a little easter egg which will not be applicable to you at all. Remove if you want or create something for yourself.
I cut the LED strip into 11 pieces consisting of 11 LEDs each. Doing so allowed me to glue them onto the back plate flat. I then used some wire and a soldering iron to connect them back together as you can see in the photo below. The indices of the LEDs therefore are as follows when looking at the watch from the front:
A | B | C | D | E | F | G | H | I | J | K | |
---|---|---|---|---|---|---|---|---|---|---|---|
A | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
B | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 |
C | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
J | 109 | 108 | 107 | 106 | 105 | 104 | 103 | 102 | 101 | 100 | 99 |
K | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 |