Back to blog
January 8, 2025·2 min read

by Mani Mohan

DIY Smart Frame

Built a low-power dashboard implementation using Raspberry Pi Zero WH and Waveshare 7.5" E-Ink display (800x480), mounted in a repurposed 5x7 frame. A...

DIY Smart Frame
── ◆ ──

Built a low-power dashboard implementation using Raspberry Pi Zero WH and Waveshare 7.5" E-Ink display (800x480), mounted in a repurposed 5x7 frame. Aggregates data from multiple APIs to display calendar events, weather, market data, and sports information.

post image

post image

Hardware Configuration

  • Raspberry Pi Zero WH (pre-soldered headers required)
  • Waveshare 7.5" E-Paper HAT (800x480, black/white)
  • 5x7 photo frame (modified for component mounting)
  • Standard GPIO ribbon connection
  • 5V/2A power supply

API Requirements

  • Waveshare EPD Python library for display control
  • Google Calendar API (OAuth2 authentication)
  • OpenWeatherMap API key (free tier sufficient)
  • Football-data.org API token (free tier)
  • Yahoo Finance API access (free)
  • Python 3.7+ environment

System Architecture

Data aggregation occurs through multiple threads with varying refresh intervals:

  • Calendar updates: 15-minute intervals
  • Weather data: 60-minute intervals
  • Market data: 15-minute intervals
  • Sports updates: 1-day intervals

Display updates implement partial refresh for static elements while maintaining complete refresh cycles for critical data changes.

Interface Layout

Multi-section information display:

  • Calendar (Top Left)
    • 24-hour event horizon
    • Time-sorted appointments
  • Weather (Top Right)
    • Current temperature/humidity
    • Air quality metrics
    • Short-term forecast
  • MUFC fixture (Center Left)
    • Upcoming PL fixture in local time
  • Market Data (Bottom Left)
    • Selected equity tickers
    • Percentage changes
    • Index tracking
  • Tech Updates (Bottom Right)
    • Tech news from TheVerge RSS feed.

Technical Constraints

  • E-Ink refresh limitations: ~3-4 seconds/refresh, which is not terrible.
  • API rate limits: Weather API calls are okay for personal use.
  • Display artifacts: Managed through partial update scheduling

Optimization Targets

Current focus areas:

  • Memory usage optimization
  • Update cycle refinement
  • Error handling improvements
  • Display buffer optimization

Future data sections that I want to have

  • Commute delays
  • Local events
  • Home automation status
  • Personal fitness/health metrics dashboard
  • Todo list integration

What other data sections would you be interested in?

Are you interested in building one? After refining some code sections, I hope to publish the code and accept pull requests. Once I do that, I will update this section.

◆ ◆ ◆