ESP32 3.5inch LCD ボードでの開発

あっという間に今月も半ばになった。現役時代ほどじゃないけど年金生活者にも正月のイベントはある。それらにつきあったり、今月21日の中国の春節のお休みを避けようとPCBを設計して発注したり、Aliexpress のお店に注文を出したりで過ぎてしまった。かの地もコロナの感染拡大によりいろいろと混乱しているかと思いきや、基板もパーツ、モジュールも続々と届き始めている。基板やパーツが滞留しないように製作を進めることに。

 

これまで ESP32 で WiFi の通信機能 ESP-NOW を使って室内のコントローラーから、室外の機器を制御するいろいろなものを作ってきた。以前に作った同軸切替器や

panarilab.hatenablog.comMLA(マグネチックループアンテナ)のコントローラーなどである。それぞれの スイッチャー、MLA ごとに室内側のコントローラーを作ってきた。

表示、スイッチなど加工も表示もけっこう時間もかけ、パワーを投入して、それなりに知見が得られた。これらの機器を同時に操作することはないこと、卓上のスペース節約すること、ESP-NOW が 1対N の通信機能できることを活かして、室内側のコントローラをまとめることにした。
使用するのは、LCD ディスプレイ + タッチパネル付きの ESP32 ボード。写真の左は 3.5 inch 、右は 2.8 inch のものを  Aliexpress のお店 から購入した。いずれも技適マーク付きである。

このボードの開発に関しては、こちらのページ ともうひとつ こちらの ページ を参考にした。画面の大きな 3.5 inch ものを使って進めることにする。

室外機との通信、コントロールソフトのメインの部分はすでに出来上がっているものを使えば良い。入力スイッチの代わりにタッチパネルからコマンドを得て、ターゲットに送信し、結果を表示する。タッチパネルやグラフィックスの表示などは購入したお店のリンクからライブラリがダウウンロードして使用できる。

いろいろ確認した結果、参考にした上記の二つのページでも取り上げられている評判の良い

github.comを使う。

サンプルコードを見ながらスケッチを書き、ボードにダウンロードして画像などを確認する。このボードに限らず、表示アドレスとタッチパネルの座標とは一致しないので画面を確定してからポジションを同定することにする。

実際に Arduino IDE でスケッチを書いてコンパイル、ダウンロードしてみるとコンパイラが遅いことと、時折書き込みに失敗して、すごく時間がかかる。ドキュメントなどを確認していたら、グラフィクスは同じ作者による パソコン上で動かせるシュミレーターがあることがわかった。新たに Visual Studio Community 2022 をインストールする必要がある。バージョンの違う Visual Studio もインストールしてあり、他のも含めて IDE だらけになるので、すこし躊躇したが他に良い方法がない。

というわけで前述のページを参考にしながらインストールして私の PC 環境に合わせて設定を行った。これを使うと Arduino IDE のスケッチと同じコードで一回のシュミレーションは 10秒ほどでできる。Arduino IDE ではコンパイルに 2 分、ボードの書き込みは 10 秒以内だが、書き込みに失敗するとコンパイルからやらないといけないので、かなりのストレスになる。 

何度も画面、フォント、色を変更して、ベース画面の最終版としてのがこの画像。

Arduino IDE にコードを写して、ESP32 の実機ではこんなふうになる。これをもとに、タッチポイントのアドレスを確定してスイッチに割り当て、コントロールソフトを仕上げていく。

それにしてもグラフィックスは難しい、というか面倒くさい。デザインをしっかりやって画面を作っていくのが正解なのだろうが、試行錯誤になるので PC で高速シュミレーションできるのはありがたい。