アキバで買ってきた
先日東京に行ってきまして、息子くん念願の秋葉原でお買い物してきました。
アキバ戦利品。
— しろいとり子 (@siroitori0413) 2020年11月3日
今回GOTOで地域クーポンが沢山ついてきたのでヘッドホンはそれで買えたしラッキーだった…! pic.twitter.com/0LUSZuBdCE
今回は↑この右上にうつっている電子ペーパーで遊んだ話を書きたいと思います。
今日はアキバの千石電商で安売りしてた電子ペーパーで遊びました。
— しろいとり子 (@siroitori0413) 2020年11月6日
結局息子氏が全部やってくれたけど、これテストプログラム動かすのなかなか大変だった!!
JetsonNanoに繋いで動かしましたぞ。 pic.twitter.com/BjlYEyf7Jl
電子ペーパーとは
そもそも電子ペーパーとは。
最近ちょいちょいTwitterで見かけるものの詳細についてはよくわからぬまま、私「電子ペーパー欲しい~」とほざいておりました。
電子ペーパーの特徴。通常のディスプレイと比較すると、
・省電力
・紙のように薄い
という感じです。
「省電力」っていうのに関しては、書き込み時(表示させるとき)には電気使うけどそれも省電力、表示させた状態なら電源ぬいちゃっても長期間表示状態を保つんです!すごい!
って、私よりも息子くんのテンションが上がりました。
WaveShare WS-14600 5.83インチ
こちらが今回入手した電子ペーパー。
www.physical-computing.jp
仕様はこんな。
www.waveshare.com
こちらのサンプルコード・ライブラリをcloneして使用したとのこと。
github.com
JetsonNanoで動かしてみた
ドキュメントを読むと、Raspberry piのほかJetsonNanoでもいけるとの情報があったので、
ちょうど取り出しやすい場所にあったJetsonNanoを使ってみることにしました。
でもこれが最初の難関の始まり^^;;
JetsonNanoが起動しない・・・?
電子ペーパー関係なく、JetsonNano起動してちょっと触ってるとすぐに落ちてしまう現象発生・・・!
原因はなんてことない、パワー不足でした。
電源をタコ足してたんですよね。。
以前、ラズパイでもタコ足が原因で電力不足になって不安定で落ちてしまうことがあったので、気づくことができました。
といってもそれに気が付くまで30分くらいかかってしまいました。とほほ。
つなぐ
ピンの配線は、GitHubの下記情報を参照しました。
e-Paper/RaspberryPi&JetsonNano/python/readme_jetson_EN.txt
Pin connections can be viewed in \lib\epdconfig.py and will be repeated here: EPD => Jetson Nano/RPI(BCM) VCC -> 3.3 GND -> GND DIN -> 10(SPI0_MOSI) CLK -> 11(SPI0_SCK) CS -> 8(SPI0_CS0) DC -> 25 RST -> 17 BUSY -> 24
各色のワイヤーを気を付けながらつないでいきます。
サンプルプログラムを動かす
サンプルプログラムは、cとpythonがありましたがpythonのほうを使用しました。
■サンプルプログラム
今回購入した製品は
e-Paper/RaspberryPi&JetsonNano/python/examples/epd_5in83bc_test.py
が動作するテストプログラムのようなのでこれを使用。
■必要なライブラリ
e-Paper/RaspberryPi&JetsonNano/python/lib/waveshare_epd/
も配置します。
環境を整えていざ実行!
しかし!プログラムを実行しても固まったようになって動きませんでした。
サンプルプログラムのGitHubのIssues見たらたくさんの「動かない」報告。
これはもしかしたらうまくいかないやつだったのかもしれない・・泣
なんて言いながら、ピンをつなぎなおしてみたり、ケーブルを裏向きにしてさしなおしてみたり(そういう情報もあったけど結局最初にささってた方向で合ってた)、だいぶ時間を使いました。
結果後でわかったことですが、実際には動いていたんです。
まずPuDBというデバッガでデバッグしてみた息子くん。
えええっ、pythonってこんなVBみたいにデバッグできるの!しかもLinuxで!ってびっくりした私でした。
デバッグしてみると初期処理も描画処理もちゃんと動いていました。
その描画処理中、
epd.display(epd.getbuffer(LBlackimage), epd.getbuffer(LRYimage))
このdisplayの関数の中では、3万回以上ループ処理されている模様でした。
このループ中で止まってるのかも?
とにらんで、ループ中にログ出力させながら、実行。
すると、
ちゃーんと進みました。赤で囲ってる部分がループの処理。33599回実行されています。
じつはこれプログラム起動してから全部終わるまで5分位かかってました。
今まで「固まった」って思ったのは処理に時間がかかってただけみたいでした。
時間かかりすぎ・・
そしてちゃんとサンプル画像が表示されることを確認しました!
おおっ、電源ぬいても表示されたままー♪
Raspberry piで動かしてみた
次の日ラズパイでも動かしてみました。
我が家のはRaspberry pi 3 model b です。
ピンへの配線は今度は下記を参考にしました
e-Paper/RaspberryPi&JetsonNano/python/readme_rpi_EN.txt
Pin connections can be viewed in \lib\epdconfig.py and will be repeated here: EPD => Jetson Nano/RPI(BCM) VCC -> 3.3 GND -> GND DIN -> 10(SPI0_MOSI) CLK -> 11(SPI0_SCK) CS -> 8(SPI0_CS0) DC -> 25 RST -> 17 BUSY -> 24
驚いたのが、JetsonNanoでは表示されるまでだいぶ待たないといけなかったのに、ラズパイだと早かった!
「ぴゅん」とまではいかないけど、少し待てば表示されるといったふうでした。
プログラムに手を加えて、ラズパイに接続したカメラで撮影した画像を出力するようにもしてみました。
この電子ペーパーは2色対応なんですが、黒い画像と赤い画像を合成する形で作られていて、今回の画像は黒のみで出力するようにプログラムすることでこのようにグレースケール表示できるようにしたとのことでした。
今後の展望
ケースを3Dプリンターで作って、置いておけるようにしたいな~。