RaspberryPiでペーパーディスプレイ(PaPiRus)を使ってみた
新元号が発表されました。
僕が産まれてから世間はずっと平成だったので
とても不思議な気持ちです。
順調にいけば僕は2年度にドクターが取れるはずなのですが
令和2年度の博士になるんですね。
平成最後or令和最初の博士号だったらレア感合ってよかったのですが・・・

ちょっと前にRaspberryPi用のペーパーディスプレイ、PaPiRusを手に入れました。
kindle paperwhite等にも使われている電子ペーパーディスプレイは
電源を切っても画面が表示続けられるため省電力での運用ができ、視認性にも優れています。
PaPiRusは海外のクラウドファンティングにより産まれたプロダクトで
電子ペーパーをRaspberryPiでお手軽に試せるモジュールに仕上がっています。
手に入れたのはいいですが、 テストも全然してなかったので少し遊んで見ました。

下準備
RaspberryPiのSPIが有効になっていないとPaPiRusは動きません。
sudo raspi-configからAdvanced Options内にある
SPIをEnableに変更して、RaspberryPiを再起動しておきます。
モジュールのインストール
RaspberryPiにPaPiRusを制御するための諸々をいれます。
簡単にやる方法はターミナルから
curl -sSL https://pisupp.ly/papiruscode | sudo bash
を実行すればオートで済ませてくれます。
マニュアルで設定したい人はこちらを参照。
github.com
画面のサイズは持っているPaPiRusにあわせて選択します。
無事に入ったらsudo papirus-clockで現在の時刻を試しに表示。

文字を表示したかったらsudo papirus-write[文字]
画像を表示したければsudo papirus-draw[画像のパス]でターミナルからお手軽に表示ができます。
PaPiRusをPythonで扱う
PaPiRusをPythonで扱うには、PaPiRusAPIを使うのですが、そのためにはソースを変更する必要があります。
PaPiRus/papirus/image.pyに
from epd import EPD epd = EPD()
を追加。これでPython上からPaPiRusが使えるようになります。
文字を表示
from papirus import PapirusText Text = PapirusText(rotation=0) text.write("hello paper")
でディスプレイ上に文字を表示。rotation=数字は
0,90,180,270と変更することで画面の向きを変えられることができます。

画像を表示
画像の場合もそんなに違いはなく
from papirus import Papirus screen = Papirus(rotation=0) screen.display('画像のパス')
で表示可能。サイズはディスプレイにあわせて適当に縮小してくれます。
カラー画像でもモノクロで適当に表示してくれます。

日本語を普通に表示するにはフォントの問題等ありますが
任意の画像を簡単に表示できるので、なんでも画像に変換してから表示させると良さそうです。
画面を消す
電子ペーパーの特徴の1つとして、電源を切っても画面が表示され続けます。
画面をまっさらにしたいときは、明示的にコマンドラインから
papirus-clearを実行することで消せます。
PaPiRusAPIを見た感じだと、text.Clear()のような感じで
pythonスクリプト上からも画面を消せるようです。
ところで、調べてみると白黒赤の三色で表示できる電子ペーパーもあるようですね。
そのうち安価で多色に対応したものが出てくるんだろうなあ