はじめに
Arduino IDEを使用してM5Stackシリーズの開発を行う場合、使用するモデルごとにいろいろと設定が異なる。
開発元(M5Stack社)の情報を参照しても設定に関する情報がちゃんと更新されていないのか、複数のパターンがあるようで混乱したのでまとめておく。
環境
Windows PC:Windows 10 Pro 64bit (1909)
Arduino IDE:V1.8.13
開発元(M5Stack社)のドキュメント情報(2020/11/14 現在)
開発元(M5Stack社)のドキュメント情報のうち、自分で使用中のM5シリーズ+αのみ表にまとめた。(間違いやすい部分は赤字表記)
| モ デ ル | ドライバー の インストール | 追加のボードマネージャのURL | ボードマネージャで追加するボード | 選択する ボード | ライブラリマネージャで追加する ライブラリ | 必須 ヘッダー ファイル | 
|---|---|---|---|---|---|---|
| BASIC | 要 (CP210X) | https://dl.espressif.com/dl/package_esp32_index.json1 | esp32 | M5Stack-Core-ESP32 | M5Stack | M5Stack.h | 
| GRAY | 要 (CP210X) | https://dl.espressif.com/dl/package_esp32_index.json1 | esp32 | M5Stack-Core-ESP32 | M5Stack | M5Stack.h | 
| M5StickC | 不要 | https://dl.espressif.com/dl/package_esp32_index.json1 | esp32 | M5Stick-C | M5StickC | M5StickC.h | 
| M5StickC PLUS | 不要 | https://dl.espressif.com/dl/package_esp32_index.json1 | esp32 | M5Stick-C | 手動インストール2 | M5StickCPlus.h | 
| ATOM Lite | 不要 | https://dl.espressif.com/dl/package_esp32_index.json1 | esp32 | M5Stick-C または ESP32 Pico KIT[^ESP32 Pico KIT選択時の注意] | M5Atom と FastLED | M5Atom.h | 
| ATOM Matrix | 不要 | https://dl.espressif.com/dl/package_esp32_index.json1 | esp32 | M5Stick-C または ESP32 Pico KIT[^ESP32 Pico KIT選択時の注意] | M5Atom と FastLED | M5Atom.h | 
| M5Core2 | 要 (CP210X) | https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json3 | M5Stack | M5Stack-Core2 | M5Core2 | M5Core2.h | 
| CoreInk | 要 (CP210X) | https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json3 | M5Stack | M5Stack-CoreInk | M5-CoreInk | M5CoreInk.h | 
*追加のボードマネージャのURLとはArduino IDEの環境設定メニュー→追加のボードマネージャのURLフィールド(Additional Boards Manager URLsの日本語訳)の事
複数のモデルを同時に使用する場合
では、複数のモデル(例えば、BASICとCore2)を同時に1つの環境で使用する場合、追加のボードマネージャのURLはどうしたらいいか?
追加のボードマネージャのURLは以下の2種類があってそれぞれM5Stackのボード情報が含まれている。
- 
ESP32用URL:https://dl.espressif.com/dl/package_esp32_index.json
- 
M5Stack用URL:https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
M5Stack用URLが後から追加されているので、普通に考えると2つのバターンが考えられる。
- 
ESP32用URLとM5Stack用URLの両方を指定する。(指定順序が影響する可能性あり)
- 
M5Stack用URLだけ指定する。
感覚的には新しい方のM5Stack用URLだけ指定すればいいようにも思えるが、両方のURLを指定した場合新旧両方のURLにM5Stackのボード情報があるのでどちらかが優先されたり、バッティングしたりしたら厄介だ。
[^ESP32 Pico KIT選択時の注意]: ESP32 Pico KITを選択する場合はボーレートで115200を選択する事
追加のボードマネージャのURLに指定できるURLは他にもある。
- ESP32(安定板):https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- ESP32(開発版):https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json
上記2つを含めて合計4つのURLに指定されているM5Stackのボード情報(ZIPファイル)を比較したところ次のようになっていた。
| 含まれるボード情報 | ESP32用 (v1.0.6) | M5Stack用 (v1.0.6) | M5Stack用 (v1.0.7) | M5Stack用 (v1.0.8) | M5Stack用 (v1.0.9) | M5Stack用 (v2.0.0) | M5Stack用 (v2.0.1 ~v2.0.3) | M5Stack用 (v2.0.4 ~v2.0.5) | M5Stack用 (v2.0.6) | (参考) ESP32 安定板 (v2.0.6) | (参考) ESP32 開発版 (v2.0.6) | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| m5stack_core_esp32 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 
| m5stack_fire | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 
| m5stick_c | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 
| m5stack_atom | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 
| m5stack_core2 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 
| m5stack_timer_cam timer_cam | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 
| m5stack_coreink | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 
| m5stack_paper | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | |||
| m5stick_c_plus | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | ||||
| m5stack_tough | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | ||||
| m5stack_stamp_pico stamp_pico | 〇 | 〇 | 〇 | 〇 | 〇 | 〇 | |||||
| m5stack_poe_cam poe_cam | 〇 | 〇 | 〇 | 〇 | 〇 | ||||||
| m5stack_stamp_c3 | 〇 | 〇 | 〇 | 〇 | |||||||
| m5stack_unit_cam | 〇 | 〇 | 〇 | ||||||||
| m5stack_station | 〇 | 〇 | 〇 | 〇 | |||||||
| m5stack_atoms3 | 〇 | 
確認したのは以下の情報で他にもあるのかもしれない。
- variants/<ボード>/pins_arduino.h(ピンの定義、特にSDA/SCL等)
- boards.txt(ボード設定)
少なくとも上記情報に関してバージョン4が新しくなると基本的に情報が追加されていただけなので、バージョン4の一番新しいもの、つまりM5Stack用URLだけを使えば良さそうだ。(ただし、pins_arduino.hの一部ピンの定義(マクロ、static const変数)が変更されているのでライブラリやサンプルスケッチとの互換性に注意)
まとめ(2021/1/20更新)
特定のM5Stackのモデルで開発する場合、開発元のドキュメント情報にしたがって設定をする。
いろいろなM5Stackのモデル(特に新旧のモデル混在)で開発する場合、追加のボードマネージャのURLはM5Stack用URL(https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json)だけを使えばよさそう。その場合、上記表は以下のようになる。(追加のボードマネージャのURLは省略。また、間違いやすい部分と上記表と異なる項目は赤字表記)
| モ デ ル | ドライバー の インストール | ボードマネージャで追加するボード | 選択する ボード | ライブラリマネージャで追加する ライブラリ | 必須 ヘッダー ファイル | 
|---|---|---|---|---|---|
| BASIC | 要 (CP210X) | M5Stack | M5Stack-Core-ESP32 | M5Stack | M5Stack.h | 
| GRAY | 要 (CP210X) | M5Stack | M5Stack-Core-ESP32 | M5Stack | M5Stack.h | 
| M5StickC | 不要 | M5Stack | M5Stick-C | M5StickC | M5StickC.h | 
| M5StickC PLUS | 不要 | M5Stack | M5Stick-C または M5Stick-C-Plus5 | M5StickCPlus6 | M5StickCPlus.h | 
| ATOM Lite | 不要 | M5Stack | M5Stack-ATOM | M5Atom と FastLED | M5Atom.h | 
| ATOM Matrix | 不要 | M5Stack | M5Stack-ATOM | M5Atom と FastLED | M5Atom.h | 
| M5Core2 | 要 (CP210X) | M5Stack | M5Stack-Core2 | M5Core2 | M5Core2.h | 
| CoreInk | 要 (CP210X) | M5Stack | M5Stack-CoreInk | M5-CoreInk | M5CoreInk.h | 
更新情報(2022/1/19更新)
久しぶりに開発元(M5Stack社)の情報を確認したところ、追加のボードマネージャのURLはM5Stack社提供のURLに統一されていた。
今後はArduino IDEの追加のボードマネージャのURLにはM5Stack社提供のURL(https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json)だけを指定すればよいことになる。
ただし、M5Stackシリーズ以外のマイコンボードを使用するためにESP32用URL(https://dl.espressif.com/dl/package_esp32_index.json)を併用する場合は、一部のM5Stackシリーズの情報が重複するために問題が発生するかもしれない。もし問題が起きても、いずれリリースされるArduino IDE 2.0で解消されるとは思う。
- 
(インストール方法) GitHubからZIPファイルをダウンロードして、Arduino IDEの スケッチメニュー→ライブラリをインクルード→.ZIP形式のライブラリをインストール...からダウンロードしたZIPファイルを選択してインストールする ↩
- 
M5Stack公式。v1.0.7(2021/1/20現在) 。サーバーが遅いのかWindows版Arduino IDEからはタイムアウトでダウンロードできない事がある ↩ ↩2 
- 
v1.0.7で追加(2021/1/20確認)。確認した限りではM5Stick-Cとまったく同一 ↩ 
- 
ドキュメント等に記載はないがライブラリーマネージャから追加可能(2020/12/24確認)。 ↩