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.
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. :)
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.
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.
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.
+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.
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.
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...
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!
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.)
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
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.
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).
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.)
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.
Cool project!
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.
That's really neat. TIL.
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. :)
I'm not sure if this is the same technology, but regardless it's also cool: https://www.adafruit.com/product/1897
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.
[0] https://www.microchip.com/en-us/product/47L04
Thanks to both of you for bringing FRAM onto my radar!
I want to see someone convert one of those cheap projection clocks like this: https://www.homedepot.com/p/La-Crosse-Technology-5-in-Color-...
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/
If you're looking for something low brightness, I made one: https://www.stavros.io/posts/i-made-another-little-bedside-c...
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.
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.
+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.
Undermining the spirit of HN: By the time you’ve spent a few hours hacking away and bought any parts, that price is probably not too bad.
That's assuming you don't like hacking and would pay to not have to do it, which is generally not the case around here.
I’m think you can go further than that.
Days spent modifying cheap electronics is absolutely encouraged.
Buy the premade thing and hack something new.
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.
On that note: Converting €0 scrap into €400 video editing deck. https://www.youtube.com/shorts/KlWYC6mzVkQ
https://github.com/timonoko/Jogwheel
What a great idea. Legacy VCR controls upcycled for digital control! There's a lot of those old decks and LANC deck controllers lying around...
If you like this but don't want to get your hands as dirty, have a look at the Crazy Clock: https://www.tindie.com/products/nsayer/crazy-clock/
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...
You don't already do this with the NTP servers under your control?
If I had any NTP servers under my control, I probably would :)
Yes I'd have to convince Apple to play along on the iPhone and watch.
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!
How different is this to something you can buy like: https://www.amazon.com/ihreesy-Movement-Mechanism-Silent-Rep... ?
Well I notice that one is $36
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.
GPS isn't too hard, either.
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.)
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.
[0] - https://www.nist.gov/pml/time-and-frequency-division/time-di...
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
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
There are time signal stations all over the world, WWV is the most prominent US one https://en.wikipedia.org/wiki/WWV_(radio_station)
https://en.wikipedia.org/wiki/Radio_clock#List_of_radio_time...
If you think this is overengineered, I built one that will really offend you: https://github.com/jcalvinowens/wallclock :)
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.
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).
Googled "radio controlled clock" and seeing results from $20-$200, lots of inconsistency in what the product is.
These are usually marked as "atomic time" or "atomic clock" here in the US.
How does this keep track with DST?
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...
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.
Yeah, project needs a time-lapse video of their analogue DST transition event.
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.
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:
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.
lol i just bought this same clock cuz it was cheap and had no tech except the clock
I'm currently making something similar but using a BKA30D-R5 (a dual stepper motor used in car dashboards) and a hall sensor to zero the hands.
Yes, this project screams for some kind of sensor to detect when the hands reach some known position.
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.
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.
It'd be interesting to see the logs or data on how the physical movement falls out of sync. It probably even correlates with temperature and humidity.
Keeping time in terms of hash-sigs that are in 64 bit architecture instance.
Keeping the clock analog was clutch.
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.
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.
https://github.com/dheera/shadow-clock/
I remember seeing this on Hackaday. Very clever idea!
See also the "Ventinari clock": https://github.com/iracigt/ventinari-clock https://www.akafugu.jp/posts/products/vetinariclock/
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.
Now do a old fashioned mechanical pendulum clock. You'd probably need some kind of worm gear drive to move the pendulum bob up and down.
That is very cool.
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.
https://www.amazon.com/Sharp-Digital-Alarm-AccuSet-Automatic...
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.
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.
You want a self-setting radio clock that receives the LF broadcast from WWVB.
There was a kerfuffle a few years back about the funding for the station being cut, but luckily that did not come to be.
Great idea!
If you want a pure software solution get yourself an old atomic clock and https://github.com/jj1bdx/WWV play some tunes to set the time.
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?
An ESP32-C3 Super Mini can be found for below 3$ (cheapest I had was 1.58€). Since the original clock is 3.88$, it can't be that much cheaper.
You often have a radio clock source like DCF77 that all those radio controlled clocks use
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.)
Home assistant has pretty good BLE capabilities. But honestly, as has already been pointed out wifi is already really cheap.