

マルツの2023/3/30メールマガジン広告を見て、無意識にポチってしまった「WT32-SC01 Plus」を試しに動かしてみました(;'∀')USBに繋ぐだけで直ぐにタッチDispのGUI作れて超便利!(税込¥12,500!?)
1.1 「WT32-SC01 Plus」の概要
「WT32-SC01 Plus」の特徴として、従来の「WT32-SC01」に比べ、CPUがESP32からESP32-S3に、ディスプレイインターフェースがSPIから8ビットパラレルに変更されたことにより、表示速度が大幅に改善されています。※左記Youtubeリンク先を見て買うのを決めました(*'▽')いい
また、SDカードスロットが追加され、周辺機器どうしを接続できるOTG(On-The-Go)にも対応したことにより使い勝手が大幅に向上したとの事。


| 項目 | 内容 |
| CPU | Dual core X tensa 32 bit LX 17 MCU |
| メモリ | フラッシュ:最大16MB、PSRAM:最大 8MB |
| WIFI | 2.4GHz Wi-Fi(802.11b/g/n) (日本国内技適認証済み) |
| Bluetooth | Bluetooth 5(LE) module (日本国内技適認証済み) |
| 表示LCD | IPS 3.5 LCD 320×480ピクセル / Display Driver IC:ST7796U |
| タッチスクリーン | 静電容量型 / Touch Screen IC:FT6336U |
| 電源入力 | DC5V/500mA (USB Type-C 経由) |
| アンテナ | 内蔵型 |
| Interface | RS485 / USB / Speaker / SD_Card / Extendet_IO_port |
| 寸法 | 本体約92mm×60mm×10.8mm |
| 重量 | 本体約 100g |

PinNoは、左上をPin1として反時計回りにPin41


1.3 「WT32-SC01 Plus」の回路図
「WT32-SC01 Plus」の回路図を図4に示します。

2.実験!
実際に「WT32-SC01 Plus」をPCに接続すると、図5左図のプリインストールされたGUIが表示されます。
今回はGIT HUBに「sukesh-ak/WT32-SC01-Plus_ESP32-S3.ino」として公開されているソースコードをそのまま使用させて頂き、「WT32-SC01 Plus」画面をタッチしてお絵描き出来るシンプルアプリを書き込んでみました!!(^^)!図5右の通りお絵描き出来ました!


2.1 準備
USB-TypeCケーブルで「PC」と「WT32-SC01 Plus」 を接続し、以下ArduinoIDE(無ければココからダウンロード)にボードやらライブラリやらをインストールすれば準備完了です!

たまねぎブログさん記事「ESP32-S3-DevkitC-1」を参考にさせて頂きました。




※補足:LovyanGFXライブラリとは?
ESP32とSPI, I2C, 8ビットパラレル接続のディスプレイ / ESP8266とSPI接続のディスプレイ / ATSAMD51とSPI接続のディスプレイの組み合わせで動作するグラフィックライブラリです。AdafruitGFX や TFT_eSPI と互換性をある程度持ちつつ、より高機能・高速動作
◇既存のライブラリに対して、以下のアドバンテージがあります。
・ArduinoESP32 / ESP-IDF 対応
・16bit / 24bitカラーモード両対応(実際の色数はディスプレイの仕様によります)
・DMA転送を用いた通信動作中の別処理実行
・オフスクリーンバッファ(スプライト)の高速な回転/拡縮描画
・複数ディスプレイの同時利用
・モノクロディスプレイに対する減色描画の自動処理
・OpenCV,SDL2を描画先として利用でき、PC上で動作可能
・コンポジットビデオ信号(NTSC,PAL)を出力できます (ESP32のみ)
・#define LGFX_AUTODETECT // 自動認識 (パネルID読取りが出来ない物は自動認識対象外)
2.2 プログラム
図5右で動いている、「sukesh-ak/WT32-SC01-Plus_ESP32-S3.ino」コードは以下の通りです。

/*
Simple Touch Drawing sample for WT32-SC01-Plus_ESP32-S3
Requirements:
- Development board : WT32-SC01-Plus_ESP32-S3
- Arduino Library - Display/Touch : LovyanGFX
- Board selected in Arduino : ESP32S3 Dev Module
*/
#define LGFX_USE_V1 // set to use new version of library
#include // main library
class LGFX : public lgfx::LGFX_Device
{
lgfx::Panel_ST7796 _panel_instance; // ST7796UI
lgfx::Bus_Parallel8 _bus_instance; // MCU8080 8B
lgfx::Light_PWM _light_instance;
lgfx::Touch_FT5x06 _touch_instance;
public:
LGFX(void)
{
{
auto cfg = _bus_instance.config();
cfg.freq_write = 20000000;
cfg.pin_wr = 47;
cfg.pin_rd = -1;
cfg.pin_rs = 0;
// LCD data interface, 8bit MCU (8080)
cfg.pin_d0 = 9;
cfg.pin_d1 = 46;
cfg.pin_d2 = 3;
cfg.pin_d3 = 8;
cfg.pin_d4 = 18;
cfg.pin_d5 = 17;
cfg.pin_d6 = 16;
cfg.pin_d7 = 15;
_bus_instance.config(cfg);
_panel_instance.setBus(&_bus_instance);
}
{
auto cfg = _panel_instance.config();
cfg.pin_cs = -1;
cfg.pin_rst = 4;
cfg.pin_busy = -1;
cfg.panel_width = 320;
cfg.panel_height = 480;
cfg.offset_x = 0;
cfg.offset_y = 0;
cfg.offset_rotation = 0;
cfg.dummy_read_pixel = 8;
cfg.dummy_read_bits = 1;
cfg.readable = true;
cfg.invert = true;
cfg.rgb_order = false;
cfg.dlen_16bit = false;
cfg.bus_shared = true;
_panel_instance.config(cfg);
}
{
auto cfg = _light_instance.config();
cfg.pin_bl = 45;
cfg.invert = false;
cfg.freq = 44100;
cfg.pwm_channel = 7;
_light_instance.config(cfg);
_panel_instance.setLight(&_light_instance);
}
{
auto cfg = _touch_instance.config();
cfg.x_min = 0;
cfg.x_max = 319;
cfg.y_min = 0;
cfg.y_max = 479;
cfg.pin_int = 7;
cfg.bus_shared = true;
cfg.offset_rotation = 0;
cfg.i2c_port = 1;
cfg.i2c_addr = 0x38;
cfg.pin_sda = 6;
cfg.pin_scl = 5;
cfg.freq = 400000;
_touch_instance.config(cfg);
_panel_instance.setTouch(&_touch_instance);
}
setPanel(&_panel_instance);
}
};
static LGFX lcd; // declare display variable
// Variables for touch x,y
static int32_t x,y;
void setup(void)
{
lcd.init();
// Setting display to landscape
if (lcd.width() < lcd.height()) lcd.setRotation(lcd.getRotation() ^ 1);
lcd.setCursor(0,0);
lcd.printf("Ready to touch & draw!");
}
void loop()
{
if (lcd.getTouch(&x, &y)) {
lcd.fillRect(x-2, y-2, 5, 5, TFT_RED);
lcd.setCursor(380,0);
lcd.printf("Touch:(%03d,%03d)", x,y);
}
}

図10:プログラム例
3.まとめ!
「WT32-SC01 Plus」 のタッチ入力から画面への表示が出来るようになりました!(^^)! 今回は使っていませんが、microSDカードスロットが折角有るのでそのうち動かしてみたいと思います(^^)/さて、この¥12,500のモノ買ったはいいが何に使うか・・・?
励みになりますのでよければクリック下さい(^o^)/