I wanted a clock that never needed setting. Things escalated.
Skip to content
AI
Biz & IT
Cars
Culture
Gaming
Health
Policy
Science
Security
Space
Tech
Forum
Subscribe
Story text
Size
Small<br>Standard<br>Large
Width
Standard<br>Wide
Links
Standard<br>Orange
* Subscribers only
Learn more
Pin to story
Theme
Search
Sign In
Sign in dialog...
Text<br>settings
Story text
Size
Small<br>Standard<br>Large
Width
Standard<br>Wide
Links
Standard<br>Orange
* Subscribers only
Learn more
Minimize to nav
I wanted a clock that, annoyingly, didn’t seem to exist.
Since childhood, my bedside clocks have been a series of red, seven-segment LED clock-radio specials from Walmart or Target. They are invariably cheap, simple, and long-lived—but they require manual intervention at the start and end of Daylight Saving Time and whenever the power flickers. After a recent power flicker, as I found myself standing by the sideboard holding down “TIME” and mashing the “HOUR” button, frustration boiled over, and I thought to myself, “We’re a quarter of the way through the 21st century. There has to be a better way!”
My perfect clock would be self-setting. It would offer auto-DST adjustment (or not, depending on how this bill fares!). It would manage drift and always show the exact sub-second time. It would show that time on a red seven-segment display—not blue, not green, not yellow, and absolutely not white. And I shouldn’t have to install any privacy-destroying garbage apps to make it work.
Simple? No. While many bedside clocks meet one or perhaps two of these requirements, I couldn’t find anything that meets them all. Battery-backed self-setting “atomic” clocks that get their updates via the cosmic ether have been a thing for years and get me most of the way there, but damned if I could find one with a red seven-segment display that I liked (maybe someone else’s search kung-fu is better than mine?).
For a time, despair won out. But as I closed dozens of browser tabs featuring fruitless searches and close-but-no-cigar product pages, I thought to myself, “Wait a second. I’ve got a 3D printer. I’m, like, smart and stuff. Why not buy a seven-segment display and make my own clock?”
And so, standing on the shoulders of giants stacked up so high that I could practically touch the Moon, I did.
This is the clock, doing clock-y things.
Credit:<br>Lee Hutchinson
This is the clock, doing clock-y things.
Credit:
Lee Hutchinson
O brave new world, that has such clocks in’t
For folks who aren’t interested in several thousand rambling words about process, here’s the finished repo. It contains my bill of materials with prices and purchase locations, the software, and the 3D printer files.
There were two potential paths this hilariously overengineered weekend project masquerading as a clock could have shambled down. One, the path not taken, started with an Arduino or Arduino-like microcontroller. The other began with a Raspberry Pi or Pi-like computer-y thing. I went with the Pi, variously using both a Raspberry Pi Zero W and Zero 2 W.
My reasoning was that a Pi gave me the security blanket of a Debian-based operating system, complete with Wi-Fi and NTP for the “the clock sets and updates itself” requirement, along with the usual Linux remote management routine I already know.
Picking a seven-segment display was easy: Adafruit makes awesome clock-face style LED displays with 1.2-inch high numerals, and it sells a kit that bundles the display I want with a “backpack” board containing the HT16K33 controller needed to drive the LEDs. I ordered three and ended up using all of them for testing, assembly, and figuring out how to solder.
The display, from Adafruit’s product page.
Credit:<br>Adafruit
The display, from Adafruit’s product page.
Credit:
Adafruit
Ah, yes, soldering. I’d never done it before, but the seven-segment display had to be soldered to its backpack board, so I grabbed a baby’s-first-soldering-iron kit from Amazon and a roll of 60/40 solder. (I also had to buy a desktop magnifying lens, because as I found out when I got in there, these old eyes can’t focus up close like they once could.)
Setting aside the matter of the clock’s enclosure—I felt sure that someone else had already designed a 3D-printed case compatible with the Adafruit display, and I was right—I sat down with my new Pi Zero and began poking at the software it would have to run in order to speak clock. I quickly realized I was in over my head. As I’ve said on these pages so often, I put the “ops” in “devops"… somebody else needs to bring the “dev.”
A clock past the wit of man
The RPi image loader got me going, and I was able to log into my Pi Zero. After thinking about things for a bit, I distilled my software requirements down to a list:
The clock host should be LAN-only and not accessible from the Internet
The clock host should get its updates from a LAN-only apt mirror
The clock host should get its NTP sync from a LAN-only NTP server
The...