The high-visibility desktop timepiece uses 8x8 LED matrices, is powered by a phone charger, and features a hand-rubbed Maple enclosure faced with smoked acrylic for a high-contrast display. It alternately displays the time and day of week and automatically corrects for daylight savings time.
I previously covered assembling the core electronics, all available on Tindie.com:
- 3 LED Matrix Link (FriedCircuits)
- 1 LED Matrix Master (FriedCircuits)
- 1 Real-Time Clock/Calendar Breakout Board (Jack Christensen)
- 1 eeZee Power 3.3V/5V Power Adapter (Bot Thoughts)
Microcontroller
I thought about using one of my many microcontrollers but I wanted a quicker, simpler solution so I ordered an LED Matrix Master from FriedCircuits on tindie.com, made up a cable to connect it to the LED matrix, loaded up the software I was using on the Uno, and called it done.
Power Supply
The Matrix and Real-Time Clock/Calendar were put together but I needed a power supply for permanent use. After contemplating several options, for sake of expediency I decided to use one of my eeZee Power USB modules, run a USB connector into the box, and plug the other end into a common 5V phone charger.Building the Enclosure
The enclosure is constructed of 1/4" maple boards sourced at the local home improvement store. I picked this particular board for it's curly figure which I found appealing.My plan, after considering mitre cuts and other options, was to use my router to notch the top and bottom edges of each side, so that I could lay a plank of the Maple into the notches at the top and bottom, glue it, and call it done.
Finishing the Enclosure
I'm far more experienced with coding and electronics than wood, particularly with finishing wood. Not surprisingly, my first attempts to build and finish a box ended poorly.Polyurethane is notorious for its tendency to retain bubbles and collect dust and that's just what happened on a half-dozen separate attempts to add coats to the original box. I first tried using a pad which is supposed to help. Better but not great. Then I tried using a spray can of Urethane. Better still, but still not great and tended to develop sags. I worked on isolating the piece from dust. That helped. A little.
Finally I gave up, bought some tung oil, tested it, and declared Urethane the devil and vowed never to use it for anything serious again. I rebuilt the box from scratch.
I applied the tung oil with an old t-shirt rag, rubbing it in and letting it dry overnight after each coating. Between coatings I sanding progressively finer starting with 320-grit then 400-grit, and buffing with #00 steel wool in the end. The finish isn't quite as glossy or hard as I'd hoped but it leaves a nice natural look to the wood. I'm quite pleased.
Attaching Acrylic Face
The acrylic face is mounted directly to the edge of the enclosure with cyanoacrylate (CA) glue. I experimented briefly with acrylic, wood, and CA and found the bond to be suitably strong, though not impossible to break free with significant force.I purchased a large sheet of smoked gray acrylic from eBay, so I'd have plenty of opportunities to screw up.
After carefully measuring the piece needed, leaving excess that could be sanded away for a precision fit, I used a plastic scoring tool to notch the acrylic, then bent it over a flat edge until it snapped cleanly.
I sanded down the edges of the acrylic a little at a time until it nearly matched the size of the enclosure, then finished the edges with 320-grit and 400-grit sandpapers.
Then, I scuffed the mating surface of the acrylic with 400-grit sandpaper, applied a small amount of CA on the wood to avoid squeeze out, sprayed kicker (catalyst for CA) onto the CA, and placed the acrylic.
Almost perfectly.
The face is offset horizontally by about 1/32" which will haunt me for the rest of my days. Sigh. At least the top and bottom are perfectly flush. I'll use a jig next time I do something like this.
Building and Mounting the Frame
My first attempt to build the box involved adding a permanent back. Fortunately I screwed up the finish multiple times and abandoned that box for one with no front or back. This enabled me to permanently install the acrylic face and then, from the rear, slide in a frame holding the clock's guts.I started by mounting the LED matrices to a piece of Poplar cut to fit inside the enclosure. I used the Eagle files to print out drill locations for the mounting holes. Actually attaching the bolts and nuts was rather tedious but I finally got it. I fixed the metal nuts with CA once they were tight.
Why not use four screws per matrix? I'm low on screws and didn't want to delay the project any longer. It's solid enough. Don't worry about it.
After thinking about and mocking up several options, I built a frame using craft dowels at the top and 3/4" square poplar dowels at the bottom. When I build things like this I think about it then I try stuff and make it up as I go. The point is that it works brilliantly even if I arrived at this solution rather erratically.
I made a second piece of poplar the same size as the first, then clamped them together and drilled two holes in the upper corners large enough to fit 3/8" craft dowels. I slid the two poplar pieces onto the dowels, inserted the frame into the enclosure, pushed the rear face in until it was just below flush, and then used CA glue to fix everything in place.
Then I discovered the dowel was sticking out in front. Crap. I should've glued that first. I used a hacksaw to trim the protruding dowels down. Next I cut two 3/4" square dowels down and sanded until they were the same size as the gap at the top of the frame. I glued these in place with wood glue using clamps.
Could I have screwed these in place from both sides? That'd work too and it would've been possible to reach the LED Matrix screws... which I can't currently do without a hacksaw. Drat. Oh well.
Finally I added the remaining electronics to the frame. The LED Matrix Master is attached to one of the frame posts with some screws I found. The real time clock and power supply are hanging loose for now. There's a notch at the rear bottom of the frame to allow the USB cable to fit through.
Finally I marked two spots on the bottom of the enclosure, drilled and countersunk holes for screws to fasten the frame to the enclosure. I slide the frame in, marked the spots for the screws, drilled pilot holes, then fastened everything together. It's tight. It's solid. It looks pretty darned good.
Daylight Savings Time
I'm from Arizona where we don't do this silly daylight savings time thing and I'm still getting used to it 20 years later up here in Colorado.I kind of forgot about DST and the clock/calendar module doesn't account for it. I decided to code up automatic daylight savings time detection. I didn't spend much time on it so I'm sure there's a more elegant solution but it was a fun puzzle. I mocked it up in Python (partially to hone my Python craft):
I implemented the above in Arduino, and it works right now. Based on the Python test harness it should turn over again on the 2nd Sunday in November at 2:00am and back again on the first Sunday in March at 2:00am ad-infinitum.
Why didn't I just detect the date and permanently set the clock ahead or behind? What if the clock is unpowered during the changeover? No thanks. I wanted a more robust solution.
Setting the Time
There are no buttons exposed at this time. So, there's no way to set the clock unless you have a FTDI USB serial adapter so you can tell the Arduino "Set YYYY-MM-DD HH:MM:SS" to set the time. This code comes from Jack Christensen's RTC library examples, specifically rtcSetSerial.I know the lack of buttons is going to come back to bite me. I'll probably add a protoboard with enough buttons so I can adjust time and date without having to bring over a laptop. Maybe I can whip something up in the next couple days before I give it to Mom.
One of my readers suggested syncing the time using GPS. Good thought. I'm not sure if the signal can be picked up inside an apartment building but it's certainly worth a try.
My Timezone library does automatic DST adjustments, https://github.com/JChristensen/Timezone
ReplyDelete