Skip to content
J jakes.cloud All projects
Back to projects
Embedded Live 2026-06

Clockbox: WiFi-Connected Alarm Clock

A WiFi-enabled alarm clock and weather display built around a custom ESP32 PCB that I designed, had fabricated, assembled, and programmed.

ESP32 ESP-IDF KiCad HUB75 C / C++ WiFi

Overview

Clockbox is a network-connected alarm clock built around an ESP32-WROOM-32E and a 64x32 HUB75 RGB LED matrix. I designed the custom PCB, sent it out for fabrication, assembled the board, and developed the firmware that turns it into a configurable clock, alarm, and weather display.

The current version runs on ESP-IDF 5.5 and is a ground-up port of the original Arduino-based firmware. Moving to ESP-IDF gave the project a more structured architecture and made room for features such as robust WiFi provisioning, over-the-air updates, persistent configuration, and a full browser-based control panel.

Custom hardware

The PCB brings the complete device together in a purpose-built design instead of relying on a collection of development boards. The ESP32 directly controls the matrix panel and the clock's local inputs and indicators.

Assembled Clockbox PCB
Assembled Clockbox PCB used for testing and demonstration.

Display and controls

The LED matrix supports three layouts: time with scrolling weather, a large time-only view, and time with the current date. Physical buttons provide the most common controls without requiring a phone, while the web interface exposes deeper configuration.

Connected setup and configuration

Clockbox is designed to be configured after installation without rebuilding or reflashing firmware. Once connected, its single-page web interface is available on the local network through mDNS and provides controls for the display, alarms, presets, weather, WiFi, location, and firmware updates.

Firmware architecture

The firmware is divided into focused modules for display rendering, settings, alarms, networking, time synchronization, weather, geolocation, buttons, audio feedback, RTC access, and the web API. The display loop runs independently from network activity so weather requests and browser traffic do not interrupt animation or scrolling text.

A thin C++ wrapper integrates the HUB75 DMA driver with an otherwise C-focused ESP-IDF application. Custom text rendering supports Adafruit-GFX font data without pulling in the Arduino framework, keeping the firmware native to ESP-IDF while retaining a useful font ecosystem.

Persistence and recovery

Runtime settings are stored in a versioned NVS blob protected by a CRC32. Writes are debounced for five seconds so rapid button presses or web edits are coalesced into a single flash operation. Explicit migration paths preserve existing alarms, presets, network credentials, and display settings as the configuration format evolves.

Outcome

Clockbox has grown from an Arduino prototype into a complete embedded product built on hardware and firmware I control end to end. The project combines PCB design, board assembly, real-time display work, network services, persistent configuration, and a web-based user experience in one device that I use as a practical clock and information display.