黄色い基板1.9インチESP32-1732S019

概要

黄色い基板シリーズの最新作である1.9インチモデルを買いました。これまでは外部接続端子が搭載されていましたが、数が少なく画面中心のボードでしたが外部にピンがたくさんでている使いやすいボードが販売されました。

製品

上記の公式ストアから購入しました。

7インチモデルは技適マークなしモジュールでしたが、今回は技適付きモジュールでした。タッチパネル用のコネクタは搭載されていますが、現在タッチパネル無ししかラインナップされていません。

画面は一般的なSPI接続のST7789になります。ESP32-S3シリーズはパラレルばかりだったので普通っぽい構成です。

このボードでは13ピンのピンヘッダも付属しており、いろいろ使いやすそうな構成となっています。

LovyanGFXのスケッチ例

#define LGFX_USE_V1
#include <LovyanGFX.hpp>

class LGFX : public lgfx::LGFX_Device {
  lgfx::Panel_ST7789 _panel_instance;
  lgfx::Bus_SPI _bus_instance;
  lgfx::Light_PWM _light_instance;
public:
  LGFX(void) {
    {
      auto cfg = _bus_instance.config();

      // SPIバスの設定
      cfg.spi_host = SPI3_HOST;  // 変更
      cfg.spi_mode = 0;
      cfg.freq_write = 40000000;
      cfg.freq_read = 16000000;
      cfg.spi_3wire = true;
      cfg.use_lock = true;
      cfg.dma_channel = SPI_DMA_CH_AUTO;
      cfg.pin_sclk = 12;  // 変更
      cfg.pin_mosi = 13;  // 変更
      cfg.pin_miso = -1;  // 変更
      cfg.pin_dc = 11;    // 変更

      _bus_instance.config(cfg);
      _panel_instance.setBus(&_bus_instance);
    }

    {
      auto cfg = _panel_instance.config();

      cfg.pin_cs = 10;    // 変更
      cfg.pin_rst = 1;    // 変更
      cfg.pin_busy = -1;  // 変更

      cfg.panel_width = 170;  // 変更
      cfg.panel_height = 320;
      cfg.offset_x = 35;  // 変更
      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 = false;  // 変更

      _panel_instance.config(cfg);
    }

    {
      auto cfg = _light_instance.config();

      cfg.pin_bl = 14;  // 変更
      cfg.invert = false;
      cfg.freq = 44100;
      cfg.pwm_channel = 7;

      _light_instance.config(cfg);
      _panel_instance.setLight(&_light_instance);
    }

    setPanel(&_panel_instance);
  }
};

LGFX display;

void setup(void) {
  display.init();

  display.setTextSize((std::max(display.width(), display.height()) + 255) >> 8);

  display.fillScreen(TFT_BLACK);
}

uint32_t count = ~0;
void loop(void) {
  display.startWrite();

  display.setRotation(++count & 7);
  display.setColorDepth((count & 8) ? 16 : 24);

  if (count % 8 == 0) {
    display.fillScreen(TFT_BLACK);
  }

  display.setTextColor(TFT_WHITE);
  display.drawNumber(display.getRotation(), 16, 0);

  display.setTextColor(0xFF0000U);
  display.drawString("R", 30, 16);
  display.setTextColor(0x00FF00U);
  display.drawString("G", 40, 16);
  display.setTextColor(0x0000FFU);
  display.drawString("B", 50, 16);

  display.drawRect(30, 30, display.width() - 60, display.height() - 60, count * 7);
  display.drawFastHLine(0, 0, 10);

  display.endWrite();

  delay(500);
}

ESP32-S3なのでcfg.spi_host = SPI3_HOSTと、無印ESP32とはちょっと指定方法が異なります。それ以外はほぼ同じ使い方で大丈夫なはずです。

デフォルトでは縦なのかな。問題なく使えそうです。

備考

付属USB端子について

CH340C経由でESP32-S3のシリアル端子に接続されています。そのためESP32-S3のUSB用ピンを利用しておらず、比較的使いやすい構成となっています。

USB制御について

ESP32-S3はUSBデバイスにもUSBホストにもなることができますが、本体にはUSB端子が搭載されていません。自分でGPIO19と20にUSBコネクタを搭載することで利用可能となります。

ESP32-S3-DevKitCだと左側がUARTに接続されているUSB端子で、右側がESP32-S3のGPIO19と20に接続されている端子と2つ搭載している場合が多いです。ただし、この構成の場合にはUSBデバイスとして利用する場合と、USBホストとして利用する場合でコネクタや電源入出力が変わってくるのに対応できません。

黄色ボードではUSBポートを自分でGPIO19と20に接続する必要がありますが、まあ許容範囲だと思います。

ピンについて

USBが出ているのは嬉しいですが、BOOTのGPIO0とかJTAGのGPIO3などはでていませんでした。ADCは左側に偏っていて、右側のピン配置は順番が微妙なのであとから使えるピンを出力していった雰囲気がします。

未使用のタッチパネル用の0.5ミリチッチのコネクタにGPIO8、3、46(PU)、9(PU)も出ていました。

搭載モジュールについて

ESP32-S3でPSRAM8M、フラッシュ16Mの一番性能がよいモジュールが搭載されています。

まとめ

これまでは画面検証用のボードという感じでしたが、小型画面ですので汎用的に利用できるボードになった印象です。

ピンもそれなりに使えて、画面付きでかなり価格も安いので使いやすいボードになりそうです。自作基板などにこのボードをピンヘッダで搭載させるなどして、組み込みやすいと思います。

ESP32-S3-DevKitCはType-Cではないので、このボードを何枚か買いまししたいと思いますが、技適マークなしが来ないことを祈ります。。。

コメント