ESP32とLCDがくっ付いた、ESP32-2432S024Cを使って見る

# 目的
　特にこれを作ると言う意思も無かったが、ESP32-2432S024Cを購入した。
　黄色いボード色を特徴としたESP32ボードシリーズの比較的最新作。
　液晶とタッチパネルがビルトインなので、後で配線を忘れると言う事も無い。
　タッチパネルは容量式で触り心地が良いのではと思っている。
　バッテリー接続端子も付いており、モバイルも可。※バッテリーは別売りだよ。
　最大の特徴はCPUがESP32-WROOMだと言う事、之なら技適警察の目に触れないだろう。
　◆◆◆　よし、携帯型のファミコン擬きでも作ってみるか　◆◆◆
　ゲームパットはどうしようかな。タッチパネルによる操作で満足できるだろうか。

![Image00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/ca960823-3c3b-cb9a-7b91-b6feb5d12e31.jpeg)

# 経緯
　AliEXのセールを見ていたら、黄色いボードが目についた。
　ESP32-2432S024Cを含むシリーズは、7～1.28インチの表示器が存在するようだ
　24Cは比較的新しい様で資料が少ない、ESP32-2432S028の方が有名なのだろう。
　しかしシリーズなのだろうが回路が同一でも無い様で、多少の変更が必要のようだ。
　ESP32-2432S024には24N(タッチ無し)、24R(抵抗タッチ)、24C(容量タッチ)の3種類が有る。
　多少高めだがタッチの操作性の良いと考え24Cを購入した。
　　※抵抗式は指先で強く押さないと、反応が鈍いような。
　24Cの資料は製造元が「ESP32-2432S024.ZIP」の名称で公開している。
　　※登録が必要なサイトも有るが、登録無しで利用できるサイトも存在していた。
　　　「jingcai ESP32 module」で見つけたが、正式かどうかが不明なのでURLは割愛。
　見た限りでは2432S028と2432S024Cの違いは、
　　バックライトの制御信号ピン　　28:21　  24C:27
　　タッチパネル　　28:XPT2046(抵抗式)　　24C:CST820(容量式)
　又、28,24C共にバックライトの店頭処理が必要で、Adafruitの例等は追加処理が必要。
　　※モバイル利用を想定して居るのと思う。

　タッチパネルに使用しているCST820のライブラリは２種類見つかった。
　　bb_captouchとしてライブラリとして公開されているもの。
　　24Cのデモプログラムに含まれているもの、cst820.cpp。
　何れもシングルポイントには対応しているが、それ以外の動作は挙動が良く判らない。
　bb_captouchでは２点タッチに対応して居るが、タッチ後約100ms程度で一旦停止する。
　　※何らかの初期化が必要なのだろうが、cst820.cppに書かれている方法では動作せず。
　　※cst820.cppにはゼスチャーについての記載が有るが、これも動作せず。
　　※肝心な部分は契約しないと開示しないのだろう。しょうがないか。

　参考プログラムのMovingIcons,BallMazeを動作させるにはLovyanGFXライブラリの導入が必要だが、之は2432S028迄にしか対応して居ない。
　24Cで使用する場合は先ずLovyanGFXライブラリを導入後、下記ファイルを該当位置のファイルと交換が必要。
  　※LovyanGFXの1.1.12をベースにしており、それ以外ではこのファイルを使用しない事。
　　※簡単な変更なのでファイルの差し替えでは無く、ライブラリの該当位置の書き換えの方が望ましい。
　　「[LovyanGFX一時的更新ファイル](https://github.com/hi631/ESP32-2432S024C/tree/master/LovyanGFX%2B24C)」
　　　LGFX_AUTODETECT.hpp
　　　LGFX_AutoDetect_ESP32_all.hpp
　この状態で放置するとライブラリ更新が発生した場合、更新点が抹消されるので、
　ライブラリ名称を「LovyanGFX+24C」に変更し、library.propertiesを差し替えておく事により更新されなくなる。

　なお資料のZIPが見つかれば必要無いだろうが、参考として回路図を下記に上げておく。
　　「[ESP32-2432S024C回路図](https://github.com/hi631/ESP32-2432S024C/tree/master/Schematic)」

# 開発環境設定
　arduino環境は、ググれば一杯出て来るだろう。
　参考プログラムのincludeに記載が有れば、別途ライブラリの導入を行ってください。
　ライブラリを書き換える場合、通常は、ドキュメント\Arduino\libraries下に格納されている筈。

# 参考プログラム
　動作下記人したプログラムをgithubに上げておく。
　元のデモプログラムを24C用にアレンジしただけだが、プログラム理解の一助になれば幸いである。
　「[ESP32-2432S024C 参考プログラム](https://github.com/hi631/ESP32-2432S024C)」
 　動作画面
 ![Image01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159764/f8ac881f-f4a4-f34f-7bb1-54f8b4d5e2c9.jpeg)

　参考プログラムの簡単な動作説明を下記に示す。

1.LED
　基板動作確認用、3色LEDが点滅する。

2.graphicstest
　LCD確認用、AdafruitのILI9341サンプルに24Cのピンを割り当てた。
　　※動作が遅いのは汎用になって居る為だろう。

3.touch1
　タッチパネルに使用しているCST820の動作確認。bb_captouchに2点タッチ時の表示を追加。
　タッチ情報はシリアルに出力するので、シリアルモニタを表示しておくこと。

4.touch2
　同上、タッチ結果をLCDに表示している。
　　※２点タッチで画面をクリアする。※2点目の位置が間違って居る気がする。

5.Keypad_240x320
　タッチパルから数字の入力を行う。
　タッチパルとLCDの、入力と表示エリアの協調動作確認用。
　　※キャリブレを取って無いので、位置ズレしてる場合はプログラムによる補正が必要。

6.MovingIcons
　LovyanGFXによる動作例。ピンを合わせただけ。
　ライブラリの一時的更新をしていれば、ESP32-2432S024Cをdefineするだけで動作する筈。
　　※よく出来たライブラリ、描画の早い事にちょっと驚き。

7.BallMaze
　画面を左右に回転させ迷路内のボールを下に落し、迷路から脱出するゲームらしい。
　之も同様にESP32-2432S024Cで動作するように、デモソフトに改造を施したもの。
　24Cには物理ボタンが無いので、釦の機能をパネルに作り込んだ。
　回転は画面中央付近の左右タッチで、右回転・左回転を始める。※之は元々の仕様。
　上部でチョロチョロして居るのは拡大率調整、左右スライドで変更可。
　下部でチョロチョロして居るのは回転速度調整、左右スライドで変更可。
　　※チラチラするのは希望する動作では無く、描画のタイミングが不味い為だが良く判らない。

8.Factory_samples_Capacitive_touch
　元々書き込まれていたサンプルソフト。
　このプログラムをコンパイルするには、下記の変更が必要。
　　User_Setup.h,lv_conf.hをTFT_eSPIライブラリの所定位置にコピー。
　　ライブラリのlvgl\src\demosフォルダを、lvglフォルダ直下にコピー。


# 感想
　単にESP32とLCDをドッキングしただけの代物だが、使い勝手は良い。
　何より安い。日本でも買えるがAliEXで買えば部品代よりも安いのでは。
　1～2週間で届くものも有る。※郵送費が多少(0.5K程度)増えるが。
　なお支払いは念の為にpaypal経由で行っている。※之がどれ程信用出来るかは不明だけど。
　なお、上記記載内容は全て無保証であり、各自の責任においてご利用願います。