Amazonのアソシエイトとして、ラズパイダ(raspida.com)は適格販売により収入を得ています。詳しくは当サイトの プライバシーポリシーをご覧ください。

私のように電子工作が苦手でも、Raspberry Pi とe-Paper(電子ペーパー)モジュールなら簡単に試せました。簡単なのには理由があって、昔からWaveshareの製品はマニュアルやらサンプルなどが充実しているからです。

表示させるプログラムを作成するのも、サンプルにあるPythonファイルを少しイジれば理解もしやすいと思います。

使用した製品は少し古いリリース(2019)なのですが、メーカーのサイトに用意されている導入ページ(wiki)通りで2023年でも問題なく動作しました。

Raspberry Pi 4で試しています。 この2.66インチはZero系ならサイズもちょうど同じくらいのサイズ感で隠れますね。

GPIO端子へ繋げる製品

Waveshare製といっても、Raspberry Piと繋ぐのにフラットケーブルで繋げる製品もあれば、今回のようにGPIO端子へジャンパワイヤーで繋げる製品もあります。

どちらもSPI接続となるわけですけど、Raspberry Pi で有効になっていない場合は先に有効にしてあげます。

SPIを有効に

SPIはraspi-configで有効にできます。

sudo raspi-config

3番目のインターフェイスオプションからSPIを有効にして再起動すればOKです。

再起動後、SPIの確認は次のコマンドなどで確認できます。

ls /dev/spi*
/dev/spidev0.0  /dev/spidev0.1

lsmod | grep spi
spidev
spi_bcm2835

Pythonでスクリプトを作成するなら、必要なモジュールやライブラリをインストールする必要があります。numpy以外は最初から入っているかと思います。

もし必要なライブラリなどがインストールされていなければインストールしておきましょう。

sudo apt update && sudo apt full-upgrade

sudo apt install python3-pil
sudo apt install python3-numpy
sudo apt install python3-rpi.gpio
sudo apt install python3-spidev

サンプルプログラムを動かすなら、これだけで大丈夫です。

GPIOへ接続

次にジャンパワイヤーを決められた場所に繋げていきます。

これはWaveshareの製品マニュアルページに載っています。e-Paperモジュールは大きさ(インチ数)によって異なるのか、サンプルもたくさん並んでいますね。

今回は2.66インチなので、2.66inch e-Paper Module (B) Manualを参考にしました。

2.66inch e-Paper Module (B) Manual - Waveshare Wiki

Raspberry Piとの接続にあたり、詳しい表が掲載されていました。これは分かりやすい。

e-Paperとあるのが電子ペーパーモジュール本体コネクタ側に記載されている各端子の名前で、BCM2835はRaspberry Piで表記される名前です。最後のBoardというのが、実際のGPIOの場所番号です

図のように、ワイヤーを実際に接続した箇所を色分けしてみました。

電源の3.3VとGND(アース)は、複数箇所ありますから、他を使用してもOKです。あまり近づきすぎても抜き差ししにくかったためちょっと離しました。

実際は他で使用していない箇所を使うことになります。今回は他に何も繋いでいないのですけど、Raspberry Piを収納しているケースで使っている箇所もあるかも知れません。

いつも混乱する トライした人にはお分かりかと思います。 40番まで降ってある番号は、左上から右と順番に振られている場所の番号です。 一方、Raspberry Pi側の機能名称として同じように数字で書かれている部分もあり、いつも混乱しています。 例えば、GPIO17とか書いてあるのに、GPIO端子の番号は11といった感じです。 最初間違えて繋いでしまいました。

Raspberry Piのターミナルでは、pinoutコマンドで同じようにグラフィカルなGPIO配列が表示されます。

pinout

実際に繋いだ写真です。

Argonのケースは普段隠れていますけど、蓋を取るとこんな感じにRaspberry Piでの機能名称もプリントされています。スケールが違って印刷されているため、あくまでも参考なんですけどね。結局はピンを数えないとならない。

もう1つ、このArgon oneのケースはGPIOも延長されているため、写真に写っている端子はRaspberry Pi本体そのものではありません。

GPIOピン下が色分けされているのが分かるかと思います。これ、意外と便利でして、電源とGNDが赤と黒というだけでも助かります。

e-Paperモジュール側のコネクタ部分にも同じように名称が印刷されているのが分かります。これと合わせればOKということになります。

■Pi 5は8GBモデルがオススメ

サンプルをダウンロードして実行させる

これでSPIを有効にして、必要なライブラリをインストールし、ワイヤーの接続も終わりました。

早速、メーカーのマニュアルページにあるサンプルをダウンロードして実行してみましょう。

wgetで取得後、exampleディレクトリにあるpython3 epd_2in66b_test.pyを使いました。

wget https://files.waveshare.com/upload/7/71/E-Paper_code.zip
unzip E-Paper_code.zip -d e-Paper

大きさの違うインチ数でたくさん販売されていますから、使うモジュールと同じ名前を探してください。

実行はexampleディレクトに移動して管理者権限で実行します。

cd e-Paper/RaspberryPi_JetsonNano/python/examples/
sudo python3 epd_2in66b_test.py

最初接続させるピンを間違って繋いでしまいました! するとこんな。

間違えて接続してしまった

改めて繋ぎ直し実行すると、このサンプルファイルは、合計4枚の画像に切り替わっていきます。

更新するのに数秒かかります。 ピコピコと点滅しながら徐々に変わっていくのが分かるでしょう。

ターミナルにエラー?ビジーのメッセージが出ていますが、これでいいみたい。

最後まで行くと真っ白(クリアされ)で終了しました。途中で辞めるにはCtrl + Cの強制終了です。

性能が良い電子ペーパーだと、切替える時間が短くなります。電子ペーパーの性質上、このように切り替わることは正常です。

今回の製品は部分書き換えにも対応していません。毎回全部を再描画することになります。

サンプルファイルを読んで画像を変える

ダウンロードしたサンプルファイル群を見てみると、picディレクトリにbmp形式の画像がたくさんありました。

サンプルプログラムはこれらを呼び出して表示しています。

テキストを指定して表示するのに、同じpic内にあるFont.ttcというファイル名でWenQuanYi Micro Heiフォントを指定しているのが分かります。

簡単な仕組みなので、同じサイズで画像を用意してpicディレクトリに収め、指定する名前を変えてあげれば画像は交換できます。

例えば、こんなのに。

ファイル名を書き換えればサンプルプログラムで表示できます。

例えば、49行目からのイメージファイル名を書き換えるだけで済みます。

    logging.info("2.read bmp file")
    HBlackimage = Image.open(os.path.join(picdir, '2in66b_b.bmp'))
    HRYimage = Image.open(os.path.join(picdir, '2in66b_r.bmp'))
    epd.display(epd.getbuffer(HBlackimage), epd.getbuffer(HRYimage))
    time.sleep(3)

用意した画像が薄く表現していたので、ドットが荒く見えてしまいました。失敗。

BMP形式でアンチエイリアスを効かせなければハッキリと表示されるでしょう。

テキスト文字はPythonの文字列の扱いに詳しくないため説明は避けますが、表示する座標と文字列、フォントの大きさなどで指定していました。

drawblack.text((150, 0), u'微雪电子', font = font24, fill = 0)

あとはPythonプログラム次第になります。

サンプルプログラムなら、練習がてら色々と試せそうです。

ちなみに、このモジュールは黒色と赤色を表示できて、プログラム上で黒を先に表示させ、その後赤の部分を描画させています。 写真の例だと、あとから変更した赤色部分(ラズパイダロゴ)以外も画像で表示していました。重ねている状態です。

試行錯誤すればサンプルプログラムを叩き台に希望通りの表現ができそうです。

文字列は直に入力せず変数で持たせ、情報を定期的に表示させるのに良いでしょう。比較的に簡単なので、私と同様にまだ未経験の人はトライしてみてください。