June 6, 2026
Description
INTRODUCING THE
ALWAYS RIGHT. AUTOMAGICALLY.
The SPACE CLOCK sets itself using GPS signals to achieve microsecond accuracy of up to one millionth of a second. Not only is the SPACE CLOCK a physical clock, but it also acts as an NTP server (network time server) allowing you to sync precise time across all of your network devices.
PPS (Pulse Per Second) signal from GPS satellites which marks the exact start of a secondGPS NEMA sentences which contain data including UTC Time, Latitude / Longitude and moreNTP Server for syncing network timeWeb interface with status page and configuration options (24-hour Format, Timezone, Daylight Savings)hotspot with web interface to connect to nearby WiFi networksFirmware written in MicroPython includes logic for GPS, Clock, Web interface, NTP server and more.
https://github.com/koga73/space-clock
The SPACE CLOCK can operate in modes with or without a WiFi connection.
First boot and when no WiFi credentials are present will simply show the current time.
----rising / falling animationTo connect to WiFI hold the bottom button for 3 seconds to reboot into AP Mode
If WiFi credentials are available it will attempt to connect, start web/ntp servers and then display the current time.
If WiFi fails to connect the device will reboot
----wave animationIP address oncerising / falling animationYou can view the status page when connected via WiFi Mode
----SCANspace_clock)You can view the connect to wifi page when connected via AP Mode
The SPACE CLOCK operates on UTC Time and uses the following localized defaults which can be changed:
You can change these settings through the configuration page when connected via WiFi Mode or AP Mode
The SPACE CLOCK supports displaying localized time in either 12-hour AM/PM format or 24-hour GMT/Military format
To quickly change between 12-hour / 24-hour formats just press the bottom button once
You can change this setting and more through the web interface when connected via WiFi Mode or AP Mode.
GPS satellites transmit time in UTC, as such you can change the localized timezone.
Timezone can be set through the following selections in the web interface:
GPS satellites transmit time in UTC, as such you can apply Daylight Savings with regional rules.
Daylight Savings rules can be applied through the following selections in the web interface:
You can reboot the device by clicking the "Reboot" button in the web interface.
You can factory reset the device by clicking the "Reset" button in the web interface. This will delete your preferences and reset the device back to defaults.
This project can be built for around ~$50 at the time of writing
For the most accurate time, there is a small modification needed to the Waveshare L76K board which enables a PPS (Pulse Per Second) signal interrupt on Pin 16.
Follow the directions included in Waveshare's documentation, but essentially on the back of the board you just need to solder a 0O ohm resistor or wire across the pads for R20.
The firmware is written in MicroPython, as such you will need to follow the instructions on flashing the MicroPython runtime.
Then follow the guide to Install dependencies and official VSCode extension
To upload the code to the Pico through VSCode just open the command palette (CTRL + SHIFT + P) and select MicroPico: Upload project to Pico
I wanted the ability to power the Pico via a USB-C breakout board and it was easy enough. Just connect the VBUS/VCC + GND on the breakout board to VSYS on the Pico Pin 39 and GND to Pin 38
You should put a Schottky Diode between external power and VSYS to prevent issues if powered via Micro-USB and Externally at the same time
Since this is a clock, the good ole 4-digit 7-segment display makes sense!
Wiring:
Pin 8Pin 36Pin 6Pin 7On my solderable breadboard I connected row 36 with row 5. On the female header I removed the pin on row 5. This allows for the 3V3(OUT) to be next to the other pins 6/7/8 needed for display.
The button on the bottom allows for short presses such as to change between 12-hour / 24-hour format as well as long holds to toggle reboot of modes WiFi / AP
One leg of the button should go to GND Pin 13 / Pin 28 and the other leg should attach to GP20 Pin 26
The case consists of three parts, the display mount, the bottom plate and the top cover.
Use the appropriate M2/M3 screws listed in the bill-of-materials to mount the boards to the respective case pieces.
Inside the case cover is a pre-formed 0.25in cutout for an SMA connector if you want an external GPS antenna just can drill this out with a 0.25in forstner drill bit.
If you do not want an external GPS antenna you can place a small ceramic GPS antenna internally. I stuck mine to the backside of the female headers with 3M VHB tape.
Solder connections on the mini solderable breadboard as specified. Connect the USB-C breakout board and Display as specified. Plug the Waveshare L76K into the solderable breadboard female headers and then the Pico into the Waveshare female headers
If you make your own I would love to see it, post as a make or remix!
This is my entry for the #PicoBuilders challenge hosted by Thingiverse in collaboration with the Rasperry Pi Foundation
License:
Creative Commons - Attribution - Non-Commercial - Share Alike