RaspberryPiでペーパーディスプレイ(PaPiRus)を使ってみた

元号が発表されました。
僕が産まれてから世間はずっと平成だったので
とても不思議な気持ちです。

順調にいけば僕は2年度にドクターが取れるはずなのですが 令和2年度の博士になるんですね。 平成最後or令和最初の博士号だったらレア感合ってよかったのですが・・・ f:id:Tmegane:20190415160144j:plain:w400


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

下準備

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で現在の時刻を試しに表示。

f:id:Tmegane:20190415160130j:plain:w300

文字を表示したかったら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と変更することで画面の向きを変えられることができます。

f:id:Tmegane:20190415160140j:plain:w300

画像を表示

画像の場合もそんなに違いはなく

from papirus import Papirus
screen = Papirus(rotation=0)
screen.display('画像のパス')

で表示可能。サイズはディスプレイにあわせて適当に縮小してくれます。
カラー画像でもモノクロで適当に表示してくれます。

f:id:Tmegane:20190415160148j:plain:w300

日本語を普通に表示するにはフォントの問題等ありますが
任意の画像を簡単に表示できるので、なんでも画像に変換してから表示させると良さそうです。

画面を消す

電子ペーパーの特徴の1つとして、電源を切っても画面が表示され続けます。
画面をまっさらにしたいときは、明示的にコマンドラインから
papirus-clearを実行することで消せます。
PaPiRusAPIを見た感じだと、text.Clear()のような感じで
pythonスクリプト上からも画面を消せるようです。

ところで、調べてみると白黒赤の三色で表示できる電子ペーパーもあるようですね。
そのうち安価で多色に対応したものが出てくるんだろうなあ