Skip to main content

What We Are Building

A bedside alarm clock built from individual electronic components, running custom firmware on an ESP32-S3 microcontroller.


Finished Device Behaviour

  • Displays the time on a 4.2" e-ink screen that retains its image without power
  • Syncs time automatically over WiFi using NTP on every boot
  • Keeps accurate time even without WiFi, using a dedicated real-time clock (RTC) chip with its own coin-cell battery backup
  • Plays alarm audio from a WAV file stored in flash memory
  • Physical buttons let you set alarms, adjust settings, snooze, and dismiss without touching a phone
  • Programmable over WiFi — the ESP32 exposes a simple web interface for setting alarms and uploading new audio files
  • USB-C powered — plug into any USB-C charger; a discrete AA-battery backup circuit sounds an alarm even if USB power is lost

Data Flow


Physical Layout

The clock consists of:

  1. ESP32-S3-DevKitC-1 — the "brain"; handles WiFi, runs the firmware, drives all peripherals. Alarm audio lives in its flash memory.
  2. GDEY042T81-FL02 — the e-ink display, mounted face-forward
  3. ESP32-FTS02 adapter — clips the display's 24-pin FPC connector to standard headers
  4. DS3231 RTC module — keeps time when power is off
  5. MAX98357A breakout — amplifies the digital audio signal to drive a speaker
  6. APDS-9960 breakout — detects motion to enable the frontlight at nighttime
  7. 4× tactile buttons — set into the enclosure for physical control
  8. 3× LEDs — user programmable functions, 3 different colors
  9. ATtiny85 + AA batteries + piezo buzzer — discrete backup circuit; sounds an alarm independently if USB power is lost
  10. USB-C cable — power input

Everything connects to the ESP32 with jumper wires during prototyping. The final build consolidates everything onto perfboard inside a 3D-printed enclosure. Enclosure design is out of scope for this guide.


What This Guide Does Not Cover

  • Enclosure design and printing — noted in the Assembly section but not detailed
  • PCB design — the final build uses perfboard; KiCad schematics are not included
  • OTA firmware updates — the WiFi interface allows alarm configuration and audio file updates but not reflashing; use the USB-C port for firmware updates