The most interesting part, IMO, is the "SRAM with EEPROM backup" chip. It allows you to persistently save the clock hands' positions every time they're moved, without burning through the limited write endurance of a plain old EEPROM. And it costs less than $1 in single quantities. That's a useful product to know about.
So the way this works seems to be this: It's an SRAM and an EEPROM in one little package along with a controller that talks with each, with a little capacitor (this clock uses 4.7uf) placed nearby.
The SRAM part does all of the normal SRAM stuff: It doesn't wear out from reading/writing, and as long as it has power it retains the data it holds.
The EEPROM does all the normal EEPROM stuff: It stores data forever (on the timescale of an individual human, anyway), but has somewhat-limited write cycles.
The controller: When it detects a low voltage, it goes "oh shit!" and immediately dumps the contents of the SRAM into EEPROM. This saves on EEPROM write cycles: If there are no power events, the EEPROM is never written at all.
Meanwhile, the capacitor: It provides the power for the chip to perform this EEPROM write when an "oh shit!" event occurs.
When power comes back, the EEPROM's data is copied back to SRAM.
---
Downsides? This 47L04 only holds 4 kilobits. Upsides? For hobbyist projects and limited production runs, spending $1 to solve a problem is ~nothing. :)
Has anyone found the chip on AliExpress? I only get unrelated listings with that part number, but this is a pretty interesting chip I'd like to get a few of.
An alternative would be a supercapacitor and a voltage divider connected to the ADC pin of the microcontroller. When the 5V rail dies, the supercapacitor can hold 3.3V for a few seconds while you write everything to the EEPROM.
It's as if people have never had shipping itemized before.
The only reason aliexpress shopping is cheap is because the rest of the world foots the bill. Unless somebody has finally removed China's "Developing Country" status thats gotten them essentially free international parcel service for the best part of 100 years.
I buy small parts with "Choice" shipping on AliExpress sometimes, because it's cheap and [usually] quick and they take care of all of that pesky tariff and customs business in ways that never have an opportunity to surprise me.
For years now, the shipping process has worked like this for me: They gather it up on their end and send the stuff on a cargo plane to a sort that is at or near JFK airport in New York.
If the order includes things from several different sellers, then at some point they generally get combined into one bag.
From there, they just mail it -- using regular, domestic USPS service. It shows up in my mailbox on my porch in Ohio a few days later.
Although it certainly was a thing I've experienced in the past, at no point does the process I've described exploit the "Developing County" loophole. They just send things to the other side of the world (at their expense), and then pay the post office the same way as anyone else does to bring it to my door.
Yeah OK, but if I only want 5 pieces and I have to choose between $5 or $30, I'm not going to think about the geopolitical situation, I'm just going to get the cheaper one.
"Hey, someone on the Internet used decent diction! Obviously, this means I must accuse them of being a bot!"
(Hey Dang. Can we get a ban button? There's a few people here that are impossible to conduct rational discourse with. My sanity would improve if they were simply gone from my view.)
Yes! The reflexive “must be LLM generated” is becoming ridiculous. Anything that includes proper punctuation and, god forbid, em dashes which I’ve used all my life must be suspect. The “it’s not x, it’s y” construction predates LLMs. I don’t recall ever sending a text without making sure it contained no errors, and yes, many have included infrequently used vocabulary.
I've been trying to write properly, clearly, and with the most expressive words I can come up with for many decades. I try to punctuate well, and to use functional formatting that I hope helps to effectively convey whatever it is that I'm on about. I try to improve as time goes on.
And I do this because if I'm going to bother with writing something for others to read, then I want my intended meaning to be easily-understood.
But increasingly, the instances where I manage to not screw any of that up too terribly result in a snarky and insulting retort in return.
And that kind of response is just not useful to anyone. I mean: What would people presume to have me do, instead? Become less-literate? Die in a fire? (Worse?)
It’s frustrating to the point that I have considered inserting grammatical errors, but that would go against my principles, which I have attempted to inculcate in my children. Yes, a significant amount of what’s posted is copied and pasted AI slop. But what in the world preceded this? Barely legible slop? I would much rather have someone craft their thoughts, run them through their preferred model, and write something coherent that is not marred by punctuation or basic elementary grammar errors. And you know what, the hell with the AI slop police. Yes, if we choose to use em dashes, we will.
An extra UI element or two should be enough. Maybe with sticky options for collapse-by-default or hide-by-default at the top of each HN comment section.
And the list of usernames can be stored and edited in the purveyor's HN bio (in plain text, like a monster), so that it works automatically across devices.
Upvoted because this stinks to high hell of an LLM response. Half the GPs comments seem to be in a similar vein. It’s such a shame but you can’t fight the trolls so don’t take it to heart.
FRAM is extremely neat on paper, combining SRAM ish speeds with non-volatility, but adoption seems to be low. Possibly due to scaling issues. I've had a FRAM-based TI MSP430 in my random parts drawer for about a decade.
Not quite - the chip the article refers to is the 47L04 [0], which is "just" NVSRAM built out of a RAM + EEPROM. I do agree on FeRAM being cool, though - I have a few I2C chips en route, and I can't wait to get my hands on them.
You could also consider MRAM. Which is available in larger sizes - up to 4 Mbit on SPI bus in the MR20H40, and 128 Mbit in EM128LXQ (but it gets unreasonably expensive when this big).
Particularly I like that I can get those large enough to stick a ring buffer from debug out on them as well and get crash logs from embedded systems despite the debug uart not being tethered to a dev machine.
Meh. The room-temperature endurance of modern EEPROMs (e.g., ST M95256) is something like 4 million cycles. If you use a simple ring buffer (reset on overflow, otherwise just appending values), you only need to overwrite a cell once every 32k ticks, which gives you a theoretical run time of 250,000 years with every-minute updates or 4,100 years with every-second updates.
The red projection is just the right brightness (at night) but it sucks that it's not wifi-enabled so you can't just get it to NTP sync (or hook up a GPS receiver). The projector part of the clock is a separate device that's attached to it via a ribbon cable. I would reverse engineer it myself but I haven't got the time.
Ideally, I'd want a matrix of LEDs projected on to the ceiling so I could get more info than just the time. Such clocks exist but they're super duper expensive! Example: https://buyfrixos.com/
The one you linked claims to have "Atomic Time" which usually means syncing by radio from WWV/WWVB. I have several cheap wallclocks like this (though none with a projector) and they are always accurate with no noticeable drift AFAICT. Have you tried that particular one and found its accuracy wanting? I think, in principle at least, there should be less jitter in this method than using NTP over a computer network.
Right. WWVB clocks running off the 60KHz pretty much solve the clock problem in the US.
All my clocks at home are basic LaCrosse analog clocks. They have the internal sensors needed to tell when each hand is straight up, so they can set themselves without user input. On power up, they step until the hands are straight up, then sync when they get an update.
You have to set the time zone with a switch when installing. Only the four US time zones are available.
Battery life is 1-2 years, which is pretty good for a device with a radio.
There are UK and Japan clocks that work similarly, but use national time sources. There are G-Shock watches which synchronize from multiple sources. While running on solar power. Those keep accurate time with no maintenance. That's an impressive achievement.
> WWVB clocks running off the 60KHz pretty much solve the clock problem in the US.
YMMV depending upon location. I've never gotten a WWVB clock to work in North Carolina. On the East Coast, the signal maybe sorta works for a few hours overnight:
T̶h̶e̶y̶ ̶a̶l̶s̶o̶ ̶d̶o̶n̶'̶t̶ ̶t̶r̶a̶n̶s̶i̶t̶i̶o̶n̶ ̶D̶S̶T̶ ̶a̶u̶t̶o̶m̶a̶t̶i̶c̶a̶l̶l̶y̶,̶ ̶s̶o̶ ̶y̶o̶u̶'̶r̶e̶ ̶p̶u̶l̶l̶i̶n̶g̶ ̶t̶h̶e̶m̶ ̶o̶f̶f̶ ̶t̶h̶e̶ ̶w̶a̶l̶l̶ ̶t̶w̶i̶c̶e̶ ̶a̶ ̶y̶e̶a̶r̶ ̶u̶n̶l̶e̶s̶s̶ ̶y̶o̶u̶'̶r̶e̶ ̶i̶n̶ ̶o̶n̶e̶ ̶o̶f̶ ̶t̶h̶e̶ ̶r̶a̶r̶e̶ ̶U̶S̶ ̶l̶o̶c̶a̶t̶i̶o̶n̶s̶ ̶t̶h̶a̶t̶ ̶d̶o̶n̶'̶t̶ ̶a̶d̶h̶e̶r̶e̶ ̶t̶o̶ ̶t̶h̶e̶ ̶D̶S̶T̶ ̶s̶i̶l̶l̶i̶n̶e̶s̶s̶. Edit: My bad, they can switch in/out of DST automatically, at least when they can work at all.
I have a few WWVB clocks. The ones that are on the north/south walls will never sync on their own, but east/west walls will sync just fine. I just take down the north/south clocks twice a year and lean them on a west facing wall and they'll sync overnight.
I think that most WWVB clocks just don't have the size to have an omni-directional antenna.
If I have to take the clock off the wall and move it outside, I may as well set it by hand. In any case, I've tried leaving one outside facing west and it still doesn't work. I've literally never had one of these clocks work from NC.
Meanwhile, the WiFi NTP clock I purchased just works, like I always hoped the WWVB clocks would have.
Radio clock (with reception) should be less jitter, but NTP measures round trip time, so you can estimate time in flight estimate; if your path is reasonably symetric, you could end up with less error.
Some clocks also update over radio. Oregon Scientific used to make the best bedside atomic clock ever. Super simple, with the projector, was an atomic clock that updated automatically via radio and had a pleasant, crescendo alarm that would start off nice and get more aggressive. They don't make it anymore :/
Cheap electronics are just the feed stock, the basis function for your new creation. Why start with raw matter when you can get fully formed matter for less.
+1 I have a couple of digital.clocks from Temu. They look nice but cannot keep the correct time. They slowly edge ahead and in a month they are about a minute ahead. It is annoying having to correct the clock and would be great if they time from WiFi connected source.
Depending on how dark your room is you might get by with an ordinary but bright LCD screen and a camera lens. There's a pretty common 240x240px, 1-inch square TFT display on amazon or other usual places you might start with.
I got one for my daughter. The erratic ticking eventually became a distraction when she was studying, so we have retired it for now. But we got a lot of amusement out of it.
> Early clock - keeps time anywhere between 0 and 10 minutes fast. For those who like to set their watch ahead to avoid being late. This clock keeps you from trying to "compensate," because you never know how early it is at the moment.
That's pretty genius for many ADHD-type folks. Only problem is a modern household has many clocks in view, so you'd need to commit to just not setting them.
Oh now that would be a fun version 2 challenge: have all the clocks in one household synchronize such that they're all early by the same amount at any given time.
Easy enough for wifi enabled ones: a UDP broadcast to discover other clocks on the network, then sync how you will.
For non-wifi-enabled clocks, perhaps something like a CH572 would do the trick: a $0.20 RISC-V microcontroller with BLE support that all the clocks in the same vicinity could use to talk to each other.
You could really mess with your neighbors if they had the same clocks and you were within range...
> The erratic ticking eventually became a distraction
Yeah, the main problem with this project is you have to find a silent 3.88 analog clock to attach it to.
Last cheap clock i've tried was silent on half the circle and kinda buzzy on the other half. It had seconds so that meant the ambient noise changed every 30 seconds...
Oh wait. Maybe I should open it up and remove the seconds needle. Time for a totally analog project!
This is cool but it seems like it would be liable to drift. I.e. it "knows" the correct time but doesn't have any way to figure out that it's been driving the movement fast or slow by some number of milliseconds. Eventually, that will pile up to the point that it's not any better than running the thing off of batteries.
As the author points out, the cheap quartz mechanism has no way of reporting the position of the hands (other than the hands themselves) and that you have to set the PULSETIME constant by the right number of milliseconds. If you're off by even a millisecond, that's going to accumulate quick enough that it would make a difference over even a single day, wouldn't it?
EDIT: as some have pointed out, the Lavet stepper theoretically accounts for this in that it steps exactly one tick after so many oscillations. That number of oscillations does not change so that's all you need to get right.
However, that basically just kicks the can down the road a bit in that if each step is not exactly 1/60th of a circle or bits wear down or get sticky or you have analog noise in there you will presumably still have a source of biased drift that you won't be able to detect. But maybe those affects are small enough that they don't matter for a wall clock.
The escapement is "synchronous" in that the motion is controlled by the number of pulses applied to the motor over time rather than the duration/width of each pulse. The pulsetime constant is only to accommodate mechanical/analog differences with the driving circuitry, from what I understand. https://en.wikipedia.org/wiki/Lavet-type_stepping_motor
That's fascinating; the Lavet-type stepping motor acts as an escapement all on it's own by being a very simple stepper motor, so you don't end up needing a miniature version of a classic mechanical escapement, which is what I'd always imagined in my head when thinking about how cheap quartz wall clocks worked.
The pulsetime is just to advance the clockwork one step, and is kept fixed, the advancement driven by the mechanism is discrete. As long as you keep track of the count, you wont accumulate drift. The adjustment is to get that stepping working, if it doesnt miss a step, youre good.
In a perfect world, yes. But mechanisms aren’t perfect and it’s entirely possible if not likely that steps will be missed as friction increases over time and things wear.
I’m not saying these things matter much in this context.
The clock will still be far more accurate than purely mechanical version. And, re-synchronizing it is as trivial as turning the knob, just as you would for the all mechanical mechanism.
I had a clock where the second hand was not properly balanced and it would miss steps fairly reliably in the second-half of the minute (when the heavier side of the hand was going up). I added some tape to the counterweight to fix it.
Hell yeah, this is some badass hackery, and the type of stuff I love seeing on HN. In the last decade or so as more and more stuff becomes locked down and hacker unfriendly, I've found myself longing for simple things I can hack on. If I ever get to a point where I don't have to work for a living, one of the things I'd like to do is build everything from little gadgets up to major appliances that are simple, reliable, and hackable for people who want to. It pains me that my appliances have full computers driving them but I can't get access to them. Kudos for this awesome work and phenomenal write-up!
The DIY tuning fork clock is very cool. I am hard pressed to understand why accutron doesn't still make and sell tuning-fork watches. I really admire the creative use of resonance frequencies (not dissimilar to quartz watches but cool that you can really see the tuning fork for you watch as opposed to a diminutive quartz crystal).
They have done a re-issue, which Dole has linked to (I'm not going to lie, they do look smashing)
I think the reason why it took so long is a combination of snobbishness (its not "mechanical" enough) and cost of manufacture. I assume that most of the tooling has been lost, and it required a lot of work to re-learn how to make from scratch.
But accutrons wern't that cheap when they launched, so I think they are within 50% of their original price, judging by my half arsed inflation calculations.
Related - we have an atomic Seiko wall clock expecting to have the time automatically adjusted by the WWVB LF atomic clock broadcast. Turns out, the signal is very weak where we now live. Manually setting the time on these atomic clocks is a HUGE pain (beware!).
Turns out it's possible to emulate the atomic clock signal quite easily with a Raspberry Pi, or in my case I put together Arduino code that can emulate atomic clock broadcasts from around the world using an ESP32 module using NTP servers: https://github.com/tanvach/clocksync
The history of these atomic clock broadcast signals and their differences in different countries is quite fascinating.
The loopstick antennas used in many inexpensive WWVB receivers have a fairly strong null, so rotating the clock 90 degress can make reception possible.
Supposedly you can do it with a stock smartphone or tablet by using the audio hardware to deliberately generate RF noise that works like a WWVB signal. https://github.com/kangtastic/timestation
You do not have an atomic clock. Seiko does not manufacture “Atomic Clocks” for the $30 shelf in Target. You (and others here) don’t seem to know what an atomic clock is, or how it works, or what it costs!
Your Seiko is a radio clock. It’s probably got a crystal or some other normal timekeeping gadget, and the external WWV signal is decoded to properly set it.
“Atomic Clocks” are marketed to ignorant consumers who blithely use the term when the only external source is a radio station. The Stratum Zero clock may be atomic, but the caesium is not to be found on your nightstand.
No caesium atoms would be found in your Seiko, bro.
If you know more than someone else, that's great! By all means, share some of what you know, so the rest of us can learn. Just please do it without putdowns.
This is more resourceful than what I once did, which was set up an atomic clock "repeater" to get analog atomic clocks (one in each room) in a site to actually receive the signal in a 1930s structure made of solid brick and concrete blocks.
Except it wasn't a repeater so much as it was a MITM fake, with an rpi connected to an sdr-like system to generate a fake WWVB (iirc?) based off an NTP clock.
Legality was technically questionable, but since the signal didn't really leave the site perimeter (or even the building, really), I think it was ok.
I don’t understand why it needs to neurotically check so frequently? 30 times a second seems like a lot of hammering on the NTP server. Am I missing something here? Some physical reason why that is necessary perhaps?
What I really want is one of these powered by gps. The time already comes for free in the signal, and from your location you can derive the time zone. That way DST is accounted for automatically, but you don't have to set up and rely on wifi. This would be truly zero-config and always correct.
The receivers are inexpensive ($5-$10 for the kind of accuracy that's useful here) and it's not hard to parse the NMEA strings and PPS they output into a spooky-accurate internal clock. It only takes a few connections and an antenna to integrate GPS into an MCU like an ESP (or an SBC like a Raspberry Pi or a whatever).
Like, really: The hardware is ridiculously easy.
The only difficult part is the code. But as we can see from this posting, the clock-driving bits are already written and are available for use.
Just graft in the GPS parts instead of the NTP parts, add your DST/location rules if you really must (hint: that part is harder than it sounds), and send it.
(And if the code still seems arduous, then remember: This is the kind of work that a reasonably-focused person who is armed with a decent bot can put together over a cup of coffee or two, even if they don't speak C. It may be popular here to poo-poo the bot here, but it's completely OK to get some help. Don't let pride get in the way of having fun, learning things, and building neat stuff.
The tailor doesn't lament the invention of the cotton gin.)
The obvious answer is to use a Raspberry Pi as a GPS-disciplined NTP server, of course. Place it near the window or fully outside, depending on GPS signal strength.
That gives you another weekend project, and you can reuse your DIY NTP wall clock!
That never quite solves the auto-timezone/DST issue that OP wants to have work, though, does it?
If I am interpreting their request correctly, they want a wall clock that knows where it is -- and also knows what localtime is in that position on the globe.
GPS (plus some hairy lookup tables) can accomplish that.
My current house, with low-E windows, aluminum siding, and a metal roof? It passionately hates everything about GPS.
But in more-typical (stick-framed, asphalt shingled, vinyl-sided, US-ish) houses? I haven't had any trouble with my very inexpensive u-blox (or perhaps clone) GPS board, a presumed-decent GPS antenna that we were throwing away at work, and dainty little [IIRC] u.FL to SMA adapter to connect the antenna with. (I put this all together just to play with making a GPS-backed, low-stratum NTP server -- which was a much more-rewarding process than it had any right to be.)
It was bizarrely good, in fact: While it certainly saw more birds and presumably had better accuracy when sitting in a window, I had real trouble getting it to cease to operate. It seemed to lock on well-enough to provide time and PPS until I put the antenna into a windowless closet.
That said: The antenna that came with this cheap receiver was trash -- at best, 1/10. It was hard to make it work even outdoors on a clear day. I eventually got sick of looking at that part and binned it.
There's quite a few clocks available that get their time over the air from the NIST WWVB radio station[0]. They usually have a little switch on the back if your area does/doesn't observe daylight savings.
You would still need some kind of configuration because the start of DST can change year to year, and this is not accounted for in the time signal from GPS
Good point that DST dates can technically change -- but in practice it doesn't really change on a year-to-year basis. The current law establishing the start and end dates in the US has been in effect unchanged for the last ~20 years.
This is great. I spent years looking for an affordable battery-powered WiFi clock that syncs via NTP since where I am, the WWVB clocks never pick up the radio signal.
I never considered making my own. Anyway, about two years ago this option popped up on Amazon. I've been happy with it:
Thanks for sharing this. I, too, have spent years trying to find an analog-style clock that is completely hands-off for adjustments (power outage, DST, drift correction) and it looks like this one handles it all.
It feels like in 2026 this should be something default and assumable, but alas, it is not.
Looking at the code [1], it looks like if the actual time is 1 hour ahead of the displayed time, then we get 10 pulses per second to leap forward. Otherwise, the clock stops running for an hour to fall back.
You have two choices: either assume everyone is asleep at 2 am and won't notice when it happens, or else advance 11 hours. My LaCrosse clock does the latter.
I remember clocks in my school would sync up by all running forward to 12 at noon (and presumably midnight). I don't know if it was a radio or wired signal.
And that's pretty much fine for a project like this, seeing as most (all?) locations jump you between DST and not DST at night. So the clock will be off at most for an hour during the night.
Sorry if this is a dumb question, but do you guys not have radio controlled clocks outside of Europe?
If I got it right, the only purpose of this project is to always display the correct time. Radio controlled clocks do exactly that. They are cheaper than the one ESP board, and run years on a single AA battery. No WiFi, tinkering, setup, or cables necessary
The point is to have fun and learn something, not really to solve a problem in a practical sense. The radio controlled clocks are extremely unreliable where I live.
Our office manager bought some US tuned radio wall clocks, and every now and then they would jump 8 hours forward. I assume it was down to solar weather making propagation changes (https://en.wikipedia.org/wiki/Sporadic_E_propagation)
An already radio controlled clock would probably be a better starting point to GPSify or NTPify too - at least the one I have already has the feature that it can move the hands to an arbitrary position (when you replace the battery and it syncs again).
We do, but I've never had a WWVB clock work for me in North Carolina. I've tried a few of them. The US is a big place and for whatever reason, there aren't that many clock signal transmission towers (AFAIK, the only one in the US is in Colorado).
I’ve wanted to do this because there’s a zillion cool clocks out there that use a similar movement. I’d also wanted to make it battery powered which means doing NTP update only once per day (or less). Doubt that is realistic, tho.
Maybe embed Hall sensors and detect when the hands are in a certain position and when all three line up wake the ESP32, do an NTP update, tick it forward to where it should be, then go to sleep. Probably still use too much power, especially the Halls.
Use reed switches behind the clock face and magnets on the (presumably) different length hands instead of hall sensors. NTP sync once per day is more than adequate for household timekeeping - it might drift a few seconds here and there, but that’s fine for most people?
Yeah, reeds make more sense. I’d stagger them so that when the hour is at 12, minute at 3, second is at 6, all three reeds (wired in series) wake the microcontroller.
One thing with stepper motor h bridges is that you need to account for back current that might at the least cause spikes leading to misfires or worst frying your microcontroller. The ideal way to protect is is using opto electric transistors to drive the motor with a gate voltage connected to the microcontroller and isolated power supply for the motor.
Yeah, it's super quick to start with a MK I eyeball to set them, but having a sensor just avoids any drift. I got away with using one by taking a reading and moving the other hand to check they weren't on top of each other already, and then doing a full rotation between readings.
On this topic. Do WiFi signals contain time (unencrypted)? If so why does my oven not pull time from the air and needs adjustment every 2 months? If not, why are APs not defacto time beacons for all sorts of non-smart appliances (and clocks)?
The gateway/router should be the time source. DHCP has an option to provide the time server (NTP) - option 42, and most decent devices or OSS/DIY router software (OpenWRT, opnSense) will support that as well as being the local time server.
I have thought that could use Matter for time sync. It works with both Wifi and Thread. I don't think there is a time message. I also don't know if it has public broadcast since Thread needs pairing to work.
The advantage is that smart devices might have Matter support already. People with Matter devices will have border routers, which are perfect place for running NTP and broadcasting time.
Pretty awesome. The only thing I would change is to put a USB battery between the usb wall power and the D1 mini. That way for power outages of < a couple of days or so you're clock will be fine.
I’m curious how long it takes for the hands to drift to the point where the time difference is perceivable. Luckily the 30 millisecond pulse time is configurable.
Most 'big businesses' I've delt with have a time server someplace internal. It may be a stand alone NTP server, a network device like a Cisco router or a Windows AD server. You might ask the network team/Windows admin team nice and see what they have.
A great solution I've used plenty of times is to query websites like google.com. I use it whenever my rtc on my Linux laptop gets reset (as long as it's still in my history. Otherwise I just set it manually).
This will pair nicely with the eps8266 i just flashed after ripping it out of a Wyze plug that required I download their app, updating my operating system first of course, make an account and agree to their privacy policy.
Some years ago I made a ESP-based clock that used 60 LEDs in a circle that project RGB shadows via a cone at the center. I used the same WeMos D1 Mini board.
Cute, but the original clock used to run on AA battery that needs a replacement every two years or so, and now it needs a power supply. Or some big battery recharge/replacement every few hours maybe days.
Wow your ability to research products is truly inspiring! We should campaign to get this site renamed to buyer news to reflect what really matters in life.
I was looking at the way they did the position sync. And they didn't :(
OK, here's how I'd do it: add small magnets at the bottom of the clock hands, and use the ESP's built-in Hall effect sensor to detect them. You can distinguish between hands using the magnetic field orientation.
As for the problem of detecting the current position of hands - Casio solved in in watches with their Tough Movement mechanism, where there is a tiny tiny hole in the dial with a sensor behind it - the watch will check if the hands are over it when expected, and if not, automatically adjust - so even if a watch suffers a major impact that might move the hands, they will re-allign themselves. Such a clever and simple solution.
Of note, having recently shopped at Walmart for a self-setting alarm clock (what I once knew to be “atomic”):
Apparently the entity today known as Sharp sells “AccuSet(tm)” branded clocks that “automatically set time”… but they’re just factory pre-set with a button cell and they include a slider on the bottom to set a timezone offset (only for US timezones). If you’re lucky, the clock’s battery is still good and the clock “set itself” out of the box several minutes late.
If you’re unlucky - surprise, you get to manually set the time anyways.
These clocks are irritating because they show up in the results when searching for “radio atomic clock” and similar, and it can be very hard to figure out if they actually use the WWVB radio signal. I’ve concluded that none of them do, because WWVB is only reliable in (most parts) of the US, and companies only want to make things that appeal to a global audience now. La Crosse seems to be the only one that makes them, and unfortunately most of their designs lack any style (i.e. they’re ugly).
There are actually other time signals around the world.
I had a Casio wave ceptor (one with analog hands which it doesn't look like they sell anymore; I should have kept it). Anyway, looking at a model that's currently available (WV-200R, but there are 2 other models available), its manual says it gets signals from "Germany (Mainflingen), England (Anthorn), United States (Fort Collins), [and] Japan."
I was curious so I looked those up:
Mainflingen DCF77 77.5 kHz
Anthorn 60 kHz
Fort Collins WWVB 60 kHz
Japan looks like they have Mount Otakayoda 40 kHz, and Mount Hagane 60 kHz.
There are also some other countries that have time broadcasts (e.g. France. Anywhere else?) but not that that watch uses.
There's also a station in Shangqiu City, Henan province, China, BPC 68.5 kHz
Casio brands watches that receive all 6 stations as multiband-6, and older ones that don't have the Chinese signal as multiband-5.
The analog display, chronograph watches like WVQ-M410-7AJF are delightful ; you can switch to timer mode and the main hands show the time ticking down (yes, they move counter-clockwise), and then switch back to normal timekeeping mode and the hands will move around the dial to set to the correct time again. Obviously at great expense to battery life, but it's solar powered. Unfortunately it's Japanese Domestic Market only, so you need to order it from a place like discovery mall japan. (The WVQ has a flimsy plastic - if you're willing to pay a lot more you could spring for the OCWS7000E ). Citizen has some GPS set watches.
Radio time signals used by watches and wall clocks are all in the 60-77.6 Khz range, probably best suited to small receivers and low power - other radio time signals are higher frequency. In the US, WWVH broadcasts at 2.5MHz, 5Mhz, 10Mhz and 15Mhz.
It's like they hired a design firm in the early 00's and decided that design language is the peak of human horology... I wish they'd make a couple new designs.
Clocks which are designed to be able to auto set their time in the US will actually also do the auto setting at least as far away as Johannesburg, South Africa.
I know this because when my mother was visiting the US over a decade ago, she found a clock she felt was aesthetically perfect for her psychology practice room at her house.
Twice a year the clock changes its time to be 10 hours (or thereabouts) behind, no doubt due to daylight savings change over.
So she has to readjust the time whenever this happens which she says she doesn’t really mind.
So basically we just need a 1pps from a GPS chip to make the analog clocks accurate and use that to drive the motor. We set it once and it will be accurate for a long time.
I've made enough of these projects to know that ~75% need modifications that were not anticipated. For instance, I made a freezer temp sensor to php email for cases where the freezer stops working... but when I opened the freezer, it would send an email. I needed to sample for 30 minutes or something.
Maybe this was simple and you will be part of the 25% that work perfect and need 0 updating.
Yes most things that monitor a sensor in the real world can't react to instantaneous readings. They need to use an average of samples over some time period. Also due to hysteresis, you have to allow time to see any changes in state in response to changes in inputs. Most real-world systems don't respond immediately.
I've tried similar project, as it turns out it is surprisingly hard to reliably move second's hand and not wobble in place, you need to drive quartz motor so precisely to make gears move.
The repo you linked to is a WWV simulator, WWV broadcasts the time via _audio_ (double-sideband amplitude modulation) at various fixed HF frequencies. SOME clocks might be able to automatically receive and decode this signal, but not many. There is also a web version here: https://wwv.mcodes.org
Radio controlled ("atomic") clocks get their signal from WWVB, a long-wave station in Colorado. Its signal is just a carrier and data is encoded via pulse-width modulation and phase modulation. People have built local, low-powered WWVB transmitters to sync their watches and so forth in areas where WWVB is hard or impossible to receive. It's not a good idea to build one of these unless you REALLy know what you're doing because radio signals can travel farther than you expect, and the FCC takes a rather dim view of intentionally broadcasting your own signal (to any distance) without a license to do so.
makes me wonder what if I just wanted to sync with nfc every once in a while. wifi seems overkill for this. maybe it could be done much cheaper with nfc sync witha phone twice a year?
ESPs are so cheap that you couldn't possibly save very much money, and the way economies of scale work it may or may not be cheaper to use NFC anyways.
We've been shopping for a simple bathroom clock to replace our final Amazon Echo and leave that increasingly dystopian ecosystem. There are some models that use Bluetooth on your phone to sync the time. I could imagine BLE being a good low-power and relatively stateless solution. But given our goals, we're not going to install an app on a phone just to maintain a wall clock. (I'd be fine if Android provided BLE time sync as a built-in service.)
you can buy dual coaxial shaft steppers ( X40 ) for car instrument panels open them and remove the hard stops. A very small magnet and 2 hall sensors gets you end stops.
The most interesting part, IMO, is the "SRAM with EEPROM backup" chip. It allows you to persistently save the clock hands' positions every time they're moved, without burning through the limited write endurance of a plain old EEPROM. And it costs less than $1 in single quantities. That's a useful product to know about.
So the way this works seems to be this: It's an SRAM and an EEPROM in one little package along with a controller that talks with each, with a little capacitor (this clock uses 4.7uf) placed nearby.
The SRAM part does all of the normal SRAM stuff: It doesn't wear out from reading/writing, and as long as it has power it retains the data it holds.
The EEPROM does all the normal EEPROM stuff: It stores data forever (on the timescale of an individual human, anyway), but has somewhat-limited write cycles.
The controller: When it detects a low voltage, it goes "oh shit!" and immediately dumps the contents of the SRAM into EEPROM. This saves on EEPROM write cycles: If there are no power events, the EEPROM is never written at all.
Meanwhile, the capacitor: It provides the power for the chip to perform this EEPROM write when an "oh shit!" event occurs.
When power comes back, the EEPROM's data is copied back to SRAM.
---
Downsides? This 47L04 only holds 4 kilobits. Upsides? For hobbyist projects and limited production runs, spending $1 to solve a problem is ~nothing. :)
An alternative would be a supercapacitor and a voltage divider connected to the ADC pin of the microcontroller. When the 5V rail dies, the supercapacitor can hold 3.3V for a few seconds while you write everything to the EEPROM.
https://www.digikey.com/en/products/detail/microchip-technol...
And, at least with Digikey, you can feel like you actually get the real part vs. some low end clone knockoff.
https://www.digikey.com/en/products/detail/microchip-technol...
I'd prefer even the SOIC version which is $0.69 if I'm soldering it:
https://www.digikey.com/en/products/detail/microchip-technol...
but the author used the DIP in a holder/socket on the perfboard.
It's as if people have never had shipping itemized before.
The only reason aliexpress shopping is cheap is because the rest of the world foots the bill. Unless somebody has finally removed China's "Developing Country" status thats gotten them essentially free international parcel service for the best part of 100 years.
I buy small parts with "Choice" shipping on AliExpress sometimes, because it's cheap and [usually] quick and they take care of all of that pesky tariff and customs business in ways that never have an opportunity to surprise me.
For years now, the shipping process has worked like this for me: They gather it up on their end and send the stuff on a cargo plane to a sort that is at or near JFK airport in New York.
If the order includes things from several different sellers, then at some point they generally get combined into one bag.
From there, they just mail it -- using regular, domestic USPS service. It shows up in my mailbox on my porch in Ohio a few days later.
Although it certainly was a thing I've experienced in the past, at no point does the process I've described exploit the "Developing County" loophole. They just send things to the other side of the world (at their expense), and then pay the post office the same way as anyone else does to bring it to my door.
(Hey Dang. Can we get a ban button? There's a few people here that are impossible to conduct rational discourse with. My sanity would improve if they were simply gone from my view.)
Use this as you like.
I've been trying to write properly, clearly, and with the most expressive words I can come up with for many decades. I try to punctuate well, and to use functional formatting that I hope helps to effectively convey whatever it is that I'm on about. I try to improve as time goes on.
And I do this because if I'm going to bother with writing something for others to read, then I want my intended meaning to be easily-understood.
But increasingly, the instances where I manage to not screw any of that up too terribly result in a snarky and insulting retort in return.
And that kind of response is just not useful to anyone. I mean: What would people presume to have me do, instead? Become less-literate? Die in a fire? (Worse?)
fuh.
An extra UI element or two should be enough. Maybe with sticky options for collapse-by-default or hide-by-default at the top of each HN comment section.
And the list of usernames can be stored and edited in the purveyor's HN bio (in plain text, like a monster), so that it works automatically across devices.
[0] https://www.microchip.com/en-us/product/47L04
https://www.everspin.com/family/mr20h40?npath=259
Particularly I like that I can get those large enough to stick a ring buffer from debug out on them as well and get crash logs from embedded systems despite the debug uart not being tethered to a dev machine.
The red projection is just the right brightness (at night) but it sucks that it's not wifi-enabled so you can't just get it to NTP sync (or hook up a GPS receiver). The projector part of the clock is a separate device that's attached to it via a ribbon cable. I would reverse engineer it myself but I haven't got the time.
Ideally, I'd want a matrix of LEDs projected on to the ceiling so I could get more info than just the time. Such clocks exist but they're super duper expensive! Example: https://buyfrixos.com/
There are UK and Japan clocks that work similarly, but use national time sources. There are G-Shock watches which synchronize from multiple sources. While running on solar power. Those keep accurate time with no maintenance. That's an impressive achievement.
YMMV depending upon location. I've never gotten a WWVB clock to work in North Carolina. On the East Coast, the signal maybe sorta works for a few hours overnight:
https://tf.nist.gov/tf-cgi/wwvbmonitor_e.cgi
T̶h̶e̶y̶ ̶a̶l̶s̶o̶ ̶d̶o̶n̶'̶t̶ ̶t̶r̶a̶n̶s̶i̶t̶i̶o̶n̶ ̶D̶S̶T̶ ̶a̶u̶t̶o̶m̶a̶t̶i̶c̶a̶l̶l̶y̶,̶ ̶s̶o̶ ̶y̶o̶u̶'̶r̶e̶ ̶p̶u̶l̶l̶i̶n̶g̶ ̶t̶h̶e̶m̶ ̶o̶f̶f̶ ̶t̶h̶e̶ ̶w̶a̶l̶l̶ ̶t̶w̶i̶c̶e̶ ̶a̶ ̶y̶e̶a̶r̶ ̶u̶n̶l̶e̶s̶s̶ ̶y̶o̶u̶'̶r̶e̶ ̶i̶n̶ ̶o̶n̶e̶ ̶o̶f̶ ̶t̶h̶e̶ ̶r̶a̶r̶e̶ ̶U̶S̶ ̶l̶o̶c̶a̶t̶i̶o̶n̶s̶ ̶t̶h̶a̶t̶ ̶d̶o̶n̶'̶t̶ ̶a̶d̶h̶e̶r̶e̶ ̶t̶o̶ ̶t̶h̶e̶ ̶D̶S̶T̶ ̶s̶i̶l̶l̶i̶n̶e̶s̶s̶. Edit: My bad, they can switch in/out of DST automatically, at least when they can work at all.
I think that most WWVB clocks just don't have the size to have an omni-directional antenna.
Meanwhile, the WiFi NTP clock I purchased just works, like I always hoped the WWVB clocks would have.
https://news.ycombinator.com/item?id=46948343
> The DST status bits indicate United States daylight saving time rules.
https://en.wikipedia.org/wiki/WWVB
I'm not sure how much it really matters though.
Days spent modifying cheap electronics is absolutely encouraged.
My most precious resource is free time. I never have anywhere near enough.
It is absolutely not worth $5 for me to spend another 15 minutes trying to find a cheaper price
Now if only I could turn off the clocks on my oven and microwave...
I got one for my daughter. The erratic ticking eventually became a distraction when she was studying, so we have retired it for now. But we got a lot of amusement out of it.
That's pretty genius for many ADHD-type folks. Only problem is a modern household has many clocks in view, so you'd need to commit to just not setting them.
Easy enough for wifi enabled ones: a UDP broadcast to discover other clocks on the network, then sync how you will.
For non-wifi-enabled clocks, perhaps something like a CH572 would do the trick: a $0.20 RISC-V microcontroller with BLE support that all the clocks in the same vicinity could use to talk to each other.
You could really mess with your neighbors if they had the same clocks and you were within range...
Yeah, the main problem with this project is you have to find a silent 3.88 analog clock to attach it to.
Last cheap clock i've tried was silent on half the circle and kinda buzzy on the other half. It had seconds so that meant the ambient noise changed every 30 seconds...
Oh wait. Maybe I should open it up and remove the seconds needle. Time for a totally analog project!
As the author points out, the cheap quartz mechanism has no way of reporting the position of the hands (other than the hands themselves) and that you have to set the PULSETIME constant by the right number of milliseconds. If you're off by even a millisecond, that's going to accumulate quick enough that it would make a difference over even a single day, wouldn't it?
EDIT: as some have pointed out, the Lavet stepper theoretically accounts for this in that it steps exactly one tick after so many oscillations. That number of oscillations does not change so that's all you need to get right.
However, that basically just kicks the can down the road a bit in that if each step is not exactly 1/60th of a circle or bits wear down or get sticky or you have analog noise in there you will presumably still have a source of biased drift that you won't be able to detect. But maybe those affects are small enough that they don't matter for a wall clock.
https://en.wikipedia.org/wiki/Escapement
I’m not saying these things matter much in this context.
The clock will still be far more accurate than purely mechanical version. And, re-synchronizing it is as trivial as turning the knob, just as you would for the all mechanical mechanism.
The smaller ones look the same but are less beefy.
I used one to make this clock:
https://www.secretbatcave.co.uk/projects/electromechanical-c...
Which instead of using a well disciplined time source, uses a tuning fork and 74xx logic to drive it
I think the reason why it took so long is a combination of snobbishness (its not "mechanical" enough) and cost of manufacture. I assume that most of the tooling has been lost, and it required a lot of work to re-learn how to make from scratch.
But accutrons wern't that cheap when they launched, so I think they are within 50% of their original price, judging by my half arsed inflation calculations.
https://www.hodinkee.com/articles/introducing-accutron-314
https://www.walmart.com/ip/Mainstays-Basic-Indoor-8-78-Black...
Git history shows it was published more than 2 years ago.
Turns out it's possible to emulate the atomic clock signal quite easily with a Raspberry Pi, or in my case I put together Arduino code that can emulate atomic clock broadcasts from around the world using an ESP32 module using NTP servers: https://github.com/tanvach/clocksync
The history of these atomic clock broadcast signals and their differences in different countries is quite fascinating.
Your Seiko is a radio clock. It’s probably got a crystal or some other normal timekeeping gadget, and the external WWV signal is decoded to properly set it.
“Atomic Clocks” are marketed to ignorant consumers who blithely use the term when the only external source is a radio station. The Stratum Zero clock may be atomic, but the caesium is not to be found on your nightstand.
No caesium atoms would be found in your Seiko, bro.
If you know more than someone else, that's great! By all means, share some of what you know, so the rest of us can learn. Just please do it without putdowns.
https://hn.algolia.com/?dateRange=all&page=0&prefix=true&sor...
https://github.com/timonoko/Jogwheel
Those signals are just weird mess of coils, switches and resistors.
ESP32 clock speed may also be a contributing factor.
But did not improve much, except variable names are now less esoteric.
Except it wasn't a repeater so much as it was a MITM fake, with an rpi connected to an sdr-like system to generate a fake WWVB (iirc?) based off an NTP clock.
Legality was technically questionable, but since the signal didn't really leave the site perimeter (or even the building, really), I think it was ok.
It doesn't seem to be hammering the NTP server 30 times a second.
The receivers are inexpensive ($5-$10 for the kind of accuracy that's useful here) and it's not hard to parse the NMEA strings and PPS they output into a spooky-accurate internal clock. It only takes a few connections and an antenna to integrate GPS into an MCU like an ESP (or an SBC like a Raspberry Pi or a whatever).
Like, really: The hardware is ridiculously easy.
The only difficult part is the code. But as we can see from this posting, the clock-driving bits are already written and are available for use.
Just graft in the GPS parts instead of the NTP parts, add your DST/location rules if you really must (hint: that part is harder than it sounds), and send it.
(And if the code still seems arduous, then remember: This is the kind of work that a reasonably-focused person who is armed with a decent bot can put together over a cup of coffee or two, even if they don't speak C. It may be popular here to poo-poo the bot here, but it's completely OK to get some help. Don't let pride get in the way of having fun, learning things, and building neat stuff.
The tailor doesn't lament the invention of the cotton gin.)
That gives you another weekend project, and you can reuse your DIY NTP wall clock!
If I am interpreting their request correctly, they want a wall clock that knows where it is -- and also knows what localtime is in that position on the globe.
GPS (plus some hairy lookup tables) can accomplish that.
My current house, with low-E windows, aluminum siding, and a metal roof? It passionately hates everything about GPS.
But in more-typical (stick-framed, asphalt shingled, vinyl-sided, US-ish) houses? I haven't had any trouble with my very inexpensive u-blox (or perhaps clone) GPS board, a presumed-decent GPS antenna that we were throwing away at work, and dainty little [IIRC] u.FL to SMA adapter to connect the antenna with. (I put this all together just to play with making a GPS-backed, low-stratum NTP server -- which was a much more-rewarding process than it had any right to be.)
It was bizarrely good, in fact: While it certainly saw more birds and presumably had better accuracy when sitting in a window, I had real trouble getting it to cease to operate. It seemed to lock on well-enough to provide time and PPS until I put the antenna into a windowless closet.
That said: The antenna that came with this cheap receiver was trash -- at best, 1/10. It was hard to make it work even outdoors on a clear day. I eventually got sick of looking at that part and binned it.
[0] - https://www.nist.gov/pml/time-and-frequency-division/time-di...
It has automatic timezone. The article also explains why it isn't as simple as it seems
I never considered making my own. Anyway, about two years ago this option popped up on Amazon. I've been happy with it:
https://www.amazon.com/OCEST-Wall-Clock-12Inch-Auto/dp/B0DJS...
I'm guessing internally it's not much different than the DIY clock in this submission.
It feels like in 2026 this should be something default and assumable, but alas, it is not.
Looking at the code [1], it looks like if the actual time is 1 hour ahead of the displayed time, then we get 10 pulses per second to leap forward. Otherwise, the clock stops running for an hour to fall back.
https://github.com/jim11662418/ESP8266_WiFi_Analog_Clock/blo...
The point is to have fun and learn something, not really to solve a problem in a practical sense. The radio controlled clocks are extremely unreliable where I live.
https://en.wikipedia.org/wiki/Radio_clock#List_of_radio_time...
Our office manager bought some US tuned radio wall clocks, and every now and then they would jump 8 hours forward. I assume it was down to solar weather making propagation changes (https://en.wikipedia.org/wiki/Sporadic_E_propagation)
Obviously it defeats the purpose a bit if I need to move my clock to a different wall and wait 12-24 hours for it to set itself.
Maybe embed Hall sensors and detect when the hands are in a certain position and when all three line up wake the ESP32, do an NTP update, tick it forward to where it should be, then go to sleep. Probably still use too much power, especially the Halls.
The advantage is that smart devices might have Matter support already. People with Matter devices will have border routers, which are perfect place for running NTP and broadcasting time.
https://unix.stackexchange.com/a/400176
https://github.com/dheera/shadow-clock/
OK, here's how I'd do it: add small magnets at the bottom of the clock hands, and use the ESP's built-in Hall effect sensor to detect them. You can distinguish between hands using the magnetic field orientation.
As for the problem of detecting the current position of hands - Casio solved in in watches with their Tough Movement mechanism, where there is a tiny tiny hole in the dial with a sensor behind it - the watch will check if the hands are over it when expected, and if not, automatically adjust - so even if a watch suffers a major impact that might move the hands, they will re-allign themselves. Such a clever and simple solution.
Apparently the entity today known as Sharp sells “AccuSet(tm)” branded clocks that “automatically set time”… but they’re just factory pre-set with a button cell and they include a slider on the bottom to set a timezone offset (only for US timezones). If you’re lucky, the clock’s battery is still good and the clock “set itself” out of the box several minutes late.
If you’re unlucky - surprise, you get to manually set the time anyways.
https://www.amazon.com/Sharp-Digital-Alarm-AccuSet-Automatic...
I had a Casio wave ceptor (one with analog hands which it doesn't look like they sell anymore; I should have kept it). Anyway, looking at a model that's currently available (WV-200R, but there are 2 other models available), its manual says it gets signals from "Germany (Mainflingen), England (Anthorn), United States (Fort Collins), [and] Japan."
I was curious so I looked those up:
Mainflingen DCF77 77.5 kHz
Anthorn 60 kHz
Fort Collins WWVB 60 kHz
Japan looks like they have Mount Otakayoda 40 kHz, and Mount Hagane 60 kHz.
There are also some other countries that have time broadcasts (e.g. France. Anywhere else?) but not that that watch uses.
Casio brands watches that receive all 6 stations as multiband-6, and older ones that don't have the Chinese signal as multiband-5.
The analog display, chronograph watches like WVQ-M410-7AJF are delightful ; you can switch to timer mode and the main hands show the time ticking down (yes, they move counter-clockwise), and then switch back to normal timekeeping mode and the hands will move around the dial to set to the correct time again. Obviously at great expense to battery life, but it's solar powered. Unfortunately it's Japanese Domestic Market only, so you need to order it from a place like discovery mall japan. (The WVQ has a flimsy plastic - if you're willing to pay a lot more you could spring for the OCWS7000E ). Citizen has some GPS set watches.
Radio time signals used by watches and wall clocks are all in the 60-77.6 Khz range, probably best suited to small receivers and low power - other radio time signals are higher frequency. In the US, WWVH broadcasts at 2.5MHz, 5Mhz, 10Mhz and 15Mhz.
I know this because when my mother was visiting the US over a decade ago, she found a clock she felt was aesthetically perfect for her psychology practice room at her house.
Twice a year the clock changes its time to be 10 hours (or thereabouts) behind, no doubt due to daylight savings change over.
So she has to readjust the time whenever this happens which she says she doesn’t really mind.
There was a kerfuffle a few years back about the funding for the station being cut, but luckily that did not come to be.
I've made enough of these projects to know that ~75% need modifications that were not anticipated. For instance, I made a freezer temp sensor to php email for cases where the freezer stops working... but when I opened the freezer, it would send an email. I needed to sample for 30 minutes or something.
Maybe this was simple and you will be part of the 25% that work perfect and need 0 updating.
Post don't go into detail about schematic, but resistors and diodes around motor is to properly drive motor and protection from Inductive kickback (Flyback) https://www.microtype.io/blog/h-bridge-circuit-design
Radio controlled ("atomic") clocks get their signal from WWVB, a long-wave station in Colorado. Its signal is just a carrier and data is encoded via pulse-width modulation and phase modulation. People have built local, low-powered WWVB transmitters to sync their watches and so forth in areas where WWVB is hard or impossible to receive. It's not a good idea to build one of these unless you REALLy know what you're doing because radio signals can travel farther than you expect, and the FCC takes a rather dim view of intentionally broadcasting your own signal (to any distance) without a license to do so.
There are weak wwvb simulators out there as phone apps and such that depend on using EMI to sync your clock. Like the old AM radio bus noise music hack. https://github.com/kangtastic/timestation?tab=readme-ov-file...