Raspberry Pi Zero 2 Wを使う その5 E-Paperハット

概要

前回は3A+と外付け液晶をためしてみました。かなり苦戦したのですが、今回はRaspberry Pi Zero 2 WにE-Paperを接続してみました。かなり質感もよいケース付きで気に入りましたが制御はやっぱり大変そうでした。

概要

2.13インチのタッチスクリーンを備えたスペアユニット,250x122のペーパーインクを備えたスペアパーツ - AliExpress 7
Smarter Shopping, Better Living! Aliexpress.com

上記のケース付きE-Paperハットを購入してみました。

2.13inch Touch E-Paper E-Ink Display For Raspberry Pi Zero, 250×122 Pixels, ABS Protection Case | 2.13inch Touch e-Paper HAT (with case)
2.13inch Touch E-Paper E-Ink Display For Raspberry Pi Zero, 250×122 Pixels, ABS Protection Case | 2.13inch Touch e-Paper...

製品的には上記になると思います。

2.13inch Touch e-Paper HAT - Waveshare Wiki

オフィシャルのWIKIは上記ですね。

装着

まずはGPIOを利用するのでピンヘッダをはんだ付けする必要があります。

Gpio-パラッツォモデルのヘッダー,2列,カラフルなスタッキング,2x20ピンの延長,1ユニット,5個 - AliExpress 7
Smarter Shopping, Better Living! Aliexpress.com

上記の製品ですが、色分けしているので若干わかりやすいです。今回は特に意味はないですが使ってみたかったのです。

こんな感じの箱で届きました。WAVESHAREさんの製品はちゃんとしていますよね。

中身はこんな感じで、ドライバーは使いにくのでちゃんとしたのを使ったほうがいいです。

本体をいれて。

手前側2箇所をネジで固定します。これはたぶん固定しなくてもわりと大丈夫そうでした。

組み付けました。非常に質感のよいケースです。これは良さそうな製品ですね。

動かしたところです。非常に満足度の高い製品です。前回のSPI接続の液晶はHDMI画面を横取りして表示しているタイプでした。こちらはSPI通信で外部のデバイスを直接制御して描画しています。

前回のも直接描画できるはずですが、直接制御って結構たいへんなんですよね。こちらもサンプルはありますが、そこまで気軽に使える感じではないと思います。

設定方法

SPIとI2Cの有効化

sudo raspi-config

SPIとI2Cを有効化します。画面がSPIで、タッチパネルがI2C接続になります。

ドライバーのインストール

ドキュメント記載の方法(非推奨)

cd /tmp
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
cd /tmp
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build

いろいろドライバーをいれます。基本的にはgpioコマンドを利用できるようにする準備です。ただしこのコマンドはかなり昔のバージョンで非推奨になってから廃止されていて、無理やり互換的な機能を作成している状態となります。

ちなみに、この手順でapt環境が壊れます。間違ったライブラリが途中でインストールされるみたいです。

sudo apt --fix-broken install

sudo apt updateを実行したときのエラー文にも書かれていますが、なおすコマンドを実行することで正常に戻りました。

最低限のツールだけインストール

再度全部環境を作り直して確認してみました。

cd /tmp
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
./build

最後のWiringPiだけいれればPythonで画面描画できましたので、これだけいれるのがおすすめです。

再起動

sudo reboot

再起動していろいろ反映させます。

gpioコマンドの確認

gpio -v

上記で実行できるか確認します。バージョンが2.70になっている必要があります。

gpio readall

上記でGPIOの状態が正しく取得できるかを確認します。

 +-----+-----+---------+------+---+Pi Zero 2W+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 | ALT0 | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 | ALT0 | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 1 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 1 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI | ALT0 | 1 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 1 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK | ALT0 | 0 | 23 || 24 | 1 | OUT  | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | OUT  | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+Pi Zero 2W+---+------+---------+-----+-----+

上記みたいに状態が取得できれば成功です。

サンプルプログラム実行

cd /tmp
git clone https://github.com/waveshare/Touch_e-Paper_HAT
cd Touch_e-Paper_HAT/python/examples
python TP2in13_V4_test.py

いろいろ試したところ、64ビットでも32ビットでも、一つ前の古いOSでもC言語のサンプルは動作しませんでした。もう一つ前の古いバージョンでないと動かないかもしれません。

ただし、Pythonであれば最新バージョンの64ビットでも動かすことができました。公式サイトにはいろいろpipで入れろとありますが、入れてはいけません。

デフォルトで入っているモジュールばかりなのと、最新バージョンではpipがそのままでは動かなくなっており、venvなどを仮想環境を使えとでますががんばって環境を作ってもデフォルトで入っているモジュールなので無駄な環境ができあがります。

あとPythonのサンプルはTP2in13_test.pyもありますが、こちらは画面が更新されずにタッチパネルだけ動きました。V3かV4を動かすと画面も表示されると思います。

(おまけ)3A+のケース変更

RaspberryPi 3 A+用オリジナルケース(STLファイル)
このファイルの説明 RaspberryPi3 Model A+用ケースの3Dプリント用STLデータになります。 ※ご注意:RaspberryPi財団の公式データではありません。あくまでユーザーメイドの参考補助部品です。自己責任としてご利用願

上記の「きっと何かに役立つでしょ!?」さんのケースを印刷してみました。

私のプリンターだとちょっとGPIOの窓の部分が狭かったので、カッターで少しだけ削りました。

こんな感じで純正ケースより良い感じでした。

まとめ

最新バージョンの64ビットOSでも動かすことができるのは非常にメリットがあります。反面制御用のプログラムをPyhonで書く必要があるのでそこがちょっとネックですね。

画像を引数で渡して描画してくれるだけのサンプルとかもあればよかったのですが、タッチパネルで操作する複雑なサンプルなのでそのままだと使いにくいです。

E-Paperの利点として、深夜でも眩しくないことがあります。たとえば室内などに常にはりつけて表示させる場合、普通の影響だと夜にバックライトが光っていて眩しくなります。E-Paperだと暗いと読みにくくはなりますが、深夜にも眩しくないので非常に設置後のクレームが少ないと思います。

コメント