amazonでESP32で使えそうな液晶を探していたら、このような商品を見つけました。
HiLetgo 1.8インチ ドライバ IC ST7735R SPIインタフェース 解像度128*160 TFT液晶ディスプレイモジュール PCBが付け for Arduino 51
この液晶にESP32を使ってbitmap画像を表示させてみたので、その備忘録です。
1:材料
・ESP32 DevKitC
・HiLetgo 1.8インチ ドライバ IC ST7735R SPIインタフェース 解像度128*160 TFT液晶ディスプレイモジュール PCBが付け for Arduino 51
・壊れても良いようなSDカード
2:ライブラリをインストールする
Arduino IDEを立ち上げ、スケッチ→ライブラリをインクルード→ライブラリを管理を選択し、ライブラリマネージャを立ち上げます。
検索欄に「Adafruit_GFX」、「Adafruit_ST7735」と入力し、それぞれのライブラリをインストールします。
3:配線
上の写真のようなピン配置になっているので、以下のようにESP32と繋ぎます。
液晶側ピン | ESP32側ピン |
---|---|
LED- | GND |
LED+ | 3V3 |
SD_CS | IO4 |
MOSI | IO23 |
MISO | IO19 |
SCK | IO18 |
CS | IO5 |
SCK | IO18 |
SDA | IO23 |
A0 | IO17 |
RESET | IO16 |
NC | -(繋がない) |
NC | -(繋がない) |
NC | -(繋がない) |
VCC | 3V3 |
GND | GND |
4:SDカードにbitmap画像を入れる
SDカードに128×160のサイズのbitmap画像(ファイル名「test.bmp」)を直下に配置します。bitmapを作成できるソフトは色々ありますが、自分の場合はClipStudioPaintでbmp出力させました。
SDカードに画像を配置したら、液晶の裏面についているSDカードスロットに差し込みます。
5:サンプルソースを動かす
スケッチの例→Adafruit ST7735 Library→spitftbitmapのファイルを開き、別名で保存します。
保存したスケッチを以下のように書き換えます。
/* 33〜35行目 */ #define TFT_CS 5 // Chip select line for TFT display #define TFT_RST 16 // Reset line for TFT (or see below...) #define TFT_DC 17 // Data/command line for TFT . . . Serial.begin(115200); /* 45行目 */ . . . bmpDraw("/test.bmp", 0, 0); /* 61行目 */ . . .
以上のように書き換えたらESP32にスケッチを書き込んでください。test.bmpの画像が液晶に表示されます。
画像が表示されずシリアルモニタに「BMP format not recognized.」と表示された場合は用意したbitmap画像が表示する形式に合っていないので、別のソフトで作成するなどしてください。
これで液晶に表示させることができるようになりました。600円しないぐらいの液晶でカラーの画像を表示させることができるのでかなりお買い得です。ですが、不良品が送られてくる場合もあるようなので、安い分リスクがあることを考慮しておきましょう。
・参考資料
・[ESP32][Arduino] SPI TFT液晶 ST7735 を使ってみる – tech
・GitHub - MhageGH/esp32_ST7735_Movie: Movie Player on esp32 and ST7735