ESP32と ILI9488ドライバでTFTを動かすには?
esp32とILI9488ドライバー搭載の3.5インチ 480×320 TFT LCDモジュールの設定と注意点などまとめました。
ILI9488 3.5インチ 480×320 TFT LCD
3.5インチ 480×320 の TFT LCDモジュールを購入しました
高解像度タッチスクリーン、65Kカラーディスプレイ、SPIインターフェース搭載ということでしたのでつい手が出てしまいました ^^;
太陽熱温水器のコントローラーが調子悪かったので、この際TFTタッチスクリーンで自作しようという思いつきでの購入です
TFT ボタンスイッチを作成しました
TFTモジュールの購入は初めてになりますが結構大きめですね
包装シールにはドライバー:ILI9488 , Bus SPI ,Touch yes それに品番が記入されています
タッチスクリーンには保護シールが貼られていました
裏はこんな感じ
ピンが多いですね
TFT表示用とタッチ用ピンがあります
表示だけならタッチピンは使いません
esp32 tftタッチシールド の使い方 ① ボタン作成
HSPIとVSPI
このTFTモジュールはバスSPI規格で通信するということでこれまで使ってきたI²Cとはやや勝手が違いました
ネット情報では HSPI接続されているようで、しかもMISOは使わないとか??
最も使っても使わなくてもTFTの表示はされます
ということでHSPIとVSPIについてまとめると…
① SPI0 これは内部専用で使えない
② HSPI (Host SPI)ユーザー使用可能
③ VSPI (Virtual SPI)ユーザー使用可能
シリアル通信にSerial2などあるようにSPIも2つ用意されています
TFT接続にはどちらを使っても問題なく動作します
カズはヘッダファイル記載のようにVSPIを使いました
これには理由もあって…
このTFTモジュールでお風呂の温度や太陽熱温水器の湯量や温度を表示したり水やお湯を流す電磁弁の操作するために2台のesp32を使います
esp32同士の通信にはespnowというルーターに依存しない通信を使うのですがWIFI使用中は使えるピンが2~3しかないことが判っています
ということで使えるGPIOピン側を空けています
HSPI VSPI GPIOピン
TFTとesp32の接続でCSピンは他のピンでもほぼ使えます(esp32で制限されていないピンならOKです)
PIN | HSPI | VSPI |
---|---|---|
MOSI | 13 | 23 |
MISO | 12 | 19 |
CLK | 14 | 18 |
CS | 15 | 5 |
TFT_eSPIライブラリをダウンロード
TFTを動かすためにTFT_eSPIマスターファイルをダウンロードします
上のリンク先からCode をクリックしてZIPファイルをダウンロードします
arduinoIDEから「スケッチ」 ⇒ 「ライブラリをインクルード」 ⇒ 「ZIP形式のライブラリをダウンロード」と進み、先程DLした TFT_eSPI-master zip を選択します
TFT_eSPI-master
このTFT_eSPI-masterファイルは殆ど全てのドライバーやマイコンに対応するように作られています
そのため記述はありますが全てコメント形式になっているので必要な部分だけコメント // を外して使います
インストールされたファイルは「libraries」フォルダの中の「TFT_eSPI_master」フォルダにあります
User_Setup h ファイル
TFT_eSPI_masterを開いてUser_Setup hファイルを開きます
修正する箇所は2箇所でデフォルト設定を先ず// でコメントアウトします
45 行 #define ILI9341_DRIVER ⇒ // #define ILI9341_DRIVER (先頭に半角でダブルスラッシュ // を入れる)
170〜176行 #define TFT_MISO PIN_D6 から #define TFT_RST PIN_D4 までをドライバーと同様の処理をする
初期設定を使えないように上書き保存して完了です
次にesp32のGPIOとILI9488ドライバーのコメントを外します
コメントを外しTFTのILI9488ドライバーを選択します
② GPIPピンを指定する
TFTのCSピンやMOSIピンとesp32で使用するGPIOピンを設定します
212行あたりになります
これも上書き保存して完了です
一部コメントアウトだけではなくGPIOピンを変更していますがタッチ設定との兼ね合いです ^^;
特にGPIO 2 はプログラムの書き込みに影響することがあるので注意が必要です
TFT_MISO 19 はコメントアウトしたままでもTFTの動作には影響しませんがタッチ設定では必要になります
TFT サンプルスケッチ
簡単なサンプルスケッチです ^^;
1 2 3 4 5 6 7 8 9 10 11 | # include <TFT_eSPI.h> TFT_eSPI tft = TFT_eSPI(); void setup() { tft.init(); tft.setRotation(1); tft.fillScreen(TFT_BLACK); tft.setTextColor(TFT_WHITE, TFT_BLACK); tft.drawString( "Hello ILI9488 World!" , 50, 100, 4); } void loop() { } |
ESP32と ILI9488でTFTが動いた!まとめ
サンプルスケッチは簡単なお決まりの呪文、Hello World のTFTバージョンです ^^;
esp32 で動作確認済みですのでGPIOピンを設定したら試してみてください
TOUCH タッチ設定は近日アップしますので見てねっ !