Raspberry Pi4 で Epaperに画像を表示させるまで

# デバイスの購入
### Raspberry Pi4
Raspberry Pi 4 Computer Model B 4GB を利用しました。
[Amazonのリンク](https://www.amazon.co.jp/%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A44-%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BC%E3%83%A2%E3%83%87%E3%83%ABB-Raspberry-Computer-Model/dp/B07WR5W2D6 "Amazon")

最近メモリが８GBのものが発売されたようですが、今回の用途では大きなメモリは必要ではないので好きなもので良いと思います。
Raspberry Pi3B+などでも大丈夫です。

*今回購入したRaspberry Pi4*
<img width="50%" alt="Raspberry Pi Imager" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/d91f141f-801a-8b3b-79cc-30ddf5eaa0ff.jpeg">

### Raspberry Pi 4のケース
勇んで買ったものの、ケースに入れるとGPIOへの接続が面倒になるので結局今のところ入れていません。
USB-C電源アダプタは必要なので、持っていないない人は単体で買う必要があります。Raspberry Pi4とセットで売っているものもあります。
[Amazonのリンク](https://www.amazon.co.jp/gp/product/B07H2WKYBF/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&psc=1 "Amazon")

*今回利用しなかったRpi4のケース*
<img width="50%" alt="Raspberry Pi" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/ebb442d4-d359-e5dc-9af6-c67aa72f4025.jpeg">


*GPIOとは*
Raspberry Piの端に40本くらい立っている端子のことです。
電源やGroundから、今回利用するEpaperへ信号を送るためのピンもここにあります。

### 電子ペーパー
7.5インチ E-Inkディスプレイ HATを利用しました。
Raspberry Piと簡単に接続できるようになっています。
[Amazonのリンク](https://www.amazon.co.jp/gp/product/B07KY9K7R1/ref=ppx_yo_dt_b_asin_title_o03_s00?ie=UTF8&psc=1)

<img width="50%" alt="Raspberry Pi" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/5d180537-1bac-b666-fa5f-3443803de050.jpeg">

### Micro SDカード
Raspberry PiのOSやファイルを記憶するデバイスとして別途Micro SDカードが必要です。
16GBのマイクロSDカードを購入しました。
今回は手っ取り早くコンビニで買いましたが、ネットのほうが安いと思うのでRaspberry Pi4と一緒に買うのが良いと思います。
16GBもあれば十分ですが、32GBでも大丈夫です。

### SDカードリーダー
これは最初から持っていたのですが、最近のMac BookにはSDカードリーダーがついていないのでこちらも購入しました。
<img width="50%" alt="Raspberry Pi" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/cdb33982-4512-5d1f-0a8d-f9f414a8d5b7.jpeg">


### USB-C 有線LAN 変換アダプターとLANケーブル
Raspberry PiとMac bookをSSHで繋ぐためにLANケーブルと変換コネクタが必要です。
色々と設定するとLAN内で無線でSSHできるようですが、私はだいたいこちらの有線SSHを利用しています。
<img width="50%" alt="Raspberry Pi" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/1c8cd22b-d0d0-8b01-4a1b-657a76b57f51.jpeg">



# 作業
### ① Raspberry PiのOSのインストール
最近Raspberry PiのOSをSDカードに保存する専用のアプリケーション「Raspberry Pi Imager」ができたようです。
OSも選ばないようですっごい簡単になりました。
[Raspberry Pi Imagerダウンロード](https://www.raspberrypi.org/downloads/)

ダウンロード→インストールの後にSDカードをパソコンに接続して、利用したいOSと接続したSDカードを選択します。
今回は「Raspberry Pi OS (32-bit) with desktop」を利用しました。

<img width="50%" alt="Raspberry Pi" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/42be1c6f-6991-00d0-a77c-26b1b31814ff.png">

### ② Raspberry PiにSSHできるようにする
Macの場合SDカードを接続して `touch /Volumes/boot/ssh` というコマンドを打つとSDカード内にsshというからファイルが作成されます。
このsshというファイルがあると、Raspberry Piを起動した際にSSH接続を受け付けるようになります。
Windowsの場合はエクスプローラーで開いて「ssh」というファイルをつくればOKです。

### ③ Raspberry PiにSSHする
Raspberry PiにMicro SDカードを差し込んで、電源を繋ぐと起動します。
ON/OFFのスイッチはありません。

その後LANケーブルを接続して、下記のコマンドでSSH接続します。
`ssh pi@raspberrypi.local`
デフォルトのパスワードは `raspberry` です。

### ② 必要なパッケージをインストールする
fontや画像処理のライブラリをインストールします。
`$ sudo apt install fonts-noto-cjk python-spidev python-pil python-tz`


### ③ SPIを利用可能にする
`$ sudo raspi-config`
のコマンドを打って「5 Advanced Options」→「P4 SPI」を選択し、<Yes> → <OK> の順に選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/82c47896-5a81-9cdf-f3a2-1364d07e6c88.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/e6c42eec-52e7-9075-1bfa-773d2d3def2c.png)

<img width="50%" alt="Raspberry Pi" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/07d4cb03-b808-83c9-ed01-296d9e22d584.png">

<img width="50%" alt="Raspberry Pi" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/3adb75a2-352b-18c9-c18a-a12086f3694f.png">


### ④ E-paperを接続する
E-paperをRaspberry Piに接続するには付属のコネクタを利用します。
今回は写真のようにRaspberry Piの対応する各端子に接続しましたが、わざわざ色を確認したり端子を数えたりと大変です。
<img width="50%" alt="Raspberry Pi" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/8f33faac-86d1-fa33-5184-0e0a36a05050.jpeg">

本来は、こちらの黒い部分をRaspberry PiのGPIOの部分にガチャっと差し込むだけで良いようです。
<img width="50%" alt="Raspberry Pi" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/f71543dd-35bc-624d-a4d8-9dd7ea2cef39.jpeg">

*全体図*
<img width="50%" alt="Raspberry Pi" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/4df29490-ba00-2a43-30c7-681eb5f0c57d.jpeg">




### ⑤ サンプルプログラムのダウンロード
`$ sudo apt install p7zip`
`$ wget https://www.waveshare.com/w/upload/0/01/7.5inch_e-paper_hat_b_code.7z`
`$ 7zr x 7.5inch_e-paper_hat_b_code.7z`
の3つのコマンドでサンプルプログラムがダウンロードから解答までができます。

### ⑥ サンプルプログラムの起動
`$ cd RaspberryPi/python3/`
`$ python3 main.py`
でサンプルプログラムを起動できます。
デフォルトの状態だと下記のようなエラーが出ました。fontファイルが見つからないようです。

```
$ python3 main.py 
e-Paper busy
e-Paper busy release
Clear...
e-Paper busy
e-Paper busy release
Drawing
traceback.format_exc():
%s Traceback (most recent call last):
  File "main.py", line 23, in <module>
    font24 = ImageFont.truetype('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', 24)
  File "/usr/lib/python3/dist-packages/PIL/ImageFont.py", line 280, in truetype
    return FreeTypeFont(font, size, index, encoding, layout_engine)
  File "/usr/lib/python3/dist-packages/PIL/ImageFont.py", line 145, in __init__
    layout_engine=layout_engine)
OSError: cannot open resource
```

#### ⑥-1 サンプルプログラムの修正
vimmerなのでvimをインストールしました。
Raspberry Piデフォルトのテキストエディタnanoを利用しても問題ありません。
`$ sudo apt install vim`

`$ vim main.py`
で

```
font24 = ImageFont.truetype('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', 24)
font18 = ImageFont.truetype('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', 18)
```
の2行の `/usr/share/fonts/truetype/wqy/wqy-microhei.ttc`の部分を `/opt/vc/src/hello_pi/hello_font/Vera.ttf` に変更しました。


### ⑦ サンプルプログラムの起動2
再度 `$ python3 main.py` をコマンドすると、画像のようにE-paperに順に画像や文字が表示されました。

![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/74622/d90c34b1-0f68-83cc-d849-36726375f86e.gif)