HALO CLOCK v1

Halo Clock design and code by Shae M Puckett 2025

❉ Set ◀ Prev ▶ Next

Set - Open Main Menu / Confirm
Prev / Next - Switch theme / Change Item

Hold down Set to return to clock mode from any other mode.

Quick Start

  1. Power the clock with a USB-C cable.
  2. Click the Set button three times (Menu -> Time -> Set Time).
  3. Click Next / Prev to set the hour, then click Set
  4. Click Next / Prev to set the minute, then click Set twice (skip seconds synch).
  5. Choose a starter theme by clicking Next / Prev.
  6. Hang the clock on a nail, get a cup of tea.
  7. Read the manual at your own pace to learn more.

Cheers, and thanks for supporting this functional artwork project.

Starter Theme Descriptions

Theme Name Appearance
1 Chrono-meter Hours: centre of wide dim white hand. Minutes: narrow bright white hand. Seconds: narrow orange hand.
2 Fast Blend Hours: edge of green gradient. Minutes: edge of red gradient. Seconds: fast sweeping blue gradient.
3 Dusk and Dawn Hours: edge of orange gradient. Minutes: edge of blue gradient. Seconds: narrow bright white hand.
4 Pastel Blend Hours: edge of cyan gradient. Minutes: edge of magenta gradient. Seconds: edge of yellow gradient.
5 Corona Hours: gap in warm white ring. Minutes and seconds are not shown.
6 Bubblegum Hours: gap in magenta ring. Minutes: bright white narrow hand. Seconds just a faint blue.
7 Metro Hours: gap in dim white ring. Minutes: bright white narrow hand. Seconds: narrow red hand.
8 Gemstone Hours: edge of emerald green gradient. Minutes: edge of pink sapphire gradient. Seconds: bright white hand.

Click the Set button in clock mode to show the Main Menu.

When accessing the menu system, hold the clock with buttons facing you, cord at the bottom. When the menu is visible, the clock hands are flipped left-to-right so the time reads properly from the back.

The top of the text display shows the name of the menu or setting you are viewing, alternating with extra information and button functions.

The currently selected option or value is shown below in larger text.

Click the Prev and Next buttons to switch among menu items.

Click Set to confirm your choice.

You can return to clock mode at any time by holding down the Set button.

Click the Set button in clock mode to show the Main Menu:

Ambient - adjust how the clock responds to ambient light
Brightness - adjust the overall halo brightness
Time - set the time (this is the first menu option shown)
Theme - modify the current clock theme
Setup - additional clock settings

Click Next / Prev to switch among options. Click Set to choose.

Ambient Menu

Constant - halo brightness is always the same
Auto - halo brightness adjusts to ambient room lighting
Off in Dark - Auto, and halo shuts off when room is dark
Dark Level - Set the ambient light level for dark mode

When the clock has shut off in a dark room, a faint pip is still shown at the hour hand position so you can see the time without affecting your night vision.

Brightness Menu

Choose among: Faint, Dim, Low, Moderate, Bright, Radiant, Dazzle, Maximum. Each twice as bright as the previous.

If the ambient light response setting allows automatic adjustment, brightness settings are not absolute: the halo tries to maintain a consistent visual impact as the room light level changes.

The halo cannot get bright enough to be visible in direct sun, but it should be readable in most indoor lighting conditions.

Time Menu

Set Time - set the current local time
Time Sync - open the Time Sync menu
Time Drift - change the daily time adjustment (see below)

Set Time

Time is set in a sequence of three pages: hour, minute, and seconds.

First, set the hour. The hour hand flashes; seconds are not shown. Prev / Next to change the hour; click Set to save.

Next, set the minutes. The minute hand flashes; seconds are not shown. Adjust the minutes with Prev / Next; click Set to save.

Last is seconds synchronization. Only the second hand is shown, flashing. Click Prev or Next to reset seconds to zero at the nearest minute. Click Set to return to the clock.

Time Sync

Off - Do not automatically synchronize
Daily - Synchronize once a day
Now - Synchronize immediately

Time Sync via NTP is a free service for synchronizing clocks to a global standard. To use this feature, you must have WiFi access set up on your clock, including an SSID and password to a local WiFi access point.

The clock cannot update the halo LEDs while synchronizing, so the hands will freeze in place and may show colour shifts. The display on the back of the clock will show the status of the synchronization attempt. Note that the WiFi antenna in the clock is small and may have trouble making a connection — including false reports of “bad password” — if your access point is far away.

Time Drift

The clock has a built-in, battery backed quartz crystal chronometer that keeps accurate time within several seconds a day. The amount of error varies dependent on ambient temperature and crystal manufacturing tolerances.

Like a fine watch’s regulator, the drift adjustment lets you make timekeeping more accurate. The drift amount is the number of seconds per day to add / subtract from the quartz chronometer’s timekeeping. For example, if you discover the clock is running about 10 seconds fast per day, set drift to –10 sec/day.

If you are using the Time Sync feature to synchronize the clock with the internet NTP service, the drift amount will be automatically set over the course of a few days.

Theme Menu

There are eight themes — combinations of hand sizes and colours — all editable. Click the Next and Prev buttons in clock mode to switch among the themes. To edit a theme, select it as the current theme, then enter the theme editor via the Main Menu.

The theme editor is a sequence of nine menu pages. Advance through them with the Set button. Your changes are immediately reflected in the clock hands shown. The menus repeat after you reach the last one so you can refine your theme without returning to the Main Menu.

To exit the theme editor and return to clock mode, hold the Set button.

Hands

Hours only - only hour hand shown
No seconds - hour and minute shown
Tick - second hand “ticks” once per second
Sweep - second hand “sweeps” smoothly
Fast Sweep - second hand sweeps out 10 seconds, not 60

Hour scale

24 hours - 24 hour scale, midnight at top, noon at bottom
12 hours - 12 hour scale, midnight and noon at top

Hand shape

There are 20 hand styles in three different types.

Hand - Lit hand, from narrow to wide.
Ring - Dark gap in lit ring, from narrow to wide
Gradient - Sharp edged gradient, from narrow to wide

Hand colour

There are 37 total colours in eight sets.

Primaries: red, yellow, green, cyan, blue, magenta
Greys: white, grey, charcoal
Purples: lavender, fuchsia, orchid, cerise
Reds: pink, carmine, pearl, persimmon, strawberry
Yellows: pumpkin, orange, canary, lemon, gold
Greens: chartreuse, emerald, sea foam, mint, teal
Blues: turquoise, celadon, arctic, sky, pacific, ultramarine
Tones: silver, sun (warm white), moon (cool white)

Editing note: When setting hand shape and colour, a single version of that hand is shown on the clock face, pointing at the 6 o’clock position. For lit hands, the centre of the lit area is the pointer. For dark hands, the centre of the dark area is the pointer. For gradient hands, the sharp edge is the pointer.

Design note: Hands overlap on the clock face. Hand colours use additive R/G/B mixing, like a computer display. Use contrasting colours, different hand sizes, and a mix of light and dark areas to achieve a readable clock.

Theme code

This page displays a code that describes the theme settings. This code can be used on haloclock.ca to set a clock to the same theme using the Flashnet feature.

A link that sets this theme can be created as follows: http://haloclock.ca/theme.html?code=##.##.##.##

Setup Menu

Flashnet - Flashnet settings

The Setup Menu only has one option at present, but is in place to allow room for additional menu items.

Flashnet and haloclock.ca

Flashnet is a simple way to transmit small amounts of data to the clock from a web browser screen, without using WiFi or Bluetooth. To receive this data, you must enable Flashnet on your clock.

The Flashnet menu has these options:

Locked - Flashnet is disabled
ID ### - Flashnet is enabled, only using the clock ID shown
Any ID - Flashnet is enabled; the clock accepts any data sent

Once enabled, use a web browser to open haloclock.ca — you can set accurate time, and provide WiFi credentials.

Receiving Flashnet Data

When Flashnet is enabled on your clock, and the correct clock ID is entered into the web page, hold the front of the clock (with the small ambient light sensor) near the bright circle on the page and click the Send button.

The circle will flash for a few seconds while it transmits data. If the clock is close enough to receive it clearly, when the flashing is done the halo will blink green and the display will tell you what has been received.

If the clock display shows “Try Again” or doesn’t respond at all, reposition the clock slightly closer or farther from the display, and try again. Be sure to hold the clock steady.

If the clock display shows “Not For Me,” the clock ID in the widget does not match the clock’s own ID (shown in the menu, and when the clock powers on). Correct the ID or use the Flashnet menu to enable Any ID. “Bad Data” indicates data corruption or a malformed data packet from the server.

System Management

Updating Firmware

To activate the update system, unplug the clock, hold down the Set button, then plug the clock in.

If you have previously set WiFi credentials (perhaps by using haloclock.ca, as above), the clock will attach to your local network and the halo will show a green pattern. The clock display will show you the clock’s IP address, as well as a halo###.local host name. Access either of these with a web browser to open the update page. (If the clock cannot log in to your network, it will create an access point as below.)

If no credentials are set, or the connection fails, the clock will create its own access point and the halo will show a blue pattern. Use the WiFi settings on your web browser’s device to connect to the access point shown on the display. When asked for a password, use “haloclock”. Your browser should automatically show the Update page; if not, open the address http://10.0.0.1

The Update web page can be used to enter WiFi credentials manually with your web browser. If you would prefer your clock to log in to your WiFi, enter your access point SSID and password into the form.

To update the firmware, click the file selection widget on the Update page, choose the firmware file on your device, and then click Update. The result will be shown.

To exit update mode, hold down the Set button; the clock will reboot. Or, power-cycle the clock.

Restoring the Clock to Factory State

The clock’s settings can be restored to factory state through the reset menu. To access it, unplug the clock then hold down all three buttons: Set, Next and Prev. Plug the clock in while these buttons are down, and the Reset Menu will appear, with a red pattern on the halo. Release the buttons.

Reset Menu

All - restore entire clock to factory state
Firmware - reset clock firmware, keeping all settings
Sensors - reset light sensor (if you have changed the façade)
Settings - reset themes and other user settings to original
Timekeeping - reset crystal drift settings to zero
Network - erase WiFi login credentials
Deep Sleep - (see below)
Reboot Now - returns to clock mode

The Reset menu will time out after 30 seconds of inactivity, returning to clock mode.

Deep Sleep

If you’re not going to use the clock for a while, or are shipping it somewhere, you can stop timekeeping to conserve backup battery power. Select this option in the Reset Menu, then unplug the clock at once. The next time the clock is plugged in, time will need to be set. (All other settings are retained.)

Troubleshooting

Backup Battery

If clock needs to be set each time it is plugged in, remove clock back as below, and replace the battery with a new lithium type CR2032, CR2025 or CR2016.

To remove the back, unplug the clock, remove the two small screws from the back of the clock, then slide the back down off the clips at the top.

Be careful: the display is attached to the back of the clock, and short cables lead to the circuit board on the clock body. Ideally, do not detach the cables when changing the battery.

To remove the battery, use a flat-bladed screwdriver or other small instrument to pull the clip aside, then lift the battery out. Insert the new battery flat side up under the edge of the clip, and press the other side of the battery down into the holder until it clicks into place.

To replace the clock back, ensure the display cables are routed loosely, align the hang hole with 12 o’clock and the cord hole with 6 o’clock (the USB cable position), slide the back up into the clips at the top, align the screw holes, and replace the screws.

USB Cable Requirements

The Halo Clock uses a USB C power cable. It can draw up to 5 Watts of power at its brightest, well within the specifications of properly made USB cables. If the clock behaves erratically, try changing cables or power ports, especially when using longer cables. (Some USB power banks may cut power unexpectedly, thinking nothing is attached. These are poorly designed.)

Clock Brightness

If the clock seems too bright or too dark despite adjustment in the Brightness menu, the ambient light sensor may need to be recalibrated. Using the Reset Menu, reset Sensors, then restart the clock. Now hold the light sensor on the front of the clock up to a lightbulb or a bright window for 10–15 seconds, so it re-learns what “bright” is.

Error Conditions

The clock display will report most hardware / software errors, pause for a while, then reset in an attempt to keep being a clock.

Thanks To

Stewart Russell, for inspiration and technical help. MicroPython team for an acceptable development platform. You for your support of this functional artwork.