e-Paperの良記事を見たので実装してみました

#はじめに

額縁の絵をリモートで差し替える、素敵、と思ってつくってみたくなりました。
https://dailyportalz.jp/kiji/e_paper-gakusou

## 作業環境

- Mac Mojave
- Arduino IDE

# どんなことか動画で調べる
e-paperは初見なので。

ESP32,ESP8266でのPIN接続について
https://www.youtube.com/watch?v=AeYbX0zaJTY

# 手順
はまったところはあとでまとめました。

##  ライブラリをダウンロード・アップデート
> ツール > ボード:ESP32 Dev Module > ボードマネージャ

から`ESP32 Dev Module`で検索する
<img width="801" alt="スクリーンショット 2020-06-20 21.32.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/08e6044f-214d-a359-aabc-c97b6c916beb.png">

## ソースコードをダウンロード・修正

ユーザマニュアルを確認し、ソースコードをダウンロードします
<img width="573" alt="スクリーンショット 2020-06-21 21.36.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/5f93f9ff-a071-1047-8b11-8a803f09140e.png">

Arduino IDEを用いてWifi版とbluetooth版両方のサンプルを試して、Wifi版での操作に絞りました。
bluetooth版は途中までなので、ここでは割愛します。

<img width="202" alt="スクリーンショット 2020-06-21 21.57.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/b4f597ba-1abd-923b-16ae-072f48ff6f95.png">

`Loader_esp32wf`に含まれるepd.hのPINを都合に合わせて書き換えました。
以下は一例として、ご都合に合わせてください。
<img width="296" alt="スクリーンショット 2020-06-21 22.00.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/430be3ad-242b-31bd-b7c2-6acbd252027b.png">

## 電子ペーパーモジュール用ESP32ドライバボードを接続・実行

シリアルポートが表示されなかったらドライバをいれる
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers

転送がおわったらシリアルモニターを監視します。
うまくいっていれば、IPアドレスが表示されるのでアクセスするとサイトが表示されます。
詳しくはドキュメントをみましょう。
今現在はP.12あたりです
https://www.waveshare.com/w/upload/4/4a/E-Paper_ESP32_Driver_Board_user_manual_en.pdf

# ハマったところ
## シリアルポートが表示されなかった

issueを確認し、ドライバをインストールを実施
https://github.com/espressif/arduino-esp32/issues/1084#issuecomment-363294312

## サンプルコードを実行してもe-Paperに表示されない

ESP32の方のフローは正しい気がしていたのでe-Paper側になにか問題があるのだとおもってましたが
epd.hのPINの番号が他ESP32の開発ボードサンプルと全然違った。

## bluetoothの例はAndroidのソースを改修
ソースコードはminSDKがAPI23あたり、手持ちのAndroidがAndroid API21(version5.0.2)だったのでソースコードの改修を途中まで行いました。
PermissionHelperを

```java

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
}
```
でくくる作業をして、ファイルをだすところまでで一度止めました。
ファイル転送で応答なしになったので、PINの指定で動線が切れてしまっていたのだと思います。
そのためWifiで接続する方法に切り替えました。

## 家のWifiが弱い

接続がとても遅いのか、ドアに遮蔽されているのか、私の自宅はwifiがヨワヨワで非常にストレスでした。
画像の転送ができない理由がWifiが弱いからなのかと疑ってPINの番号指定が違うことに気づくのが遅れました。

#さいごに

素材のお買い物の話で、素通りでいい話です。

自作用のe-paperはwaveshareから通販で買うことにしました。
国内で高解像度のものは流通していなかったから

7.5inch HD e-Paper HAT (B)
https://www.waveshare.com/7.5inch-hd-e-paper-hat-b.htm

ラズパイのHATだなあと注文した後で気づいて（適当）
waveshareのe-paper部分はgood displayから仕入れている、とどこかで見知って
ESP32だけならこっちにすればよかったと思いもしました。
ラズパイでも使えばいいかと。
http://www.good-display.com/products_detail/productId=535.html

届くのに時間がかかるのは承知なので、理解のための実装の材料は全部せんごくで揃えました。
https://www.sengoku.co.jp/index.php

デイリーポータルの方はキットを売り出すそうなので、材料を揃えるならそっちもオススメです。

https://twitter.com/tokyo_ff/status/1272905514368860162
<img width="617" alt="スクリーンショット 2020-06-21 22.32.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12362/83d96f3a-e774-b1b7-d740-cc4d34e98903.png">



# 参考サイト

## 全体的な流れ

https://macsbug.wordpress.com/2017/09/07/e-paper-with-esp32/
https://asukiaaa.blogspot.com/2019/01/esp32154epaper.html

## サンプルコードについて理解する

ここにPINの番号を書き換える記述があったのに見逃してはまってしまいました
https://garretlab.web.fc2.com/arduino/lab/epd/

##マニュアルとサンプルコード

Universal e-Paper Raw Panel Driver Board, ESP32 WiFi / Bluetooth Wireless
https://www.waveshare.com/wiki/E-Paper_ESP32_Driver_Board#Documentation

2.9inch e-Paper Module (B)
https://www.waveshare.com/wiki/File:E-Paper_ESP32_Driver_Board_Code.7z

e-paperだけのサンプルコード
https://github.com/ZinggJM/GxEPD/tree/master