Skip to main content

First Power-On Checklist

Before writing the full firmware, verify each component is wired correctly using simple test sketches. Work through this list in order — each step confirms one subsystem before you build on it.


Visual Inspection (Do This Before Every Power-On)

  • No bare wire ends touching adjacent pins or exposed metal
  • VCC wires connected to the correct voltage rail (3.3 V or 5 V)
  • GND wires connected (every component needs GND)
  • No component is mounted backwards (check any IC with a direction marker)
  • LittleFS partition image has been flashed (no physical SD card needed)

Step 1: ESP32 Standalone

Connect only the ESP32 to USB. Confirm the serial monitor outputs something and the blink example works. No other components connected.

Expected: LED blinks, serial prints Turning on LED / Turning off LED.


Step 2: DS3231 RTC

Wire the DS3231 (VCC, GND, SDA, SCL). Run the I2C scanner.

Expected:

Found device at 0x68

If nothing appears: measure VCC with a multimeter (should read ~3.3 V). Confirm SDA → GPIO21 and SCL → GPIO18. Check that pull-up resistors are on the breakout board.


Step 3: Buttons

Wire all 6 buttons (one pin to GPIO, other pin to GND). Run the polling test from the buttons wiring doc.

Expected: pressing each button prints its name.

If a button does not respond: check that both terminals of the button are wired (one to GPIO, one to GND). Measure GPIO voltage with a multimeter — should be ~3.3 V when not pressed and ~0 V when pressed.


Step 4: LittleFS Flash Partition

Flash the LittleFS image with esptool.py write_flash (see the Audio Storage page). Call lfs_init() and verify alarm.wav is accessible.

Expected: I (xxx) lfs: alarm.wav found, size N bytes in serial output.

If mount fails: confirm the lfs partition label matches the driver config. Confirm the image was flashed to the correct offset from partitions.csv.


Step 5: E-ink Display

Wire the display adapter (VCC, GND, MOSI, MISO, SCLK, CS, DC, RST, BUSY, FL_PWM). Run the RST + BUSY check from the display wiring doc.

Expected: Display ready printed to serial. Display shows a full white refresh.

If BUSY never goes LOW: check RST is connected to GPIO4. Check BUSY is connected to GPIO3. Verify VCC on the adapter board.


Step 6: MAX98357A + Speaker

Wire the amp (VIN=5V, GND, BCLK, LRCLK, DIN). Ensure alarm.wav is in the LittleFS partition at /lfs/alarms/alarm.wav. Run the audio playback test from the audio wiring doc.

Expected: alarm audio plays from the speaker.

If silent: check DIN → GPIO17 (not DOUT). Verify VIN is 5 V, not 3.3 V.


All Systems Go

If all six steps pass, every component is wired and communicating correctly. Proceed to the Firmware section to build the full application.


Moving to Perfboard

Once the breadboard prototype is working:

  1. Sketch the component layout — keep the display adapter close to the display ribbon cable; keep the amp close to the speaker terminals
  2. Solder components one at a time, re-testing at each step
  3. Use stranded silicone wire for speaker connections (it handles vibration better than solid-core wire)
  4. Apply a small amount of hot glue or strain relief to the display ribbon cable where it meets the adapter — the FPC connector is fragile and can crack with repeated bending