GPS Clock

July 24, 2024

clock

Introduction

I created this simple clock with a straightforward goal: I'd never have to set the time on it manually. Not when the battery ran out (it doesn't have a battery), not when daylight savings time started or stopped.

Time Source

Since I didn't want to set the time manually, I had a few options for the sources of time, including Wi-Fi and GPS. I ruled out Wi-Fi because I wanted the clock to be a reliable, self-contained device that isn't reliant on anything (such as a particular Wi-Fi network) that may be unavailable at times.

Since the many GPS satellite constellations going offline is quite unlikely, GPS is a better choice. Using this, I'd be able to power up the clock anywhere in the world and have it automatically grab the time accurately.

Electronics

For the display, I chose a 8x32 LED matrix display based on the MAX7219, and for the GPS module, I chose a cheap U-blox NEO-6M breakout module. For the microcontroller I went with an ESP8266 (Wemos D1 Mini) due to its compact size.

Quick note regarding the GPS module: I purchased this device for around $10, and for this price, it's almost definitely a fake. The quality is also slightly questionable: the breakout board contains a small coin-cell battery that is used to hot-start the NEO-6M by storing satellite information for a duration after power off, on the board I purchased, this battery was definitely not functional. This blogpost covers this issue of fake GPS modules, and how they likely have worse performance compared to genuine modules.

The only aspect of GPS performance that matters for this project is how quickly the module is able to get the first GPS fix (it displays a loading screen during this initial wait period). If you find that this period is too long (which might particularly be an issue if the clock is being used indoors away from windows where GPS signals will be weaker), you may want to spend a bit more on a genuine GPS module.

The clock also contains two pushbuttons which are used to adjust the display brightness.

These components should be connected together as shown in this schematic.

clock schematic

And this is what this simple circuit looks like when implemented.

clock internals

Conclusion

After some extended use, this clock has been working great. Having a (non internet-connected) clock that keeps time perfectly, and automatically changes to match daylight savings time, feels a little bit magical.

If you're interested in building something similar, as always, all links and files are available below.

Downloads