DispatchPi

Share and queue e-ink images through Gmail

Send pictures from your phone to a frame via Gmail.

Send pictures from your phone to a Pi-powered screen

I built DispatchPi to share pictures with my fiancée, who was working in Québec's remote Nunavik region, where internet is unreliable. The project consists of a pair of e-ink frames that fetch images from a Gmail inbox.


Each frame is powered by a Raspberry Pi Zero and hooked up to a 7.5 inch Waveshare e-ink screen. Their job is to pull an image from a fixed URL at regular intervals. To exchange images, each sender uses a custom shortcut on iPhones.

DispatchPi is built for a pair of picture frames, which we’ll call Satellite frame and Earth frame. The satellite frame displays images received from any sender, while the earth frame only shows from a specific sender. This filtering happens in the web app which serves each audience on a different URL endpoint.
From start to finish

The code for DispatchPi is available here on GitHub. and you can start the tutorial here.

Full Schema

System diagram

Sharing images, step by step

  1. You open an iOS shortcut to send a recent picture to a dedicated shared Gmail inbox.
  2. Every day, each frame pings a fixed URL (server.com/satellite or server.com/earth) This kicks off a series of events:
  3. The Flask app on Google Cloud run spins up:
    • It authenticates into the Gmail inbox
    • It filters by sender, to only fetch the image intended for it.
    • Brings up the latest email received that contains an attachment
    • Converts the image to bitmap and grayscale, overlays the email body text on top
    • Publishes the transformed image at the fixed URL
  4. The Pi attached to the frame downloads the image from the URL and pushes it to the e-ink screen.
  5. Done!

What you need

A note on cost

Using Google services like Gmail API and Google Cloud Run is not free. But pinging our lightweight Cloud Run server once a day entails minimal costs. With daily calls to the web app from both frames, I pay about 7 Canadian cents per month. There are usually free trial credits available for new GCP users.

The tutorial

This tutorial covers the whole installation process, which is divided in four parts. For any direct questions, write me on Github or on Reddit.