Weather display, take two: enclosure and firmware notes
Follow-up to the weekend weather display project — it no longer looks like a breadboard experiment on my desk, and the firmware has settled down enough to write up properly.
Parts list
- ESP32-C3 dev board (Wi-Fi, deep sleep support)
- 4.2" e-ink panel, SPI
- 1000mAh LiPo + basic charge/boost module
- 3D-printed two-piece enclosure (PETG, printed in a matte black)
Total cost was well under what a commercial e-ink display would run, and most of that was the panel itself.
Firmware
The loop is intentionally boring: wake up, connect to Wi-Fi, hit a weather API, render to the e-ink buffer, go back to deep sleep. No web server, no persistent connection, nothing to keep alive.
void loop() {
connectWifi();
WeatherData data = fetchForecast();
renderToDisplay(data);
esp_sleep_enable_timer_wakeup(HOUR_IN_US);
esp_deep_sleep_start();
}
Deep sleep between refreshes is what makes the battery estimate realistic — active Wi-Fi and the e-ink refresh together only draw meaningful current for a few seconds each hour.
What’s left
Battery life is still an estimate rather than a measurement — I’ll know more once it’s been running unattended for a couple of weeks. If it holds up, next on the list is a second unit for the kitchen with a shorter refresh interval.