0. Introduction

Clock 24 is my first comprehensive project that combines woodworking, electronics design, and coding into one build.

Since this is still a work in progress, the build details, wiring, and code are far from final and are subject to change as I refine the design.

I would be happy to hear any feedback, advice, or suggestions you might have to help me improve it.

1. The Build: Frame & Display

I wanted a simple and modern look

  • The Frame: I designed a custom multi-level profile to house the mechanism, glass, and backing. The profile was milled from wood and assembled by a professional framer with 45° cuts. The external dimensions are 53.3 cm x 73.3 cm.
  • The Face: The front panel is a simple sheet of plexiglass, cut to size and drilled manually to accommodate the 24 motor shafts. It is painted with a matte anthracite spray to minimize reflections and maximize contrast with the white hands.
  • The Hands: I custom designed and printed the 48 hands.

2. The Mechanics: Motors & "Parking"

  • Actuators: The clock uses 24 BKA30D-R5C dual stepper motors (clones of the VID28-05). These are crucial as they allow for continuous 360° rotation.
  • Visual Logic: As the original ClockClock 24 does, when a quadrant is not needed to form a digit (e.g., the empty space next to a "1"), the hands move to a "parking position" (diagonal 45°).

3. Electronics: Custom PCBs & Modular Architecture

To controlling the 48 stepper motors I designed two types of custom PCBs:

  • Driver Boards (x12): Each board manages two dual-motors (4 hands) using the AX1201728SG stepper driver chip.
  • Distribution/Slave Boards (x2): These act as "motherboards" for each side of the clock. Each one hosts an Arduino Mega 2560 and connects to 6 Driver Boards via IDC cables.

4. The "Open-Loop" Challenge & Power Backup

The system operates in open-loop: there are no Hall sensors or magnets to detect the absolute position of the hands. The software assumes the hands are where it told them to be.

  • Manual Homing: On the very first startup, all 48 hands must be manually positioned vertically (12 o'clock).
  • UPS Solution: To prevent the clock from losing calibration during a power outage, the two Arduino Mega Slaves are powered via Adafruit PowerBoost 500C modules acting as a UPS (battery backup). This ensures the Slaves never lose their memory of the hands' positions, even if the main wall power (powering the ESP32 Master) goes down.

5. Software Architecture

The code is split into a Master/Slave configuration:

  • Master (ESP32): Handles WiFi, NTP time syncing and runs a TCP/Telnet server for remote commands. It sends formatted time strings to the slaves via serial.
  • Slaves (Arduino Mega x2): The workload is split vertically.
    • Left Slave: Handles the first hour digit and first minute digit.
    • Right Slave: Handles the second hour digit and second minute digit.
    • They use a lookup table to translate digits (0-9) into specific target angles for the 12 hands composing that digit.

6. Maintenance App: "24Client"

I am currently developing a dedicated Android app named 24Client to serve as a remote control and maintenance tool. It connects to the Master via Telnet and will provide a UI to select specific quadrants and hands. Its primary purpose is fine-tuning:

  1. Disaster Recovery: If the batteries completely drain, the system loses its zero position. The app will allow for re-calibrating the hands remotely without disassembling the frame.
  2. Minor Adjustments: It allows for correcting small mechanical misalignments or "drift" that might occur over time, ensuring the display remains as sharp as possible.