ユニットLCDは、1.14インチカラー液晶ディスプレイの拡張画面ユニットです。ST7789V2駆動方式を採用し、解像度は135*240、RGB666表示(262,144色)に対応しています。ESP32-PICO制御コアの内部統合(ファームウェア内蔵、ディスプレイ開発がより便利)、I2C(addr | 0x3E)通信インターフェースによる制御とファームウェアアップグレードをサポートします。画面背面にはマグネットを内蔵しており、金属面に簡単に吸着して固定することができます。LCDスクリーンエクステンションは、表示パネルとして簡単なコンテンツを表示する必要がある様々な機器や制御機器への組み込みに適しています。
仕様 | パラメータ |
---|---|
画面駆動用IC | ST7789V2 |
動作電流 | 45.7mA |
通信プロトコル | I2Cアドレス: 0x3E |
表示サイズ | 1.14インチ |
画素ピッチ | 0.1101(H) x 0.1038(V)mm |
解像度 | 135*240 |
表示可能サイズ | 全画面表示 |
動作温度 | 0~40℃ |
製品重量 | 8.5g |
梱包重量 | 20g |
製品サイズ | 48×24×8mm |
梱包サイズ | 67×52×12.5mm |
ケース素材 | プラスチック(PC) |
M5Core(PORT A) | GPIO22 | GPIO21 | 5V | GND |
---|---|---|---|---|
ユニットLCD | SCL | SDA | 5V | GND |
データシート
ライブラリ
ファームウェア
#include <M5UnitLCD.h>
M5UnitLCD display;
M5Canvas canvas(&display);
static constexpr char text[] = "Hello world ! こんにちは世界! this is long long string sample. 寿限無、寿限無、五劫の擦り切れ、海砂利水魚の、水行末・雲来末・風来末、喰う寝る処に住む処、藪ら柑子の藪柑子、パイポ・パイポ・パイポのシューリンガン、シューリンガンのグーリンダイ、グーリンダイのポンポコピーのポンポコナの、長久命の長助";
static constexpr size_t textlen = sizeof(text) / sizeof(text[0]);
int textpos = 0;
int scrollstep = 2;
void setup(void)
{
display.init();
display.setRotation(2);
canvas.setColorDepth(1); // mono color
canvas.setFont(&fonts::lgfxJapanMinchoP_32);
canvas.setTextWrap(false);
canvas.setTextSize(2);
canvas.createSprite(display.width() + 64, 72);
}
void loop(void)
{
int32_t cursor_x = canvas.getCursorX() - scrollstep;
if (cursor_x <= 0)
{
textpos = 0;
cursor_x = display.width();
}
canvas.setCursor(cursor_x, 0);
canvas.scroll(-scrollstep, 0);
while (textpos < textlen && cursor_x <= display.width())
{
canvas.print(text[textpos++]);
cursor_x = canvas.getCursorX();
}
display.waitDisplay();
canvas.pushSprite(&display, 0, (display.height() - canvas.height()) >> 1);
}
未定義のコマンドは、NOP として扱われます。
16進数 | LEN | コマンド | 説明 | 送信パラメータ |
---|---|---|---|---|
0x00 | 1-∞ | NOP | 通信が停止するまで何もしない | [0] 0x00 [1-∞] 無視された値 |
0x20 | 1 | INVOFF | 色反転を無効にする | [0] 0x20 |
0x21 | 1 | INVON | 色反転有効 | [0] 0x21 |
0x22 | 2 | BRIGHTNESS | バックライトの明るさ設定 0:消灯~255:全灯 |
[0] 0x22 [1] 明るさ(0~255) |
0x23 | 7 | COPYRECT | 矩形範囲コピー | [0] 0x23 [1] コピー元 X_Left [2] コピー元 Y_Top [3] コピー元 X_Right [4] コピー元 Y_Bottom [5] コピー先 X_Left [6] コピー先 Y_Top |
0x2A | 3 | CASET | X方向範囲選択 | [0] 0x2A [1] X_Left [2] X_Right |
0x2B | 3 | RASET | Y方向選択 | [0] 0x2B [1] Y_Top [2] Y_Bottom |
0x36 | 2 | ROTATE | 描画方向設定 0:標準 / 1:90° / 2:180° / 3:270° 4-7: 0〜3を上下反転 |
[0] 0x2A [1] 設定値(0-7) |
0x38 | 2 | SET_POWER | 動作回転数設定値 (消費電力設定) 0:低速 / 1:通常/ 2:高速 |
[0] 0x38 [1] 設定値(0-2) |
0x39 | 2 | SET_SLEEP | 液晶パネルスリープ設定 0:ウェイクアップ/1:スリープ |
[0] 0x39 [1] 設定値(0-1) |
0x41 | 2-∞ | WRITE_RAW_8 | 描画画像RGB332 | [0] 0x41 [1] RGB332 [1]通信STOPまで |
0x42 | 3-∞ | WRITE_RAW_16 | draw image RGB565 | [0] 0x42 [1-2] RGB565 [1-2]通信STOPまで |
0x43 | 4-∞ | WRITE_RAW_24 | draw image RGB888 | [0] 0x43 [1-3] RGB888 [1-3]通信STOPまで |
0x44 | 5-∞ | WRITE_RAW_32 | draw image ARGB8888 | [0] 0x44 [1-4] ARGB8888 until [1-4]通信STOPまで |
0x45 | 2-∞ | WRITE_RAW_A | draw image A8 only alpha channel. Use the last used drawing color. |
[0] 0x45 [1] A8 [1]通信STOPまで |
0x49 | 3-∞ | WRITE_RLE_8 | RLEイメージRGB332を描画 | [0] 0x49 [1-∞] RLEデータ |
0x4A | 4-∞ | WRITE_RLE_16 | draw RLE image RGB565 | [0] 0x4A [1-∞] RLE Data |
0x4B | 5-∞ | WRITE_RLE_24 | draw RLE画像 RGB888 | [0] 0x4B [1-∞] RLE Data |
0x4C | 6-∞ | WRITE_RLE_32 | draw RLE画像 ARGB8888 | [0] 0x4C [1-∞] RLE Data |
0x4D | 3-∞ | WRITE_RLE_A | RLEイメージA8を描画 アルファチャンネルのみ。 最後に使用した描画色を使用します。 |
[0] 0x4D [1-∞] RLE Data |
0x50 | 1 | RAM_FILL | 最後に使用した描画色で選択範囲を塗りつぶす | [0] 0x50 |
0x51 | 2 | SET_COLOR_8 | 描画色をRGB332で指定 | [0] 0x51 [1] RGB332 |
0x52 | 3 | SET_COLOR_16 | RGB565 で描画色を指定 | [0] 0x52 [1-2] RGB565 |
0x53 | 4 | SET_COLOR_24 | RGB888 で描画色を指定 | [0] 0x53 [1-3] RGB888 |
0x54 | 5 | SET_COLOR_32 | ARGB8888 で描画色を指定 | [0] 0x54 [1-4] ARGB8888 |
0x60 | 3 | DRAWPIXEL | 1ドット描画 格納されている描画色を使用 |
[0] 0x60 [1] X [2] Y |
0x61 | 4 | DRAWPIXEL_8 | シングルドット描画 RGB332 1Byte 描画色指定用 |
[0] 0x61 [1] X [2] Y [3] RGB332 |
0x62 | 5 | DRAWPIXEL_16 | 1ドット描画 | [0] 0x62 [1] X {2} Y [3-4] RGB565 |
0x63 | 6 | DRAWPIXEL_24 | シングルドット描画 RGB888 3Byte 描画色指定 |
[0] 0x63 [1] X [2] Y [3-5] RGB888 |
0x64 | 7 | DRAWPIXEL_32 | 一点描画 ARGB8888 4Byte 描画色指定 既存描画内容との透明合成 |
[0] 0x64 [1] X [2] Y [3-6] ARGB8888 |
0x68 | 5 | FILLRECT | 矩形を塗りつぶす 格納されている描画色を使用 |
[0] 0x68 [1] X_Left [2] Y_Top [3] X_Right [4] Y_Bottom |
0x69 | 6 | FILLRECT_8 | 矩形塗り潰し RGB332 1Byte 描画色指定 |
[0] 0x69 [1] X_Left [2] Y_Top [3] X_Right [4] Y_Bottom [5] RGB332 |
0x6A | 7 | FILLRECT_16 | 矩形塗り潰し RGB565 2Byte 描画色指定 |
[0] 0x6A [1] X_Left [2] Y_Top [3] X_Right [4] Y_Bottom [5-6] RGB565 |
0x6B | 8 | FILLRECT_24 | 矩形塗り潰し RGB888 3Byte 描画色指定 |
[0] 0x6B [1] X_Left [2] Y_Top [3] X_Right [4] Y_Bottom [5-7] RGB888 |
0x6C | 9 | FILLRECT_32 | 矩形塗り潰し ARGB8888 4Byte 描画色指定 既存描画内容との透明合成 |
[0] 0x6C [1] X_Left [2] Y_Top [3] X_Right [4] Y_Bottom [5-8] ARGB888 |
0xA0 | 4 | CHANGE_ADDR | I2Cアドレスの変更。 意図しない変更を防ぐことができます。 [2]は[1]のビット反転値を指定します。 |
[0] 0xA0 [1] 新しいI2Cアドレス [2] [1]のビット反転値 [3] 0xA0 |
16進数 | len | コマンド | 説明 | 返値 |
---|---|---|---|---|
0x04 | 1 | READ_ID | IDとファームウェアのバージョン 4Byte受信 |
[0] 0x77 [1] 0x89 [2] Major version [3] Minor version |
0x09 | 1 | READ_BUFCOUNT | 残りのコマンドバッファを取得します。 値が大きいほど余裕があります。 連続して読み出すことができます。 |
[0]コマンドバッファ残量(0~255) 繰り返し受信可能です。 |
0x81 | 1 | READ_RAW_8 | RGB332イメージの読み出し | [0] RGB332 通信STOPまで[0]を繰り返す。 |
0x82 | 1 | READ_RAW_16 | RGB565 画像の読み出し | [0-1] RGB565 通信STOPまで[0-1]を繰り返す。 |
0x83 | 1 | READ_RAW_24 | RGB888 画像の読み出し | [0-2] RGB888 通信が STOP するまで [0-2] を繰り返す。 |
例 矩形塗り潰しコマンド0x6Aを使用して、X16-31、Y32-47の矩形範囲を赤で塗り潰す。
インデックス | 16進数 | 説明 |
---|---|---|
0 | 0x6A | 矩形をRGB565で塗りつぶす。 |
1 | 0x10 | 左X方向 |
2 | 0x20 | Yトップ |
3 | 0x1F | Xライト |
4 | 0x2F | Yボトム |
5 | 0xF8 | カラーデータ RRRRRGGG(赤) |
6 | 0x00 | カラーデータ GGGBBBBB(赤) |
コマンド 6Ah は、合計 7Byte のコマンド列です。 送信中に I2C 通信の STOP または RESTART が発生した場合、コマンドは処理されません。 1回の送信シーケンスで最後まで途切れることなく送信する必要があります。
矩形塗り潰しコマンドは、68h~6Chのいずれかを使用することができます。 インデックス1~4は同じですが、インデックス5以降は色の指定方法が異なります。
コマンド68hの記憶色
は、最後に指定した色を再利用することを意味します。
つまり、同じ色の矩形塗りつぶしを何回か続けて行いたい場合、最初の矩形塗りつぶしだけ色を指定し、68hコマンドで色指定を省略することができるのです。
コマンド6Ch、ARGB8888では、アルファチャンネル(透明度)を指定することで、すでに描かれている内容を描画色と合成することができます。
例 範囲指定コマンド 0x2A/0x2B と画像送信コマンドを使用して、X10~13、Y14~17 の矩形範囲に画像を描画する。
インデックス | 16進数 | 説明 |
---|---|---|
0 | 0x2A | X方向範囲指定 |
1 | 0x0A | X Left(10) |
2 | 0x0D | X Right(13) |
3 | 0x2B | Y方向範囲指定 |
4 | 0x0E | Y Top(14) |
5 | 0x11 | Y Bottom(17) |
6 | 0x43 | 描画イメージRGB888 |
7-54 | ?? | 画像データ(RGB888×16) |
例: WRITE_RLEコマンドでRLE(ランレングスエンコーディング)画像を送信する。
インデックス | 16進数 | 説明 |
---|---|---|
0 | 0x4A | RLEイメージRGB565を描画 |
1 | 0x07 | 連番(7pixel) |
2-3 | 0xF800 | 色データ(赤) |
4 | 0x00 | 連番(0pixel) ダイレクトモードに切り替わります。 |
5 | 0x03 | ダイレクトモードの連続番号(3pixel) |
6-7 | 0x07E0 | カラーデータ(緑) |
8-9 | 0x001F | 色データ(青) |
10-11 | 0xF800 | 色データ(赤) |
12 | 0x04 | 連続番号(4pixel) |
13-14 | 0x001F | 色データ(青) |
上記の例では、以下のように処理されます。
M5Burner をダウンロードし、UNITの液晶ケースを開けて、 ESP32 DOWNLOADER でアップデートしてください。
上記の
Githubソースコード
または
リソースページからM5Burnerをダウンロード
をコンパイルし、M5Core1/Core2/M5StickC/Plus/ATOM/PaperのいずれかのマスターコントローラにRecord LCD_UNIT_FirmwareUpdater
ファームウェアを書き込みます。UNIT LCDをI2Cポートに配線することで、自動的にアップデートが開始されます。