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