• This repository has been archived on 23/Jun/2023
  • Stars
    star
    228
  • Rank 175,267 (Top 4 %)
  • Language
    Jupyter Notebook
  • License
    GNU General Publi...
  • Created about 4 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

E Paper Display Loop

epd_display/PaperPi

NOTE: Project Archived

This project has been migrated to PaperPi and is no longer maintained. PaperPi offers all of the same functionality, but a cleaner install process, a more open and flexible plugin structure and removes the need for a frozen binary.

This repository is maintained only for hitorical purposes. Check the new version for updates!

Splash Screen Splash Screen PaperPi PaperPi Weather Plugin

PaperPi is an e-Paper display with multiple rotating display plugins that contain dynamic content.

PaperPi is a quiet and clean portal to the internet. No loud colors, no busy animations, just a lovely selection of the information you want without buzz and distraction. PaperPi rotates through your choice of plugin screens at the pace you choose.

PaperPi is written to work with almost all of the WaveShare SPI displays out of the box. PaperPi will work with the tiny 2" displays all the way up to the 10" HD displays with minimal configuration. Check the complete list of supported screens

For information on building a frame, case and custom cable, see these instructions.

To get started, jump to the Setup Instructions

Plugins

PaperPi supports many different plugins and layouts for each plugin.

Complete Plugins List

librespot pluginLibreSpot (spotify) Plugin word clock pluginWord Clock lms client pluginLogitech Media Server Plugin
decimal binary clockMoon Phase met_no pluginMet.no Weather Crypto Currency TickerCrypto Currency
reddit/r/quotesReddit Quotes XKCD ComicXKCD Comic Basic ClockBasic Clock

Changes

See the Change Log for a complete list of updates

Requirements

Required Hardware

  • Raspberry Pi (Pi 4, Pi 3, and Pi Zero)
  • Raspberry Pi OS Buster or later (64-bit supported)
  • WaveShare EPD Screen with PiHat
    • see the full list of currently supported screens
    • Note: HDMI screens are not supported

Optional Hardware

  • HiFiBerry hat (optional)
    • The HiFiBerry DAC+ PRO and similar boards add high-quality audio output to the Pi so it can act as a display and also work as a LMS client player using squeezelite
    • GPIO 2x20 headers must be added to the HiFiBerry HAT to provide an interface for the WaveShare HAT.
    • HiFiBerry's DAC+ Bundle with the following configuraiton is a good choice:
      • DAC+ Pro
      • Acrylic Case for (RCA) AND DIGI+
      • Raspberry Pi 4B 2GB (1GB should be sufficient as well)
      • 16GB SD Card
      • PowerSupply (USB C 5.1V/3A)
      • 2x20 Pin Male Header (required for WaveShare HAT)

Optional Software

PaperPi plugins work with a variety of other software such as Logitech Media Server and Spotify. Check the Plugin documentation for further instructions

Setup

PaperPi requires only small amount of setup.

Hardware/OS Setup

All Waveshare Screens

The WaveShare displays require the SPI interface. SPI can be enabled through the raspi-config command.

  1. Enable SPI (see images below)
    • $ sudo raspi-config > Interface Options > SPI > Yes
  2. Reboot
    • $ sudo shutdown -r now
librespot plugin
librespot plugin
librespot plugin

Userland Setup

PaperPi can be run directly on-demand from a user account such as the default "pi" user. Any other user will work as well, but the user must be a member of the spi group.

  1. Download the tarball
    • $ wget https://github.com/txoof/epd_display/raw/master/paperpi_latest.tgz
  2. Decompress the archive: tar xvzf paperpi.tgz
  3. Launch PaperPi: $ ./paperpi/dist/paperpi
    • On the first run PaperPi will create a configuration file in ~/.config/com.txoof.paperpi/paperpi.ini and then exit
  4. Edit the configuration file to match your needs. The default configuration will provide a reasonable starting point
    • $ nano ~/.config/com.txoof.paperpi/paperpi.ini
      • At minimum you must specify the display_type
      • If you are using an HD IT8951 display, you must also set the vcom value which can be found on the ribon cable.
      # choose the display type that matches your e-paper pannel 
      display_type = epd2in7
      # vcom value for HDIT8951 displays
      vcom = 0.0
      
  5. Launch PaperPi again -- you should immediately see a splash screen followed shortly by the first active plugin.
  6. Press ctrl+c to shutdown paperpi cleanly
    • Waveshare recommends clearing pannels to a blank state prior to long-term storage

Daemon Setup

PaperPi is designed to run as an unattended daemon process that starts at system boot.

  1. Download the tarball
    • $ wget https://github.com/txoof/epd_display/raw/master/paperpi_latest.tgz
  2. Decompress the archive: tar xvzf paperpi.tgz
  3. Install PaperPi as a service, run the install script: $ sudo ./install.sh
    • This will:
      • add the necessary service users and groups
      • add a configuration file to /etc/defaults/paperpi.ini
      • install PaperPi as a systemd service
  4. Edit /etc/defaults/paperpi.ini to configure a display_type and enable any plugins
    • $ sudo nano /etc/defaults/paperpi.ini
    • At minimum you must specify the display_type
    • See the list of supported screens for more information
  5. Start PaperPi: $ sudo systemctl restart paperpi
    • PaperPi will now start and restart at boot as a systemd service
    • PaperPi may fail to clear the screen when the daemon is stopped. This a known issue.

Developing PaperPi

If you would like to develop plugins for PaperPi, you will likely need a working build environment.

Requirements:

  • python 3.7+
  • pipenv

Create a Build Environment

  1. Clone the repo: https://github.com/txoof/epd_display.git
  2. Run $ create_devel_venv.sh to create a build environment
    • This will check for all necessary libraries and python modules
  3. The build script will then attempt to build a binary of PaperPi using pyintsaller
    • executables are stored in ./dist/

Build Paperpi

  1. Create a build environment (see above)
  2. Run $ build.sh to create a pyinstaller one-file distributable
  3. If you've updated documentation in any plugins, be sure to rebuild the documentation with $ pipenv run python3 create_docs.py
  4. Submit a PR if you'd like your changes included in the official distribution

Contributing

PaperPi's core is written and maintained in Jupyter Notebook. If you'd like to contribute, please make pull requests in the Jupyter notebooks. Making PRs to the .py files means manually moving the changes into the Jupyter Notebook and adds considerable work to the build/test process.

Plugins can be pure python, but should follow the guide provided.

See this gist for a quick guide for setting up a jupyter environment on a Raspberry Pi.

Supported Screens

Most NON-IT8951 screens are only supported in 1 bit (black and white) mode. Color output is not supported at this time. Some waveshare drivers do not provide 'standard' display and Clear methods; these displays are not supported at this time.

All IT8951 Screens now support 8 bit grayscale output.

Some WaveShare screens that support color output will also work with with the non-colored driver. Using the 1 bit driver can yield significantly better update speeds. For example: the epd2in7b screen takes around 15 seconds to update even when refreshing a 1 bit image, but can be run using the epd2in7 module in 1-bit mode which takes less than 2 seconds to update.

WaveShare Screen

NN. Board Supported:


  1. epd1in02 supported: False
  • AttributeError: module does not support EPD.display()
  1. epd1in54 supported: True
  2. epd1in54_V2 supported: True
  3. epd1in54b supported: True
  4. epd1in54b_V2 supported: True
  5. epd1in54c supported: True
  6. epd2in13 supported: True
  7. epd2in13_V2 supported: True
  8. epd2in13b_V3 supported: True
  9. epd2in13bc supported: True
  10. epd2in13d supported: True
  11. epd2in66 supported: True
  12. epd2in66b supported: True
  13. epd2in7 supported: True
  14. epd2in7b supported: True
  15. epd2in7b_V2 supported: True
  16. epd2in9 supported: True
  17. epd2in9_V2 supported: True
  18. epd2in9b_V3 supported: True
  19. epd2in9bc supported: True
  20. epd2in9d supported: True
  21. epd3in7 supported: False
  • unsupported EPD.Clear() function
  • AttributeError: module does not support EPD.display()
  1. epd4in01f supported: True
  2. epd4in2 supported: True
  3. epd4in2b_V2 supported: True
  4. epd4in2bc supported: True
  5. epd5in65f supported: True
  6. epd5in83 supported: True
  7. epd5in83_V2 supported: True
  8. epd5in83b_V2 supported: True
  9. epd5in83bc supported: True
  10. epd7in5 supported: True
  11. epd7in5_HD supported: True
  12. epd7in5_V2 supported: True
  13. epd7in5b_HD supported: True
  14. epd7in5b_V2 supported: True
  15. epd7in5bc supported: True
  16. All IT8951 Based Panels

Isuses

Please open tickets at GitHub.

More Repositories

1

PaperPi

E-Paper display loop with plugins
Jupyter Notebook
97
star
2

codesign

python scripts for signing, packaging, notarizing and stapling command line binaries
Jupyter Notebook
41
star
3

sliding_box

OpenSCAD
23
star
4

OpenSCAD_fasteners

OpenSCAD
20
star
5

epdlib

Python library for creating and writing modular layouts for e-paper screens
Jupyter Notebook
16
star
6

finger_joint_box

OpenSCAD
9
star
7

slimpi_epd

Raspberry Pi Logitech Media Server Client with ePaper display
Python
9
star
8

OpenSCAD_electronics

OpenSCAD
8
star
9

flexbatt

OpenSCAD
7
star
10

piconfig

Shell
6
star
11

fingerjoint

Finger Joint Library for Openscad
OpenSCAD
5
star
12

develtools

development tools
Shell
5
star
13

pi4_case

Raspberry Pi 4 w/ HifiBerry Case
OpenSCAD
4
star
14

querylms

Query Logitech Media Server for server status and player information
HTML
3
star
15

irBlaster

Code for managing an arduino board that monitors line levels and switches on a stereo over IR
C++
2
star
16

folderAudit

Audit a Google Drive folder recursively and generate a google sheet that shows ownership, size and mime type
Jupyter Notebook
2
star
17

Useless_Machine

Useless Machine
OpenSCAD
2
star
18

PowerQuery

PowerQueries for PowerSchool SIS for use with Data Export Manager (DEM)
Shell
2
star
19

flat_pack_joints

An OpenSCAD library for creating a variety of joints for flat-pack, laser-cut figures.
OpenSCAD
2
star
20

IMSCC_scripts

IMSCC Manipulation Scripts
Shell
1
star
21

zip-clock-basic

A MakeCode project
TypeScript
1
star
22

portfolioCreator

Create directories in Google Drive using FileStream application
Jupyter Notebook
1
star
23

ansible

Ansible Playbooks
1
star
24

pyPDF_split

Split PDF files on "StudentID:NNNNNN" string
Jupyter Notebook
1
star
25

automate_rsync

Configure rsync once, add multiple jobs with simple headings
Jupyter Notebook
1
star
26

file_rotate

Shell
1
star
27

audioSensor

sensor for detecting audio-line levels
C++
1
star
28

pdfEdit

bulk editing of PDFs
Shell
1
star
29

calendar_csv

calendar csv generator for schools
Jupyter Notebook
1
star
30

friendly-dice

A kid friendly implementation of the DiceWare password method (http://world.std.com/~reinhold/dicewarefaq.html)
Python
1
star
31

PyAlarm

PyPortal Alarm Clock Project
OpenSCAD
1
star
32

insertFiles

insertFiles into portfolio folders stored in Google Drive
Jupyter Notebook
1
star
33

gdrive_audit

Google Drive folder ownership audit tool for Workspace Users
Jupyter Notebook
1
star
34

resume

Featured projects for employment
1
star