High-level javascript library and CLI for drawing on a Waveshare e-Paper using Raspberry PI GPIO.
Currently, only a single device support is implemented, EPD 7.5inch HD (B).
The source is inspired by original waveshare example code.
Library documentation is at https://ziacik.github.io/ws-paper/.
Because the library uses SPI to write data to the device, SPI access need to be enabled on Raspberry.
To do that, run
sudo raspi-config
Then select Interface Options, and enable SPI.
Install npm i ws-paper
.
Import a specific implementation of Device
, and a high-level class for drawing, Drawer
.
Initialize the device, draw whatever you need to, and don't forget to finalize the device at the end, even in case of error.
Example:
import { Drawer, Paper75HDB } from "ws-paper";
const device = new Paper75HDB();
const drawer = new Drawer(device);
const svg = `<svg width="${device.width}" height="${device.height}"><text font-size="50" x="50%" y="20%" text-anchor="middle">Hello, world!</text></svg>`;
device.initialize();
drawer.drawSvg(svg).finally(() => device.finalize());
Please note, the cli needs to be used as root because rpio
needs access to /dev/mem
which is not allowed for non-root users.
Install globally npm i -g ws-paper
.
Run ws-paper --help
to get list of available commands.
Example:
ws-paper draw "<svg viewBox='0 0 880 528'><text font-size='120' x='50%' y='50%' text-anchor='middle'>Hello, world</text></svg>"
The svg can be piped to the ws-paper
from file or internet:
curl https://upload.wikimedia.org/wikipedia/commons/a/ad/24_petal_lotus_circle.svg | ws-paper draw