
-
Analog LED Display
- 60 green LEDs for minutes/seconds (minute accumulation, second flash).
- 12+12 bicolor LEDs for hours (day/night colors, only one lit at a time).
- Central 7×13 LED matrix for scrolling text.
-
Scrolling Matrix
- Shows current time H:MM.SS without leading zero (e.g., 8:05.30).
- In compass mode: shows azimuth and direction (e.g., 123° N).
- Low battery warning: LOW.
- Test mode: SDYWATCH V1.0 (triggered by both buttons).
-
Buttons (PB1, PB2)
- PB1: force deep sleep (single press) or cancel alarm.
- PB2 long press (500ms): switch between clock / compass mode.
- Both buttons simultaneously: test vibration + show test message.
-
Vibration Motor
- Pulse on alarm, NTP success, button test. Configurable duration.
-
Accelerometer (LIS3DH)
- Detects single taps (threshold adjustable).
- Tap resets inactivity timer (prevents sleep while moving).
-
Compass (QMC5883L)
- Calibrated azimuth reading.
- Displays angle and 8‑point direction on matrix; red hour LED points north.
-
Battery Monitoring (ADC1_CH7, GPIO34)
- Measures voltage every 10s with median filter (3 samples).
- Low battery threshold (ADC < 1900 mV ≈ 3.2 V): shows LOW and disables other LEDs.
- External power threshold (ADC ≥ 2200 mV ≈ 3.7 V): disables auto sleep.
-
NTP Time Synchronisation
- On cold boot, connects to Wi‑Fi, obtains UTC, sets RTC.
- Countdown of remaining attempts (e.g., 40) shown on matrix.
- Vibrates on success, Wi‑Fi turned off afterwards.
- On wake‑up from sleep, NTP is skipped (RTC time used).
-
Deep Sleep
- Automatic sleep after 20 seconds of inactivity (except when on external power).
- Wake‑up by PB1 (or accelerometer, configurable).
- Saves current mode (clock/compass) in RTC memory.
-
Three Alarms
- Configurable via UART console.
- Each alarm has hour, minute, message, enable/disable flag.
- When triggered: message scrolls on matrix, vibration pulses every 10s for 1 minute.
- Cancel by PB1 or after the minute ends.
-
UART Console (115200 baud)
- Built‑in REPL with commands:
- alarm_show – show all alarms
- alarm_set <1..3> <hour> <min> [message] – set alarm time and optional message
- alarm_enable <1..3> <0/1> – enable/disable alarm
- help – list all commands
- Built‑in REPL with commands:
-
Configurable Brightness
- Separate LED_ON_TIME_MINUTE, LED_ON_TIME_HOUR, LED_ON_TIME_MATRIX
- Refresh rate ≈ 60 Hz.