中国 JLX 社の 128x64の SPI接続LCDを買ってきました。
これを ESP32で動かしてみます。
JLX12864G 液晶スペック
- 型番 JLX12864G-332-PN
- 128x64 2.1in モノクロ液晶
- 液晶色:青/白 、白/青 または 黒/緑
- 見た目 STN 形式
- バックライトLED付
- 接続 SPI
- 動作電圧 3.3V
- コントローラ ST7567
- PCB付き
- PCBサイズ 58.4x47.5mm
- 表示サイズ 48.62x24.94mm
- 使用LCDモジュール JLX12864G-332
- 消費電力 バックライト無し 1mW(3.3V0.3mA),バックライト点灯時最大 150mW(3.3V45mA)
JLX 社ホームページ
http://www.jlxlcd.cn/
商品ページ
http://www.jlxlcd.cn/html/zh-detail-274.html
データシート
http://www.jlxlcd.cn/UpFile/2014822141524.pdf
環境
- Arduino 1.8.10 for Linux
- esp32 by Espressif System Version 1.0.3
- WEMOS LOLIN32
購入
taobao で購入しました。
通信方法と電源電圧、色が選択して購入できます。SPI版、3.3Vで色はそれぞれを購入しています。
PCB
SPI 版を購入しました。購入したものを調べてみると基板の R3,R4 のどちらをジャンパーするかでモードを作り分けているようです。
JLX12864G の SPI 信号線
通常の4線式SPIは、MOSI、MISO, CS(SSと呼称のこともあり),CLOCK、の4本となりますが、今回のSPI通信にはそれに加え CD 信号が必要となります。更に SPI 信号とは別に 液晶モジュール自体をリセットする RST 信号も配線します。
実は今回の実際の配線は MISO が無いため合計5本です。更に液晶モジュール上の表記では、一般的な表記ではなく以下のような表記になっています。
SPI信号名 | 液晶モジュール上の端子表記 |
---|---|
MOSI | D7(SDA) |
MISO | 使用せず |
CLOCK | D6(SCK) |
CS | CS |
CD | RS |
(リセット信号) | RST |
余談として、CD信号が必要なSPIは「4-wire SPI」と呼ばれることもありますが、MOSI,MISO,CLOCK,CS のセットのことを 4-wire SPI と呼ぶ方が主流ぽいです。信号線の把握には注意が必要です。
cf.,電子ペーパー を ESP32 と Arduino開発環境で使う その3
https://qiita.com/nanbuwks/items/1a4d58fc7f74ab8c8d85
配線
以下のように配線しました
LCD PCB上表記 | 信号の意味 | ESP32信号 | WEMOS LOLIN32 PCB表記 |
---|---|---|---|
LEDA | LED電源 | 3V3 | 3V3 |
VSS | GND | GND | GND |
VDD | 3V3 | 3V3 | 3V3 |
RS | Data/Command | 15 | 15 |
RST | RESET | 21 | SDA/21(*1) |
CS | CableSelect | 5 | SS/5/LED |
07(SDA) | MOSI | 23 | MISO/23(2*) |
06(SCK) | CLOCK | 18 | SCK/18 |
*1 WEMOS LOLIN32 上の SDA は I2C 通信のためのものです。今回はESP32のハードウェアSPIのデフォルトピン配置を使うため、別の GPIO23 を使います。
*2 PCB 上に書かれている MISO/23 は誤植です。
ソフトウェア
ソフトウェアのサンプルがデータシートに書かれている他、Arduino のライブラリなどでも使えそうなものがいくつかあります。
JLX12864Gに使われている ST7567 は、ST7565またはUC1701 UC1705 などと互換性があるみたいで、それらで使われているものを探すと g8glib が使えるかも知れないということがわかりました。
また、身近なところでは、秋月電子の
「超小型グラフィックLCD AQM1248A」
https://akizukidenshi.com/catalog/g/gP-07005/
が同じ ST7565 を使用しています。AQM1248A 用のスケッチを使うこともできるでしょう。
今回は、
「aqm1248a esp8266 esp32」
https://hatakekara.com/aqm1248a/
ページの AQM1248A 用のスケッチを使い、縦ドット数を48から64に変更などしてみました。
バックライトの取扱
電池で動かしていると、バックライトの輝度がふらつくので調べてみました。
データシートによると、3つのLEDがついてますね。
割と電流が流れます。マイコンのIOに直結するのは難しそうです。
また電圧が MAX 3.1V なので3.3V系の電源に直結するのも考えものです。
3.3V に繋ぐには、電流制限が必要ですがLED並列なので工夫が必要ですね。