やったのは2021年10月ごろです
きっかけ
Amazonでe-paperを購入できることを知って、低消費電力ダッシュボードを作ることを思いついた。
意外にもカラーのものがあるのでそれを使ってみる。
GoogleのAPIからカレンダー、予定を表示させます。あと天気も気象庁のページから。
あとせっかくカラーを買ったので、背景はGoogle Photoのアルバムからランダムに選択するようにしました。
全体像
ラズパイで作れば簡単なのですが、ラズパイは消費電力がでかいのでESP32を電池で駆動させる。
マイコン使うのは初めてです。MicroPythonのファームウェアを書き込んで作る。
マイコンに画像生成するような能力はないので、PaaS上で画像生成APIを作ってそれを介して表示させる。
マイコンからGoogleのアクセストークンと画像生成パラメータ(JSON)を送信して、画像を生成。
工夫したところ
・欲張ってカラーにしたら画像のサイズがRAM容量を超えてしまったので、uhttpライブラリのコードを書き直して受信→ディスプレイのコントローラーに送信を繰り返して表示させるようにした。
・e-paperの特性上、画像が表示されるまで時間がかかる。その間にWiFiモジュールを付けていると電力を食うので通信終わったら即座にオフに
・表示させたら設定した時間だけDeep sleepして節電。ただマイコンの内部タイマーはあまり正確でないらしいので、起きるたびにNTPで時刻を補正。
完成
単3電池2本から昇圧して駆動させています。節電したつもりだったのですが、10分間隔では3日程度しか持ちませんでした。
まあ10分ごとに更新する必要もないと思うので、1時間とかにすれば、実用範囲のものになるかなと思います。
ただ、カレンダーは複雑な漢字を表示するには画素数不足を感じてしまいますね。
おまけ
設定ファイル生成用GUIを作ってみた。時間かかった割にビジュアルがプアな感じでちょっと悲しい。
ソースコード
API
https://github.com/phabet/e-indicator-api
ESP32
https://github.com/phabet/e-Paper-Micropython
コンフィグGUI
https://github.com/phabet/e-indicator-configure