It's an analog style wooden LED clock. I don't know why I haven't seen one of these before..even though the digital types are very common. Anyhoo, here we go!
The plywood clock project started as a simple starter project for the CNC router. I was looking at simple projects online and found this lamp(image above). I had also seen digital clocks that shine through wood veneer(image above). So, combining the two projects was an obvious idea. Looking to challenge myself, I decided not to use veneer but only a piece of wood for this project.
Step 2: Design
I designed the clock in Inkscape (image above). The design is very simple by choice. I decided against routing traces for the wires because at this point I was unsure if I wanted to go with radial or perimeter wiring. (I decided to go with perimeter wiring finally.) One neopixel goes in each one of the small circular holes for showing the minute and hour time, with five-minute precision. The circle in the middle will be routed out to accommodate the electronics.
Step 3: CNCing
I designed the toolpaths on MasterCAM, and used a technoRouter to mill out the clock from 3/4 inch plywood. I use a 15"x15" piece for this, with minimal wastage. The trick is to route out as much of the wood as possible without breaking through the wood. Leaving 0.05"-0.1" is a good choice for light wood. If you are unsure, it's better to leave more wood in, because you can always sand the other face. I ended up removing a little too much wood from some parts, but thankfully the results don't suffer too much because of this.
Note for users without access to a CNC:
This project can easily be done with a drill press. You just need to set the stop at a point where you leave around 0.1" of wood remaining at the base. You'll have to be precise, but not too precise. After all, ideally no one will see all the LEDs light up at the same time, so you can get away with a little slop.
Step 4: Electronics
The electronics are fairly simple. There are 24 neopixels, twelve for showing the hours and twelve for showing the minutes, with five-minute precision. An Arduino pro mini controls the neopixels and it gets accurate time through a DS3231 real time clock(RTC) module. The RTC module has a coin cell as backup, so it doesn't lose time even when the power is off.
Step 5: Electronics Assembly
I connected the neopixels in a string, using 2.5" wires for the first twelve leds and four-inch wire for the next twelve. I could have used slightly smaller wire lengths. After making the string, I tested it out, making sure the solder joints were good. I added a momentary switch to turn on all the leds, just to show off.
Step 6: Dry Run
After experimenting, putting LEDs in the holes and turning them all on, I was satisfied with the results. So I sanded the front face a bit and applied a PU coat. I ended up sanding the coat off later on, but it's a good idea to leave it on if you don't find it aesthetically displeasing.
Step 7: Epoxy
After some testing with the led position within the holes, I figured that the best discussion is achieved when the LEDs are around 0.2" away from the end of the hole. When you try this yourself, the brightness of the LEDs will be very different in each hole. Don't worry about this; we'll fix it in code. This is because of the type of drill bit I used. If I were to do this again, I'd use a ball end drill bit for the holes. But, in any case, to get the distance I mixed some epoxy and put a little bit in each hole.
Step 8: Putting It All Together
The LEDs will be placed starting from the 12 o'clock hour hand position moving anti-clockwise through all the hour hand positions and then to the minute hand, again moving from the 60 minute mark moving anti-clockwise. This is so that when we view from the front the LED pattern appears going clockwise.
After the epoxy cured for an hour, I put in some more epoxy. This time, I placed the LEDs in the holes, making sure to cover the wires and solder joints with the epoxy. This makes for good light diffusion and secures the wires.
Step 9: Code
The code is on GitHub, feel free to modify it for your use. When you switch on all the LEDs to the same level, the brightness of light shining through will be very different in each hole. This is because of the different thickness of wood in the holes and the difference in the shade of the wood, As you can see the wood color varies quite a bit in my piece. To remedy this difference in brightness, I made a matrix of led brightness levels. And decreased the brightness of the brighter LEDs. It's a trial and error process and can take several minutes, but the results are well worth it.
Step 10: Computer Vision - Calibration
I made a conscious choice to not use veneer in this project. If I had, the wood thickness would have been the same in front of all LEDs. But, because I have a different thickness of wood in front of each LED and because wood color varies a lot as well, the LED brightness is different for each LED. To make all the LEDs seem to be of the same brightness, I devised a nifty trick.
I wrote some processing code(on GitHub) which takes a photo of the clock, and analyses the brightness of each LED in turn. It then varies the power to each LED to try to get them all to have the same brightness as the dimmest LED. Now, I know this is overkill, but image processing is a lot of fun! And, I'm hoping to develop the calibration code as a library.
You can see the LED brightness before and after calibration in the photos above.
Step 11: Parting Remarks
Pitfalls to avoid:
* With wood, you get what you pay for. So, get good quality wood. Birch plywood is a good choice; any light solid wood will do nicely as well. I cheaped out on the wood and regret my decision.
* It's better to drill less than more. A couple of the holes went too deep for my piece. And the epoxy shows through on the front face. It's very noticeable once you notice it.
* Use a ball end drill bit instead of a straight end. I've not experimented with the ball end bit, but I'm pretty sure the results will be much better.
I'm flirting with the idea of selling these on Etsy or tindie. I'd really appreciate it if you could comment below if you think it makes sense :)