M5Stack Cardputer Accessory Kit(A145)

概要

Cardputerに搭載されているM5StampS3とDisplayの交換用部材として販売されているキットを単体で利用できるか確認してみました。中身はM5StickC Plusなどで利用されているLCDと同じものになります。

製品

ブログを書いているときはまだスイッチサイエンスからの販売はありませんでした。ちょっと入手性が悪いのですが、自作のプロダクトなどに画面を組み込みたいときに非常に便利なキットになりそうなので入手してみました。

LCDが同梱されているのでプラスチックケースに入っています。

中身はM5StampS3とDisplayの他にシールと分解用の六角レンチになります。本当は画面が壊れた場合に修理キットになります。

m5-docs
The reference docs for M5Stack products. Quick start, get the detailed information or instructions such as IDE,UIFLOW,Ar...

公式ドキュメントは上記になります。分解方法の他にLCDの接続方法が動画で解説してあるので参考にして組み立てます。

付属している本体は1.27のピンヘッダが付いているものでした。

画面は普通のものよりケーブルが長い特注モデルな気がします。

裏側です。

接続するためには真ん中のコネクタを爪の部分を立ち上げてからケーブルを差し込みます。金色の端子が上になっている状態です。

爪を倒すと固定されます。

サンプルスケッチ

#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) {
}

上記のスケッチで画面の初期化と、文字の出力をしている最低限のテストコードになります。

上記を参考にさせてもらいました。

こんな感じで利用可能でした。

まとめ

非常に使いやすいキットなのですが、M5Unifiedを使うとM5VAMeterと自動判定されてそのままでは利用できないのと、不要な初期化がされてしまうのでおすすめはしません。

M5GFXもしくは、そのもとになったLovyanGFXを使って画面のみ制御するのが好ましいと思います。このセット自体はM5StampS3とDisplayだけなので、実は自作することが可能です。

M5StampS3にコネクタをはんだ付けして、別途AliExpressで購入した複数種類の画面を接続するテストをしてみたいと思っています。

コメント