KYLE_K
Return to Grid
Project Dossier

Launch Countdown Clock

Timeline
Dec 2025
Category
Full Stack Dev
IMG_01.RAW
A GIF showing the automated reset sequence and digit-by-digit programming of a new launch time.

System Modules

ESP32
Arduino
NeoPixels
IR Protocols
Web Server
JSON API

T-Minus

An ESP32-powered launch countdown controller that transforms a consumer wall clock into an autonomous mission control display, complete with ambient lighting that shifts as liftoff approaches.


Overview

T-Minus is a hardware project that turns a 36-inch digital wall clock into a self-updating rocket launch countdown display. An ESP32 hidden inside the clock fetches upcoming launch data from public APIs, programs the countdown via infrared commands, and drives NeoPixel strips that wash the wall in colors corresponding to time-to-launch. The result is a piece of functional decor that provides ambient awareness of humanity's expanding presence in space.

The project emerged from a simple desire: I wanted a nice countdown clock for my home office. Commercial options either required manual programming, lacked ambient lighting, or didn't exist at this scale. So I built one.

Installed Clock The final installation: the 36-inch clock mounted on the wall with no visible wiring.


Technical Architecture

Hardware Foundation

The display is an Ivation 36-inch digital wall clock with 5.25-inch LED digits—large enough to read from across the room and visually reminiscent of mission control displays. Beneath the clock housing, two NeoPixel LED strips face downward, creating a smooth wall-wash effect rather than visible point sources.

Inside, an ESP32 microcontroller handles all intelligence: WiFi connectivity, API requests, NTP time synchronization, IR transmission, and LED animation. The original clock's remote control functionality becomes the interface through which the ESP32 puppets the display.

ESP32 Integration The ESP32 board connected to the clock for bench testing

The IR Puppet Master

My initial approach was to reverse-engineer the communication protocol between the clock's onboard MCU and its display driver—intercept the signals, understand the protocol, and inject my own commands. After considerable time with a logic analyzer, I couldn't nail down the specifications reliably.

Original MCU Close-up of the clock's original microcontroller, which I initially investigated for direct protocol injection.

The pivot was realizing I didn't need to speak the display's native language. I just needed to speak "remote control."

By connecting the ESP32 to an IR LED pointed at the clock's receiver, I recorded the NEC-protocol signals for every button on the original remote. The resulting library lets the microcontroller simulate any button press: mode switches, number entry (0-9), start, stop, brightness adjustments. To set a countdown, the system navigates to timer mode, types in the HH:MM:SS duration digit by digit, confirms the entry, and starts the clock.

The trickiest part was reliability. Consumer IR remotes assume a human is watching and will retry if something doesn't work. An autonomous system needs determinism. I implemented a reset sequence that brings the clock into a known state before any programming operation—ensuring the display is in the expected mode before the ESP32 starts "typing."

Reset and Programming Sequence The automated sequence: resetting to a known state followed by digit-by-digit programming of the T-0 time.

Live Launch Integration

The ESP32 connects to fdo.rocketlaunch.live to fetch upcoming launches, parsing JSON responses to extract mission name, launch provider, vehicle, and—critically—the NET (No Earlier Than) timestamp. NTP synchronization keeps the internal clock accurate, and simple arithmetic determines how many seconds until T-0.

When a launch completes (or scrubs), the system automatically fetches the next one. On boot, it does the same. The clock is fully autonomous once powered.


T-Minus LED Visualizer

The NeoPixel strips provide ambient context without requiring you to read the digits. The color palette shifts based on proximity to liftoff:

Time to LaunchModeDescription
> 60 minutesDeep SpaceCalm blue with subtle twinkling stars
30–60 minutesBreathingSmooth purple pulse, slowly intensifying
1–30 minutesRhythmic FillOrange heartbeat effect that progressively fills the strip
< 60 secondsIntense PulseRapid red flashing and strobes
T-0Exhaust Plume10-second gold/red flickering animation

The effects are specifically tuned for wall-wash aesthetics. Direct LED viewing produces harsh color transitions; bouncing light off a wall requires careful color blending to avoid muddy intermediate tones.


Web Control Interface

The ESP32 hosts a local web server accessible from any device on the same network. The dashboard provides:

  • System status: Current countdown target, mission name, time to launch
  • Manual fetch: Trigger an immediate API refresh
  • LED control: Override automatic modes, adjust brightness
  • Timer control: Manual start/stop and time entry for testing

Hardware Setup The ESP32 and IR transmitter system powered on and ready for integration.


Living With It

The clock now sits above my office TV, and I've found it changes my relationship with the launch industry in subtle ways. I notice when we're in a busy period—sometimes the countdown rarely exceeds T-5 hours between missions. I'm looking forward to watching cadence continue to increase over the coming year.

It's also become a natural prompt to actually watch launches. When the wall starts glowing red, I know it's time to pull up a livestream.

Night Testing The clock glowing with a deep blue 'Deep Space' mode during night testing.


Results

T-Minus demonstrates that interesting hardware projects don't require building everything from scratch. A $60 consumer clock, an ESP32, some LED strips, and creative use of IR protocols produced something that would cost significantly more commercially—if it existed at all.

The project combines live API integration, precise timing, hardware automation via unconventional interfaces, and ambient visualization into a single cohesive artifact that earns its place on the wall.