Raspberry Pi に電子ペーパーを繋げてあそぶ
買ったのがこれ
正式名称が書いてないが、Waveshare というメーカーの 7.5inch e-Paper HAT というものだった
マニュアルはここにあった
電子ペーパーの仕様、ラズパイと繋げるセットアップのやり方、Python のサンプルの動かし方も書いてある
Install the function library
のところに依存ライブラリのインストールが書いてあるが、github にあるサンプルコードだと numpy は使ってないようなので実際には以下をインストールすれば OK
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo pip3 install RPi.GPIO
sudo pip3 install spidev
Python のサンプルコードがこれ
examples のディレクトリには他の電子ペーパー用のコードもあるので紛らわしいが epd_7in5_V2_test.py
というやつが今回いじってるものに対応したコード
epd.display(epd.getbuffer(Himage))
という部分で画像を電子ペーパーに描画している
色々と前処理は書かれているが、PIL の Image オブジェクトを作って epd に渡すと描画してくれるということがわかった
epd.getbuffer(...)
で Image オブジェクトからバイト列を生成しているようなので、 epd.display(...)
に描画するバイト列を渡すということのよう
EPD
クラスの処理はこちらに定義されている
謎の16進数の定数が多く定義されているが、これは電子ペーパーに定義されているコマンドを表している模様
その定義はドキュメントがあった
※Webにあるマニュアルの Documentation -> 7.5inch e-Paper V2 Specification (current version) から飛べる
例えば電子ペーパーに描画する epd.display(...)
の処理はこうなっている
def display(self, image):
self.send_command(0x13)
self.send_data2(image)
self.send_command(0x12)
epdconfig.delay_ms(100)
self.ReadBusy()
0x13
のコマンドは Display Start transmission コマンド
0x12
は Display Refresh のコマンド
ということが PDF のドキュメントの「5. Command Table」に書かれている