23 lines
1.6 KiB
Markdown
23 lines
1.6 KiB
Markdown
# Epic 1: Client Power Strategy
|
|
|
|
## Goal
|
|
Achieve a battery life measured in months for the ESP32-C6 Client.
|
|
|
|
## Context
|
|
The ESP32-C6 serves as a "dumb" E-ink display client connected to the Calendink Provider. It needs to wake up, check for new layout data, download it, refresh the E-ink panel, and go back to sleep.
|
|
The current standard method of deep sleep followed by full Wi-Fi re-association (DHCP negotiation) consumes ~100-300mA for multiple seconds, drastically limiting battery life for frequent updates.
|
|
|
|
## Scope & Technologies to Investigate
|
|
1. **Wi-Fi 6 Target Wake Time (TWT):**
|
|
- The ESP32-C6 supports 802.11ax TWT. TWT allows the device to negotiate specific wake-up schedules with the router, meaning the radio can sleep while the connection remains "active".
|
|
- Packets sent to the device during sleep are buffered by the AP until the Target Wake Time.
|
|
2. **ESP-PM (Power Management):**
|
|
- Combine TWT with `esp-pm` dynamic frequency scaling and automatic Light Sleep.
|
|
3. **Alternative - Hybrid ESP-NOW:**
|
|
- If TWT requires unsupported features on the specific home router, evaluate a fallback where the Client sends a sub-millisecond ESP-NOW broadcast to ask "Is there an update?". Full Wi-Fi is only enabled if the Provider replies "Yes".
|
|
|
|
## Next Steps to Start
|
|
1. Create a `tdd/client_power_strategy.md` in the Provider/Client workspace.
|
|
2. Develop a minimal test firmware on the C6 to enable TWT via the `esp_wifi_twt_setup` API, monitoring power draw and wake times using a multimeter or profile.
|
|
3. Document the final chosen power strategy pattern before modifying `main.cpp` or `epd.cpp`.
|