Bill of Materials
Everything you need to build the clock. Buy components before starting the wiring section.
Components
| Component | Qty | Notes | Where to buy |
|---|---|---|---|
| ESP32-S3-DevKitC-1 (ESP32-S3-WROOM-2, 32 MB flash / 16 MB PSRAM) | 1 | N32R16 variant dev board. 32 MB flash provides room for the LittleFS audio partition and future image/font assets. 16 MB PSRAM is more than sufficient for the e-ink frame buffer. | Mouser, Digikey, AliExpress |
| GDEY042T81-FL02 | 1 | 4.2" e-ink display with front light. SSD1683 driver. | Good Display |
| ESP32-FTS02 adapter | 1 | Adapter board for the GDEY042T81-FL02 FPC connector. Order from the same supplier as the display. | Good Display |
| DS3231 RTC module | 1 | Real-time clock with I2C interface and temperature-compensated oscillator. | Adafruit, DigiKey |
| MAX98357A I2S amp breakout | 1 | Class-D amplifier, I2S input, 3 W output. | Adafruit, SparkFun |
| Speaker, 4Ω 3W | 1 | 40 mm or 50 mm diameter fits most enclosures well. | Adafruit, AliExpress |
| Tactile push buttons | 4 | 6×6 mm momentary switch, through-hole. Buy extra — they're cheap. | Any electronics supplier |
| LEDs | 3 | One each: red, green, blue. 3 mm or 5 mm, standard through-hole. | Any electronics supplier |
| Resistors (LEDs) | 3 | 1× 220 Ω (red LED), 2× 100 Ω (green + blue LEDs). 1/4 W. | Any electronics supplier |
| APDS-9960 proximity sensor breakout | 1 | Proximity sensor using a built-in 940 nm IR LED. Detects a hand a few inches away to wake the front light. Runs on 3.3V; I2C interface. | Adafruit, AliExpress |
| Resistors (voltage divider) | 2 | 2× 100 kΩ, 1/4 W. USB-present detection divider: USB 5V → GPIO41. | Any electronics supplier |
| ATtiny85 (DIP-8) | 1 | Backup alarm microcontroller. Runs at 1.8–5.5V; deep sleep ~0.1 µA. Wakes on INT0 interrupt from DS3231 SQW pin when USB power is absent. | Mouser, Digikey, AliExpress |
| 2× AA battery holder | 1 | Through-hole, wire leads. Powers the ATtiny backup circuit (3V). | Amazon, AliExpress |
| AA batteries | 2 | Alkaline. The backup circuit draws ~0.1 µA in sleep; shelf life of the batteries is the practical limit. | Anywhere |
| Active piezo buzzer (3V) | 1 | Must be an active buzzer (built-in oscillator — just apply DC to get a tone). 3V rated. Used by ATtiny for USB-power-lost alarm. | Amazon, AliExpress |
| PN2222 NPN transistor (TO-92) | 1 | Drives the piezo buzzer from the ATtiny output pin. | Any electronics supplier |
| Resistors (ATtiny pull-ups) | 2 | 2× 10 kΩ, 1/4 W. External pull-ups for SNOOZE and DISMISS button lines on the ATtiny side (ESP32 internal pull-ups are inactive when ESP32 has no power). | Any electronics supplier |
| Pin headers, male 2.54 mm | 1 pack | For connecting the adapter board and breakouts. | Amazon, AliExpress |
| Jumper wires, male-to-male | 1 pack | 20 cm works well for breadboard prototyping. | Amazon |
| Breadboard (830 tie points) | 1 | Half-size (400 tie points) works if space is tight. | Amazon |
| USB-C cable | 1 | For flashing firmware and powering the device. | Anywhere |
Tools
| Tool | Notes |
|---|---|
| Multimeter | A basic $10 unit is fine. You need continuity test and DC voltage measurement. |
| Soldering iron | Not needed for breadboard prototyping, required for the final perfboard build. |
| Wire stripper | For the speaker wires and any hook-up wire. |
| Computer with USB-A or USB-C port | For running ESP-IDF and flashing firmware. |
Optional but Helpful
| Item | Why |
|---|---|
| Logic analyser (e.g. Saleae or clone) | Makes debugging SPI/I2C/I2S problems much faster |
| Anti-static mat or wrist strap | Protects the ESP32-S3 from ESD damage |
| Helping hands / PCB holder | Holds the board while you solder |
| Heat-shrink tubing | Insulates soldered speaker connections |
Lead Time Notes
The GDEY042T81-FL02 and ESP32-FTS02 adapter must be ordered from Good Display. Shipping from China typically takes 2–4 weeks. Order these first.
The ESP32-S3-DevKitC-1 is stocked at Mouser and Digikey for domestic orders.
Everything else can be sourced domestically (Amazon, Mouser, AliExpress) and arrives in days.