← /research

E-Ink Training Display

Reading · Working Document Created Jan 4, 2025
Project: eink-training-display
hardwareraspberry-pie-inkside-project

A calm, intentional physical device that surfaces meaningful information without demanding attention. Design like a printed page, not a digital screen.

Core Vision

Three views, one philosophy:

ViewPurposeUpdates
Training LogToday’s workout, streak, next sessionOn-demand + after workouts
State of WorldDate, weather, calendar, unread itemsEvery 15-30 min
Focus ModeCurrent task, timer, minimal distractionsManual toggle

Hardware Stack

  • Compute: Raspberry Pi Zero 2 W (quad-core ARM, 512MB, WiFi)
  • Display: Waveshare 7.5” E-Paper V2 (800×480, B/W, ~4s full / ~0.4s partial refresh)
  • RTC: DS3231 (±2ppm accuracy, CR2032 backup, I2C @ 0x68)
  • Input: 3× tactile buttons (prev/next/action)

Total power: ~0.6W average. Display draws near-zero when not refreshing.

Key Design Decisions

Why Pi Zero 2 W over ESP32? Full Linux + Python ecosystem wins for development speed. ESP32’s deep sleep advantage matters more for battery projects — this is wall-powered.

Why 7.5” B/W over tri-color? Tri-color is 26s refresh vs 4s. That’s the difference between responsive and frustrating.

Why RTC? Pi loses time on every power cycle. Network may be unavailable at boot. Accurate timestamps for training logs matter.

Software Architecture

Application Layer → Views (Training, World, Focus, Settings)

Service Layer     → Weather, Calendar, Training, Config

Hardware Layer    → Display Driver, RTC, Buttons, Network

State machine: BTN1/BTN2 cycle views, BTN3 short = action, BTN3 long (2s) = enter focus/settings.

Data Layer

SQLite for training logs:

  • workouts → date, name, type, duration
  • exercises → workout_id, name, order
  • sets → exercise_id, reps, weight, rpe
  • daily_metrics → denormalized for fast queries

File-based cache for API responses (weather, calendar) with TTL.

Open Questions

  • Calendar integration: Google Calendar API vs manual entry?
  • Training data source: Manual logging vs sync from existing app?
  • Enclosure: 3D printed vs picture frame hack?
  • Button placement: Below display or side-mounted?

Bill of Materials

ComponentCost
Pi Zero 2 W (w/ headers)$18
Waveshare 7.5” E-Paper HAT V2$55
DS3231 RTC Module$10
32GB microSD (A2)$10
5V 2.5A Power Supply$10
Buttons + Wires$10
Total~$113

Plus $15-30 for enclosure.

Implementation Phases

  1. Hardware (Week 1-2): Assemble, test display pattern
  2. Core Software (Week 2-3): Views rendering, buttons working
  3. Services (Week 3-4): Weather, training data integration
  4. Polish (Week 4-5): Enclosure, reliability, systemd service

Resources

Next Actions

  • Order components
  • Flash Pi OS Lite, enable SPI/I2C
  • Run display test with Waveshare examples
  • Wire up RTC, verify I2C detection