A clock that shows no hours, no minutes and no time zone should be useless. Turkish maker Görkem Bozkurt built one anyway, and his Internet Time Clock drifts by roughly ±0.6 units a year, which is better than half the Arduino clocks sitting on hobby benches right now.
The units are “.beats”, the leftovers of a 1998 marketing push by Swatch. The company sliced the day into 1,000 equal chunks of 86.4 seconds each, wrote them as @500 instead of 12:00, and anchored everything to Biel Mean Time (UTC+1) so a student in Manila and a student in Zurich would read the same number at the same instant. Nobody adopted it. Bozkurt rebuilt it in hardware anyway, and the result is a tidy little study in doing one job properly.
Inside the build
The brain is an ATmega328P, the same chip on an Arduino Uno, so the whole thing can be programmed with the Arduino IDE and a USB-serial adapter. Timekeeping is handed off to a DS3231 real-time clock over I2C (SDA and SCL, with the usual 4.7k pull-ups), backed by a lithium coin cell so the count survives an unplugged week. That DS3231 is the reason for the accuracy figure: it has a temperature-compensated crystal, unlike the bare 32.768 kHz cans that make DS1307 builds drift minutes per month.
The fun part is the display. Instead of a seven-segment module, Bozkurt hunted down an HPDL-1414 alphanumeric bubble display from the 1990s, which can render the @ symbol that the format depends on. It is thirsty, pulling about 150 mA, so power comes in over USB-C rather than a coin cell. Setting the time needs exactly one push button: hold to enter adjust mode, tap to step the .beats, hold again to fast-forward, then walk away and the value writes back to the RTC.
Build it yourself
Nothing here is exotic. An ATmega328P or a plain Uno, a DS3231 module, a CR2032 holder, one tactile switch and a display of your choice will get you a working prototype on a breadboard in an evening. The math is four lines: read UTC from the RTC, add one hour for BMT, convert seconds-since-midnight to .beats by dividing by 86.4, print with an @ in front. If you cannot source an HPDL-1414, a 4-digit TM1637 module works for the digits and you can silkscreen or 3D-print the @ next to it.
The gotcha most people hit is forgetting that the DS3231 stores wall time, not UTC offset, so set it to UTC once and do the +1 in code. Full build notes and the PCB are on Hackster.
Frequently Asked Questions
How does the clock keep such accurate time?
It offloads timekeeping to a DS3231 real-time clock, which uses a temperature-compensated crystal and a lithium coin-cell backup. That keeps drift to about plus or minus 0.6 .beats per year, far tighter than a DS1307 or a bare 32.768 kHz crystal on the ATmega328P itself.
What parts would I need to recreate it?
An ATmega328P or an Arduino Uno, a DS3231 module on I2C with 4.7k pull-ups, a CR2032 holder, one tactile push button, and a display. The HPDL-1414 bubble display is a 1990s part and hard to source, so a TM1637 4-digit module is the practical substitute. Budget for the roughly 150 mA the vintage display draws and power it over USB-C.
What will I learn if I build this?
You will practise I2C wiring and addressing, reading and writing registers on a real-time clock, handling button long-press versus short-press states in firmware, and converting between time bases in code. The .beat math (seconds since midnight divided by 86.4, offset to UTC+1) is a clean exercise in unit conversion, and the whole build is small enough to finish as a first-year lab or an ECE elective project.
