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 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Name | I/O | Function | |||||||||||
SVP | I | GPIO36, ADC1 | AD | ○ | G1B | G1B | ○ | Hat | Hat | ○ | |||
SVN | I | GPIO39, ADC1 | |||||||||||
IO34 | I | GPIO34, ADC1 | ○ | ○ | |||||||||
IO35 | I | GPIO35, ADC1 | AD | ○ | |||||||||
IO32 | I/O | GPIO32, ADC1 | G2A | G2 | G2 | G2 | G2 | G1 | |||||
IO33 | I/O | GPIO33, ADC1 | G1A | G1 | G1 | G1 | G1 | ○ | |||||
IO25 | I/O | GPIO25, ADC2, DAC | DA | ○ | ○ | Hat | ○ | ○ | |||||
IO26 | I/O | GPIO26, ADC2, DAC | DA | ○ | G2B | G2B | ○ | Hat | Hat | ○ | G2 | ||
IO27 | I/O | GPIO27, ADC2 | |||||||||||
IO14 | I/O | GPIO14, ADC2, HSPI CLK | G2C | ○ | |||||||||
IO12 | I/O | GPIO12, ADC2, HSPI MISO | ○ | ||||||||||
IO13 | I/O | GPIO13, ADC2, HSPI MOSI | ○ | G1C | ○ | G1 | |||||||
SHD/SD2 | I/O | GPIO9(内蔵Flashと接続) | |||||||||||
SWP/SD3 | I/O | GPIO10(内蔵Flashと接続) | |||||||||||
SCS/CMD | I/O | GPIO11(内蔵Flashと接続) | |||||||||||
SCK/CLK | I/O | GPIO6(内蔵Flashと接続) | |||||||||||
SDO/SD0 | I/O | GPIO7(内蔵Flashと接続) | |||||||||||
SDI/SD1 | I/O | GPIO8(内蔵Flashと接続) | |||||||||||
IO15 | I/O | GPIO15, ADC2, HSPI CS | ○ | ||||||||||
IO2 | I/O | GPIO2, ADC2(ブートモード設定に利用) | ○ | ○ | |||||||||
IO0 | I/O | GPIO0, ADC2(ブートモード設定に利用) | ○ | Hat | Hat | ○ | ○ | ||||||
IO4 | I/O | GPIO4, ADC2 | G2 | ||||||||||
IO16 | I/O | GPIO16 | R2 | ○ | G1C | G1 | |||||||
IO17 | I/O | GPIO17 | T2 | ○ | G2C | G2 | |||||||
IO5 | I/O | GPIO5, VSPI CS | ○ | ○ | |||||||||
IO18 | I/O | GPIO18, VSPI CLK | SCK | ○ | ○ | ○ | |||||||
IO19 | I/O | GPIO19, VSPI MISO | MI | ○ | ○ | ○ | |||||||
IO21 | I/O | GPIO21, I2C SDA | SDA G2A | ○ | ○ | ○ | ○ | ||||||
RXD0 | I/O | GPIO3 | R0 | ○ | ○ | ○ | |||||||
TXD0 | I/O | GPIO1 | T0 | ○ | ○ | ○ | |||||||
IO22 | I/O | GPIO22, I2C SCL | SCL G1A | ○ | ○ | ○ | ○ | ||||||
IO23 | I/O | GPIO23, VSPI MOSI | MO | ○ | ○ | ○ |
- 私がよく使うデバイスについてのみ記載しました。
- 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の使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。