M5Stack社製マイコンデバイスで使用できるGPIO

スポンサーリンク
お役立ち情報

M5Stack社製マイコンデバイスの多くには「ESP32」が使われていますが、外部から接続することのできるGPIOはデバイスによってまちまちです。
例えば、多くのM5Stack社製マイコンデバイスにはGROVEポートがついていますが、それらの接続先も、デバイスによって大きく異なっています。

スケッチをつくる際にはいつも、使用予定のデバイスではどの信号が利用可能なのか、すぐには分からず、以前つくったスケッチを確認したりマニュアルを見たりして、いちいち確認していました。
その作業が結構面倒なので、一度きちんと再確認して表にまとめてみることにしました。

M5Stack社製マイコンデバイスにおける、使用可能なGPIOは以下のとおりです。

ESP32 Module M5Stack Basic M5Bus M5Go Bottom M5Stack Core2 for AWS M5Stack CoreInk M5StickC M5StickC Plus M5Stamp Pico ATOM Lite/Matrix M5Camera/TimerCamera UnitCam
NameI/OFunction
SVPIGPIO36, ADC1ADG1BG1BHatHat
SVNIGPIO39, ADC1
IO34IGPIO34, ADC1
IO35IGPIO35, ADC1AD
IO32I/OGPIO32, ADC1G2AG2G2G2G2G1
IO33I/OGPIO33, ADC1G1AG1G1G1G1
IO25I/OGPIO25, ADC2, DACDAHat
IO26I/OGPIO26, ADC2, DACDAG2BG2BHatHatG2
IO27I/OGPIO27, ADC2
IO14I/OGPIO14, ADC2, HSPI CLKG2C
IO12I/OGPIO12, ADC2, HSPI MISO
IO13I/OGPIO13, ADC2, HSPI MOSIG1CG1
SHD/SD2I/OGPIO9(内蔵Flashと接続)
SWP/SD3I/OGPIO10(内蔵Flashと接続)
SCS/CMDI/OGPIO11(内蔵Flashと接続)
SCK/CLKI/OGPIO6(内蔵Flashと接続)
SDO/SD0I/OGPIO7(内蔵Flashと接続)
SDI/SD1I/OGPIO8(内蔵Flashと接続)
IO15I/OGPIO15, ADC2, HSPI CS
IO2I/OGPIO2, ADC2(ブートモード設定に利用)
IO0I/OGPIO0, ADC2(ブートモード設定に利用)HatHat
IO4I/OGPIO4, ADC2G2
IO16I/OGPIO16R2G1CG1
IO17I/OGPIO17T2G2CG2
IO5I/OGPIO5, VSPI CS
IO18I/OGPIO18, VSPI CLKSCK
IO19I/OGPIO19, VSPI MISOMI
IO21I/OGPIO21, I2C SDASDA
G2A
RXD0I/OGPIO3R0
TXD0I/OGPIO1T0
IO22I/OGPIO22, I2C SCLSCL
G1A
IO23I/OGPIO23, VSPI MOSIMO
  • 私がよく使うデバイスについてのみ記載しました。
  • G1, G2はGROVEポートの信号を表しています(1が外側の信号、2が内側の信号)。末尾についている「A」「B」「C」はGROVEポートが複数ある場合のタイプ(A:I2C, B:GPIO、C:UART)を表します。

M5Stack Basicは、「M5Goバッテリーボトム」などを取り付けることでGROVEポートを拡張できますが、それで接続できるようになる信号は、元々ジャンパー線で接続できる信号のみです。
ただし、「M5Bus」には外部に出ていない信号も含まれていますので、「BUSモジュール」などを使えば、元々は取り出せない信号を何本か取り出せるようになります。

M5CameraやTimerCameraは、GROVEポートひとつしかないので、外部デバイスとの接続はかなり制限されます。
例えば外付けのセンサからアナログ信号を取り込みたい場合、M5CameraやTimerCameraで使える信号はいずれも「ADC2」につながっているので、Wi-Fi接続とアナログ入力を同時使用することはできません。

 

なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。


ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。