概要
いろいろな液晶を接続して、使えそうな液晶を確認してみました。条件としてはそのまま接続が可能なものに限っています。
動作確認した液晶
ST7735S 0.96インチ 80×160(SPI接続)

これはM5StickCと同じ液晶になります。

裏側はこんな感じでM5Stamp Picoが綺麗に隠れます。ただしボタンが押せませんね。ちなみに一番上のバックライトのピンは入力専用の36につながっています。そのため出力ができないのでバックライト制御としては使えません。ピン設定では-1として未使用にしてください。
たぶんものとしてはこれのはず。
ST7789 1.14インチ 135×240(SPI接続)

M5StickC Plusの液晶になります。少し大きくなりました。

これくらいのサイズになると余白があまってきますね。
製品的にはこれかな。
ST7789 1.3インチ 240×240(SPI接続)

正方形の液晶になります。240×240なのでそれなりに大きく画面使えますね。

M5Stampの倍以上の幅がありますね。このボードはいままでと同じように見えてCSピンが無いので注意してください。個人的にはあまりおすすめしません。
微妙にバージョン違いますが似たのはこれかな。
ST7789 1.54インチ 240×240(SPI接続)

こちらも正方形の液晶になりますね。

こちらも隙間に小さい基板とかおけそうですね。
製品はこれになるかな。
ST7789 2.0インチ 240×320(SPI接続)

画面サイズ的にはM5Stackなどと同じ大きさと解像度ですね。パネルとかはちょっと違います。

かなり液晶が大きいです。そして裏側が結構違いますね。この液晶は実はピン配置が逆さになっています。なのでM5Stampがボタンがあるほうが表に接続が可能です!
日本だと入手できないかも?
私は上記から購入しました。
SSD1306 0.96インチ 128×64(I2C接続)

よくあるI2C接続の単色OLEDです。

サイズ的にはピッタリです。ちなみにこのOLEDはI2Cで省電力なのでGNDとVCCをM5StampのGPIOピンで動かしています。ESP32的には28mAまでのデバイスであれば動作するはずです。ピンの制約はないのでボタンが使える向きで接続しています。左右も少しずらしても動きます。
このOLEDはSPI接続のものもありますが、M5Stampで使うのであればI2Cか他の液晶を使ったほうがいいと思います。
製品的にはこれですね。単品で買うとあまり安くないですが、セットだと安いのがあります。
こちらは単色なので、色を選択してから買うことになります。とはいえ、おもったより安くないのでわざわざこれを使う必要はないのかなとも思います。
大きさ比較

左上がI2C接続のSSD1306 0.96インチ、その右が比較用のM5Stamp Pico。下段は左から0.96、1.14、1.30、1.54、2.0インチになります。
接続方法
基本的には一番端っこからGND、VCCの配列の液晶のみM5Stamp Picoにそのまま接続が可能です。新品の場合にははんだ付けをしなくても動くのですが、なんどか抜き差ししていると接触不良になります。
基本的にははんだ付けして接続するか、複数回抜き出しする場合にはピンソケットを使ってください。
I2Cに関してのみ28mAまでのデバイスであれば比較的自由に接続が可能です。digitalWriteでGNDとVCCを生成します。
また、書き込み機から電源供給をすると3.3Vで動くことになります。液晶は5Vで動く前提のバックライトになっているのが多いので、5Vも供給するのがよいと思います。私はGrove端子の5Vから供給しています。

上記はM5StampにGrove経由でI2Cハブに接続し、モバイルバッテリーから電源供給。残りのポートからI2C接続の液晶系ユニットを接続して動かしている様子です。
動かし方
上記にサンプルをおいてあります。
//M5UnitOLED display(/*SDA*/32, /*SCL*/33);
//M5UnitLCD display(/*SDA*/32, /*SCL*/33);
//LGFX_ESP32_SSD1306_I2C display(/*GND*/22, /*VCC*/21, /*scl*/19, /*sda*/18, /*port Wire=0, Wire1=1*/0, /*addr*/0x3C);
//LGFX_ESP32_ST7735S_SPI/*0.96*/ display(/*width*/ 80, /*height*/160, /*sclk(SCL)*/25, /*mosi(SDA)*/22, /*rst*/21, /*dc*/19, /*cs*/ 18, /*bl*/ -1, /*miso*/ -1, /*busy*/ -1);
//LGFX_ESP32_ST7789_SPI/*1.14*/ display(/*width*/135, /*height*/240, /*sclk(SCL)*/25, /*mosi(SDA)*/22, /*rst*/21, /*dc*/19, /*cs*/ 18, /*bl*/ -1, /*miso*/ -1, /*busy*/ -1);
//LGFX_ESP32_ST7789_SPI/*1.3*/ display(/*width*/240, /*height*/240, /*sclk(SCL)*/25, /*mosi(SDA)*/22, /*rst*/21, /*dc*/19, /*cs*/ -1, /*bl*/ 18, /*miso*/ -1, /*busy*/ -1);
//LGFX_ESP32_ST7789_SPI/*1.54*/ display(/*width*/240, /*height*/240, /*sclk(SCL)*/25, /*mosi(SDA)*/22, /*rst*/21, /*dc*/19, /*cs*/ 18, /*bl*/ -1, /*miso*/ -1, /*busy*/ -1);
//LGFX_ESP32_ST7789_SPI/*2.0*/ display(/*width*/240, /*height*/320, /*sclk(SCL)*/21, /*mosi(SDA)*/19, /*rst*/18, /*dc*/25, /*cs*/ 22, /*bl*/ -1, /*miso*/ -1, /*busy*/ -1);
上記の液晶が並んでいる場所のコメントを外すと動くようになるはずです。
とはいえ、液晶はST7789などのLCDドライバと、実際の液晶パネルの組み合わせで動いています。同じような液晶でも大きさや製造元が違うと外に出ているピンアサインが違ったり、色の設定が違ったりします。
なので結局は自分で細かい設定を変更しながら微調整をする必要がでてくる場合があります。そして微調整が必要なときってのは、なにをどう調整していいのかわからないです。。。
今回はLovyanGFXを利用していますが、液晶パネルの情報はあまりありません。Adafruitのライブラリなどで動かしてみても、ちゃんと動かない液晶が実は結構あります。。。がんばって動くライブラリを探して設定の差分などを確認するしかないようです。
なので、個人的にはマイナーな液晶を使うのではなくメジャーなやつを使うほうが無難だと思います。
余談ですが、ILI9341などの液晶が一番メジャーだと思いますがVCCが端っこになる配列なのでそのままではM5Stampには接続できません。残念。。。変換基板とかジャンパケーブル使えばいいんですが、ポン付けって楽ですよね。
まとめ
ST7796でも4インチとかの液晶もあります。ただAliExpressで購入しても20ドル以上しますので、ちょっと手がでないし一般的じゃないですよね? ちなみにタッチパネル搭載モデルもありました。
あと、ラウンド液晶とかも購入しましたがうまく動きません。動くライブラリはあったのですがメジャーなライブラリでは動きませんでした。実際のところ高いので、四角い液晶を使ったほうが多くの場合安くなると思います。。。
液晶はAliExpressで購入すれば一番小さいST7735S 0.96インチ 80×160が送料込みで4ドル以下で安いところでは購入できます。大きめのST7789 2.0インチ 240×320(SPI接続)でも9ドル以下ぐらいで購入できました。
送料は複数買えば圧縮可能な店もあります。あと残念ながら日本国内だとAmazonがプライムでもそこそこ安いので、店舗で取り扱っている店は極端に少ないです。Amazonもプライム以外は中国からの発送なので直接AliExpressで購入したほうが安い物が多いので注意してください。



























![HiLetgo 0.96" I2C シリアル 128×64 OLED LCDディスプレイSSD1306液晶 STM32/51/MSP430/Arduinoに対応 ホワイト [並行輸入品]](https://m.media-amazon.com/images/I/41nLOEMgTrL._SL160_.jpg)





























コメント
お疲れさまでございます
お仕事はFIFOなんですが
趣味の製作はFILOなんで少しずつ作らないと間に合いません(謎
こちらの記事をみてちょっとひらめきましたので
是非 ご賞味くださいませ
https://qiita.com/chrmlinux03/items/61230cdf74e13a6c12e7