ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【ESP32】ST7735RのTFT液晶にbitmap画像を表示させる

 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」と入力し、それぞれのライブラリをインストールします。

f:id:rikoubou:20170912152001p:plain
f:id:rikoubou:20170912152014p:plain


3:配線
f:id:rikoubou:20170912153637p:plain

 上の写真のようなピン配置になっているので、以下のように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の画像が液晶に表示されます。

f:id:rikoubou:20170912155710p:plain

 画像が表示されずシリアルモニタに「BMP format not recognized.」と表示された場合は用意したbitmap画像が表示する形式に合っていないので、別のソフトで作成するなどしてください。


 これで液晶に表示させることができるようになりました。600円しないぐらいの液晶でカラーの画像を表示させることができるのでかなりお買い得です。ですが、不良品が送られてくる場合もあるようなので、安い分リスクがあることを考慮しておきましょう。


・参考資料
[ESP32][Arduino] SPI TFT液晶 ST7735 を使ってみる – tech
GitHub - MhageGH/esp32_ST7735_Movie: Movie Player on esp32 and ST7735