概要
上記のCardputer Accessory Kitはセットになっていますが、単体のStampS3とフレキケーブルで接続できる液晶を準備して使ってみました。
StampS3側のコネクタ

StampS3の裏側にはフレキケーブルを接続するようの端子がついています。現状コネクタ付きのものは単体発売されていないので、前回のキットを購入するか自分ではんだ付けする必要があります。
8ピンコネクタ
上記のドキュメントには記載がありますが、8ピンと12ピンコネクタが利用可能です。
8ピンコネクタは上記のサイトから購入可能です。
12ピンコネクタ
12ピンコネクタは上記のものになります。
8ピンと12ピンの違いについて

回路図を見ると8ピンに4ピン追加されたのが12ピンであるとわかります。
接続先 | 8PIN | 12PIN |
---|---|---|
VIN_5V | 1 | |
GPIO18 | 2 | |
GPIO17 | 3 | |
GPIO16 | 4 | |
DISP_BL | 1 | 5 |
GND | 2 | 6 |
DISP_RST | 3 | 7 |
DISP_RS | 4 | 8 |
DISP_MOSI | 5 | 9 |
DISP_SCK | 6 | 10 |
VDD_3V3 | 7 | 11 |
DISP_CS | 8 | 12 |
上記の違いで、あまり差がないように見えますがフレキケーブル液晶を直接接続できるのは8ピンとなります。12ピンは追加で取り出せそうなGPIOを3つ追加したものであり、途中に変換基板などを経由しないと利用しにくいです。
フレキケーブル液晶側のピンアサイン
ピン番号 | 8PINコネクタ | フレキケーブル液晶 |
---|---|---|
1 | DISP_BL | LEDA |
2 | GND | GND |
3 | DISP_RST | RESET |
4 | DISP_RS | RS |
5 | DISP_MOSI | SDA |
6 | DISP_SCK | SCL |
7 | VDD_3V3 | VDD |
8 | DISP_CS | CS |
当たり前ですが対応しています。この液晶のピンレイアウトに合わせて8PINコネクタを設計していると思われます。12ピン液晶だと全然違うレイアウトになっているのでそのまま接続できるものは発見できませんでした。
入手済み液晶


1.14インチ135×240(ST7789)

キットに付属していた液晶のケーブルが短いバージョンです。仕様的にはM5StickC Plusなどに利用されているサイズになります。

StampS3よりやや大きめの液晶となります。
スケッチ例
#include <Arduino.h>
#include <M5GFX.h>
#include <lgfx/v1/panel/Panel_ST7789.hpp>
class LGFX_EXTERNAL : public lgfx::LGFX_Device {
lgfx::Panel_ST7789 _panel_instance;
lgfx::Bus_SPI _bus_instance;
lgfx::Light_PWM _light_instance;
public:
LGFX_EXTERNAL(void) {
{
auto bus_cfg = _bus_instance.config();
bus_cfg.pin_mosi = GPIO_NUM_35;
bus_cfg.pin_miso = (gpio_num_t)-1;
bus_cfg.pin_sclk = GPIO_NUM_36;
bus_cfg.pin_dc = GPIO_NUM_34;
bus_cfg.spi_mode = 0;
bus_cfg.spi_3wire = true;
_bus_instance.config(bus_cfg);
_panel_instance.setBus(&_bus_instance);
}
{
auto cfg = _panel_instance.config();
cfg.pin_cs = GPIO_NUM_37;
cfg.pin_rst = GPIO_NUM_33;
cfg.panel_height = 240;
cfg.panel_width = 135;
cfg.offset_rotation = 1;
cfg.readable = true;
cfg.invert = true;
cfg.offset_x = 52;
cfg.offset_y = 40;
_panel_instance.config(cfg);
}
{
auto cfg = _light_instance.config();
cfg.pin_bl = GPIO_NUM_38;
cfg.invert = false;
cfg.freq = 240;
cfg.pwm_channel = 3;
_light_instance.config(cfg);
_panel_instance.setLight(&_light_instance);
}
setPanel(&_panel_instance);
}
};
LGFX_EXTERNAL display;
void setup(void) {
Serial.begin(115200);
delay(2000);
display.init();
display.setBrightness(200);
display.clear(TFT_BLUE);
display.setFont(&fonts::efontJA_16_b);
display.setTextColor(TFT_RED);
display.println("Hello, World!");
display.println("はろーわーるど");
display.display();
}
void loop(void) {
}
こちらはキットに付属して液晶と同じものなので、同じコードで動きました。
1.47インチ172×320(ST7789)

キットに付属しているものより大型の液晶となります。角がまるまっていますが一回り解像度も大きいです。

サイズは横が大きくなっていますが、それほど変更ありません。

解像度の差ですが、かなり違います。キットに付属している液晶の設定のままだと周りにノイズの部分があり、ここが解像度の違いになります。

動作検証ですが、画面サイズを広げてからオフセットの値を変更していって、ノイズの部分がなくなるように調整します。上記はあと2ドット隙間がある状態です。
スケッチ例
#include <Arduino.h>
#include <M5GFX.h>
#include <lgfx/v1/panel/Panel_ST7789.hpp>
class LGFX_EXTERNAL : public lgfx::LGFX_Device {
lgfx::Panel_ST7789 _panel_instance;
lgfx::Bus_SPI _bus_instance;
lgfx::Light_PWM _light_instance;
public:
LGFX_EXTERNAL(void) {
{
auto bus_cfg = _bus_instance.config();
bus_cfg.pin_mosi = GPIO_NUM_35;
bus_cfg.pin_miso = (gpio_num_t)-1;
bus_cfg.pin_sclk = GPIO_NUM_36;
bus_cfg.pin_dc = GPIO_NUM_34;
bus_cfg.spi_mode = 0;
bus_cfg.spi_3wire = true;
_bus_instance.config(bus_cfg);
_panel_instance.setBus(&_bus_instance);
}
{
auto cfg = _panel_instance.config();
cfg.pin_cs = GPIO_NUM_37;
cfg.pin_rst = GPIO_NUM_33;
cfg.panel_height = 320;
cfg.panel_width = 172;
cfg.offset_rotation = 1;
cfg.readable = true;
cfg.invert = true;
cfg.offset_x = 34;
cfg.offset_y = 0;
_panel_instance.config(cfg);
}
{
auto cfg = _light_instance.config();
cfg.pin_bl = GPIO_NUM_38;
cfg.invert = false;
cfg.freq = 240;
cfg.pwm_channel = 3;
_light_instance.config(cfg);
_panel_instance.setLight(&_light_instance);
}
setPanel(&_panel_instance);
}
};
LGFX_EXTERNAL display;
void setup(void) {
Serial.begin(115200);
delay(2000);
display.init();
display.setBrightness(200);
display.clear(TFT_BLUE);
display.setFont(&fonts::efontJA_16_b);
display.setTextColor(TFT_RED);
display.println("Hello, World!");
display.println("はろーわーるど");
display.display();
}
void loop(void) {
}
画面サイズとオフセットの値だけ調整したものになります。
0.96インチ80×160(ST7735)

画面的にはM5StickCで利用されていた仕様になります。

画面的には小柄になります。
スケッチ例
#include <Arduino.h>
#include <M5GFX.h>
#include <lgfx/v1/panel/Panel_ST7735.hpp>
class LGFX_EXTERNAL : public lgfx::LGFX_Device {
lgfx::Panel_ST7735S _panel_instance;
lgfx::Bus_SPI _bus_instance;
lgfx::Light_PWM _light_instance;
public:
LGFX_EXTERNAL(void) {
{
auto bus_cfg = _bus_instance.config();
bus_cfg.pin_mosi = GPIO_NUM_35;
bus_cfg.pin_miso = (gpio_num_t)-1;
bus_cfg.pin_sclk = GPIO_NUM_36;
bus_cfg.pin_dc = GPIO_NUM_34;
bus_cfg.spi_3wire = true;
_bus_instance.config(bus_cfg);
_panel_instance.setBus(&_bus_instance);
}
{
auto cfg = _panel_instance.config();
cfg.pin_cs = GPIO_NUM_37;
cfg.pin_rst = GPIO_NUM_33;
cfg.panel_height = 160;
cfg.panel_width = 80;
cfg.offset_rotation = 3;
cfg.readable = true;
cfg.invert = true;
cfg.offset_x = 26;
cfg.offset_y = 1;
_panel_instance.config(cfg);
}
{
auto cfg = _light_instance.config();
cfg.pin_bl = GPIO_NUM_38;
cfg.invert = false;
cfg.freq = 240;
cfg.pwm_channel = 3;
_light_instance.config(cfg);
_panel_instance.setLight(&_light_instance);
}
setPanel(&_panel_instance);
}
};
LGFX_EXTERNAL display;
void setup(void) {
Serial.begin(115200);
delay(2000);
display.init();
display.setBrightness(200);
display.clear(TFT_BLUE);
display.setFont(&fonts::efontJA_16_b);
display.setTextColor(TFT_RED);
display.println("Hello, World!");
display.println("はろーわーるど");
display.display();
}
void loop(void) {
}
ドライバが違うのでいろいろと調整が必要した。M5StickCの設定を参考にして調整をしています。
(未検証)2.25インチ76×284(ST7789)

上記の横長液晶もピンアサイン的には使えそうです。届いたら動作確認してみたいと思います。
まとめ
キット以外にも3種類の液晶が利用可能でした。使いやすさではキットの長いケーブルのが好ましいので違う画面を使いたい場合以外はキットをおすすめします。
キット | 1.14インチ | 1.47インチ | 0.96インチ | |
---|---|---|---|---|
StampS3 | $7.50 | $7.50 | $7.50 | |
コネクタ | $0.12 | $0.12 | $0.12 | |
液晶 | $1.18 | $1.44 | $0.99 | |
$9.95 | $8.80 | $9.06 | $8.61 |
ちなみに価格的には微妙に個別で購入したほうが安いのですがコネクタのはんだ付けが必要であったり、長いケーブルは一般販売がされていなかったりと懸念事項があります。
コメント