液晶モジュールを使ってみたい(Arduino 2.4 インチ TFT 液晶タッチスクリーンシールド) その2

2023年5月9日Arduino/ESP32Adafruit,Arduino,LCD,MCUFRIEND,NodeMCU-32S,ドライバ,空中配線

さて前回使ってみようと試みたものの、使い方が判らなかったArduino用2.4インチのLCDシールドですが、、

色々調べて回り、とりあえずなんか診断プログラムでコントローラを判別してから使うみたいな感じの様ですのでその様に進めていきます。

というわけでこちらのライブラリを使わせて頂きます。

このライブラリには、LCDコントローラを判別するサンプルが含まれている様でして。

説明を見ると、

1. The Arduino Library Manager should find and install MCUFRIEND_kbv library

Arduinoライブラリマネージャからインストールしてくれとあるので、PlatformIOからチャチャっとインストールしまして、、、

2. Install the Adafruit_GFX library if not already in your User libraries.

Adafruit_GFXライブラリも入れろとあるのでこれも同様に導入します。

3. Insert your Mcufriend style display shield into UNO. Only 28-pin shields are supported.

で、シールドをUNOに差し込めと。

難関が。

とりあえずArduinoのピン配置と見比べてみます。

Arduino-左LCD-左Arduino-右LCD-右
0 RX←A5
1 TX→A4LCD_RST
2LCD_D2A3LCD_CS
3 PWMLCD_D3A2LCD_RS
4LCD_D4A1LCD_WR
5 PWMLCD_D5A0LCD_RD
6 PWMLCD_D6
7LCD_D7VIN
GNDGND
8LCD_D0GND
9 PWMLCD_D15V5V
10 PWMSD_SS3.3V3.3V
11 PWMSD_D1RESET
12SD_D0IOREF
13SD_SCK
GND
AREF

どうやらLCDのコントロールを担っているのは、以下の5ピンの様です。

LCD_RST
LCD_CS
LCD_RS
LCD_WR
LCD_RD

電源とGNDはとりあえず3.3VとGNDを繋いでおくとして、、

このコントロールピンをArduinoのAnalogピンに接続する様になっている様ですね。

そしてデータ制御っぽい LCD_D1~LCD_D7 の8本は、Arduinoのデジタルピンに接続する模様。

これをESP32に当てはめてみると、、

デジタルピンはとりあえず何でも良さそうですが、Analogピン、、、?

LCDの制御にアナログOUTとか使わないでしょうよ・・・?

なんか不安ですので、ESP32のArduino互換ボードのピン配置を確認してみます。

WeMos D1 R32 というボードが確かArduinoシールドが使える系のボードだったと思うのでピン配置を照らし合わせてみると、、、

Arduino-左LCD-左WeMos D1 R32-左Arduino-右LCD-右WeMos D1 R32-右
0 RX←RX← 0A5IO39
1 TX→TX→ 0A4LCD_RSTIO38
2LCD_D2IO26A3LCD_CSIO34
3 PWMLCD_D3IO25A2LCD_RSIO36
4LCD_D4IO17A1LCD_WRIO4
5 PWMLCD_D5IO16A0LCD_RDIO2
6 PWMLCD_D6IO27
7LCD_D7IO14VINVIN
GNDGNDGND
8LCD_D0IO12GNDGND
9 PWMLCD_D1IO135V5V5V
10 PWMSD_SSIO53.3V3.3V3.3V
11 PWMSD_D1IO23RESETRST
12SD_D0IO19IOREF5V
13SD_SCKIO18IO0
GNDGND
AREFRST
SDA
SCL

Analogピンに指定されている箇所は GPIO39,GPIO38,GPIO34, GPIO36,GPIO4,GPIO2 となっており、ESP32のAnalogOutが出来るピンは使ってなさそう。

という事はAnalogを使うにしてもReadが出来ればいいと。

多分デジタル出力だと思いますけど・・・

とにかく沢山繋がなくてはいけない様ですん( ノД`)

我らの NodeMCU-32S との接続はこんな感じに。

キモい感じにつながってます。

見事な空中配線(ぇ

接続はこんな感じ。

NodeMCU-32S 左LCD-左NodeMCU-32S 右LCD-右
2LCD_RST
12LCD_D20LCD_CS
27LCD_D34LCD_RS
26LCD_D416LCD_WR
25LCD_D517LCD_RD
33LCD_D6
32LCD_D7
GNDGND
35LCD_D0
34LCD_D15V
SD_SS3.3V3.3V
SD_D1
SD_D0
SD_SCK

多分使っちゃいけないピンとか避けれた、、と思う。
※GPIO12は繋ぐとプログラムの書き込みが不安定になるらしく、何度も書き込み失敗しましたので避けてあります。

さてここで診断プログラムを実行してみようと思うます。

MCUFRIEND_kbvのexamplesの中に、LCD_ID_readreg というのがあるまして。(\MCUFRIEND_kbv\examples\LCD_ID_readreg\LCD_ID_readreg.ino)

これをコピってきてちょっと編集。

先頭の辺りのピンの定義を書き換えておきます。

//-- Arduino UNO or Mega 2560 Plugged as shield
/*
#define LCD_RST A4
#define LCD_CS A3
#define LCD_RS A2
#define LCD_WR A1
#define LCD_RD A0

#define LCD_D0 8
#define LCD_D1 9
#define LCD_D2 2
#define LCD_D3 3
#define LCD_D4 4
#define LCD_D5 5
#define LCD_D6 6
#define LCD_D7 7
*/
#define LCD_RST 2
#define LCD_CS 0
#define LCD_RS 4
#define LCD_WR 16
#define LCD_RD 17

#define LCD_D0 35
#define LCD_D1 34
#define LCD_D2 14
#define LCD_D3 27
#define LCD_D4 26
#define LCD_D5 25
#define LCD_D6 33
#define LCD_D7 32

こんな感じに。

そしてシールド定義も同様に書き換えておきます。

utilityの中にヘッダファイルがあるまうすので、これをゴリっと。

一番下の方に、ESP32のセクションがあります。

//################################### ESP32 ##############################
#elif defined(ESP32)       //regular UNO shield on TTGO D1 R32 (ESP32)

/*
#define LCD_RD  2  //LED
#define LCD_WR  4
#define LCD_RS 15  //hard-wired to A2 (GPIO35) 
#define LCD_CS 33  //hard-wired to A3 (GPIO34)
#define LCD_RST 32 //hard-wired to A4 (GPIO36)

#define LCD_D0 12
#define LCD_D1 13
#define LCD_D2 26
#define LCD_D3 25
#define LCD_D4 17
#define LCD_D5 16
#define LCD_D6 27
#define LCD_D7 14
*/

#define LCD_RST 2
#define LCD_CS 0
#define LCD_RS 4
#define LCD_WR 16
#define LCD_RD 17

#define LCD_D0 35
#define LCD_D1 34
#define LCD_D2 14
#define LCD_D3 27
#define LCD_D4 26
#define LCD_D5 25
#define LCD_D6 33
#define LCD_D7 32

さて、、、

書き込んでみますと。。

ts Jun Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit     
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values     
in special locations (first is dummy)

reg(0x0000) C0 C0       ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 00 00 00 Manufacturer ID
reg(0x0009) 00 00 00 00 00      Status Register
reg(0x000A) 00 00       Get Power Mode
reg(0x000C) 00 06       Get Pixel Format
reg(0x0061) 00 00       RDID1 HX8347-G
reg(0x0062) 00 00       RDID2 HX8347-G
reg(0x0063) 00 00       RDID3 HX8347-G
reg(0x0064) 00 00       RDID1 HX8347-A
reg(0x0065) 00 00       RDID2 HX8347-A
reg(0x0066) 00 00       RDID3 HX8347-A
reg(0x0067) 00 00       RDID Himax HX8347-A
reg(0x0070) 00 00       Panel Himax HX8347-A
reg(0x00A1) 00 00 00 00 00      RD_DDB SSD1963
reg(0x00B0) 00 00       RGB Interface Signal Control
reg(0x00B4) 00 02       Inversion Control
reg(0x00B6) 00 0A 82 27 04      Display Control
reg(0x00B7) 00 02       Entry Mode Set
reg(0x00BF) 00 0F 0F 0F 0F 0F   ILI9481, HX8357-B
reg(0x00C0) 00 B2 B2 B2 B2 B2 B2 B2 B2  Panel Control
reg(0x00C8) 00 02 00 00 00 00 00 00 00 00 00 00 00      GAMMA
reg(0x00CC) 00 30       Panel Control
reg(0x00D0) 00 00 00    Power Control
reg(0x00D2) 00 00 00 00 00      NVM Read
reg(0x00D3) 00 00 00 00 ILI9341, ILI9488
reg(0x00D4) 00 00 00 00 Novatek ID
reg(0x00DA) 00 00       RDID1
reg(0x00DB) 00 00       RDID2
reg(0x00DC) 00 00       RDID3
reg(0x00E0) 00 08 0E 12 05 03 09 47 86 2B 0B 04 00 00 00 00     GAMMA-P
reg(0x00E1) 00 08 0E 12 05 03 09 47 86 2B 0B 04 00 00 00 00     GAMMA-N
reg(0x00EF) 00 00 00 00 00 00   ILI9327
reg(0x00F2) 00 00 00 00 00 00 00 00 00 00 00 00 Adjust Control 2
reg(0x00F6) 00 00 00 00 Interface Control

IDがC0 C0、、、?

ILI9481, HX8357-B が0F 0F、、、?

わかんねっす・・・

その他色々接続を変えたり、LCD_ID_readnew.ino(\MCUFRIEND_kbv\examples\LCD_ID_readnew\LCD_ID_readnew.ino) を使ってみたりしてもウンともスンともいわづ

ギブアップ!

LCDのドライバが判らないと動かせないんすね・・・

他のライブラリも試みてみようかと少しだけ思ったのですが、ちょっと力尽きてしまい。

腹いせにこのLCDの裏の基盤に何か書いてないかと、固定されていたグルーをベリっと引っぺがし

なんかPCB変換っぽいパターンがついてますね・・・

コンデンサがいくつかと、、抵抗やダイオードがありそうな箇所に抵抗は無し

一番左のグチャっとしている何かが気になりますが

KAと書いてある様です。

型式らしき文字が。

SKY024S15B V9 2018/11/24 と書いてあります。

わかんねっす・・・

ちょっとまたお蔵入りかなトホー

誰かこのボードの使い方が判る方がおりましたら教えてくだしあ