Arduino IDEの設定 (M5Stackシリーズ)

# はじめに

Arduino IDEを使用してM5Stackシリーズの開発を行う場合、使用するモデルごとにいろいろと設定が異なる。
開発元(M5Stack社)の情報を参照しても設定に関する情報がちゃんと更新されていないのか、複数のパターンがあるようで混乱したのでまとめておく。

# 環境
Windows PC：Windows 10 Pro 64bit (1909)
Arduino IDE：V1.8.13

# 開発元(M5Stack社)のドキュメント情報（2020/11/14 現在）

[開発元(M5Stack社)のドキュメント情報](https://docs.m5stack.com/#/en/arduino/arduino_home_page)のうち、自分で使用中のM5シリーズ+αのみ表にまとめた。<font color="#ff0000">(間違いやすい部分は赤字表記)</font>

|モ デ ル|ドライバー<BR>の<BR>インストール|`追加のボードマネージャのURL`|`ボードマネージャ`で<BR>追加するボード|選択する<BR>ボード|`ライブラリ`<BR>`マネージャ`で<BR>追加する<BR>ライブラリ|必須<BR>ヘッダー<BR>ファイル|
|:--------------------------|:----:|:----|:----:|:----:|:----:|:----:|
|[BASIC](https://docs.m5stack.com/#/en/arduino/arduino_development)|要 (CP210X)|`https://dl.espressif.com/dl/`<BR>`package_esp32_index.json` [^EspressifJSON注釈]|esp32|M5Stack-Core-ESP32|M5St<font color="#ff0000">a</font>ck|M5St<font color="#ff0000">a</font>ck.h|
|[GRAY](https://docs.m5stack.com/#/en/arduino/arduino_development)|要 (CP210X)|`https://dl.espressif.com/dl/`<BR>`package_esp32_index.json` [^EspressifJSON注釈]|esp32|M5Stack-Core-ESP32|M5St<font color="#ff0000">a</font>ck|M5St<font color="#ff0000">a</font>ck.h|
|[M5StickC](https://docs.m5stack.com/#/en/arduino/arduino_development)|不要|`https://dl.espressif.com/dl/`<BR>`package_esp32_index.json` [^EspressifJSON注釈]|esp32|M5Stick-C|M5St<font color="#ff0000">i</font>ck<font color="#ff0000">C</font>|M5St<font color="#ff0000">i</font>ck<font color="#ff0000">C</font>.h|
|[M5StickC<BR>PLUS](https://docs.m5stack.com/#/en/arduino/arduino_development)|不要|`https://dl.espressif.com/dl/`<BR>`package_esp32_index.json` [^EspressifJSON注釈]|esp32|M5Stick-C|<font color="#ff0000">手動インストール</font>[^設定方法]|M5St<font color="#ff0000">i</font>ck<font color="#ff0000">CPlus</font>.h|
|[ATOM<BR>Lite](https://docs.m5stack.com/#/en/arduino/arduino_development)|不要|`https://dl.espressif.com/dl/`<BR>`package_esp32_index.json` [^EspressifJSON注釈]|esp32|M5Stick-C<BR>または<BR>ESP32 Pico KIT[^ESP32 Pico KIT選択時の注意]|M5Atom<BR>と<BR>FastLED|M5Atom.h|
|[ATOM<BR>Matrix](https://docs.m5stack.com/#/en/arduino/arduino_development)|不要|`https://dl.espressif.com/dl/`<BR>`package_esp32_index.json` [^EspressifJSON注釈]|esp32|M5Stick-C<BR>または<BR>ESP32 Pico KIT[^ESP32 Pico KIT選択時の注意]|M5Atom<BR>と<BR>FastLED|M5Atom.h|
|[M5Core2](https://docs.m5stack.com/#/en/arduino/arduino_core2_development)|要 (CP210X)|`https://m5stack.oss-cn-shenzhen.aliyuncs.com/`<BR>`resource/arduino/`<BR>`package_m5stack_index.json` [^M5Stack公式JSON注釈]|M5Stack|M5Stack-Core2|M5Core2|M5Core2.h|
|[CoreInk](https://docs.m5stack.com/#/en/quick_start/coreink/quick_start_arduino)|要 (CP210X)|`https://m5stack.oss-cn-shenzhen.aliyuncs.com/`<BR>`resource/arduino/`<BR>`package_m5stack_index.json` [^M5Stack公式JSON注釈]|M5Stack|M5Stack-CoreInk|M5-CoreInk|M5CoreInk.h|

＊`追加のボードマネージャのURL`とはArduino IDEの`環境設定`メニュー→`追加のボードマネージャのURL`フィールド（`Additional Boards Manager URLs`の日本語訳）の事

# 複数のモデルを同時に使用する場合

では、複数のモデル(例えば、BASICとCore2)を同時に1つの環境で使用する場合、`追加のボードマネージャのURL`はどうしたらいいか？

`追加のボードマネージャのURL`は以下の2種類があってそれぞれM5Stackのボード情報が含まれている。

1. `ESP32用URL`：`https://dl.espressif.com/dl/package_esp32_index.json`
2. `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のボード情報があるのでどちらかが優先されたり、バッティングしたりしたら厄介だ。

<!-- 
確認したいのだが、残念ながら<font color="#ff0000">執筆時点でM5Stack社のサーバーに問題があるようで確認できない....</font>
-->

<!-- 
(サンプル)
[ここ][link-1] と [この][link-1] リンクは同じになります。
[link-1][] も可能です。
[link-1]:http://qiita.com/drafts/c686397e4a0f4f11683d
-->


<!-- (URL) -->
[Arduinoボード]: https://dl.espressif.com/dl/package_esp32_index.json
[M5Stack公式ボード]: https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json

<!-- (注釈)コロンの後ろの半角スペースを忘れない！-->
[^EspressifJSON注釈]: Espressif社ESP32。v1.0.6(2021/3/27現在)
[^M5Stack公式JSON注釈]: M5Stack公式。v1.0.7(2021/1/20現在) 。サーバーが遅いのかWindows版Arduino IDEからはタイムアウトでダウンロードできない事がある


[^設定方法]: (インストール方法) [GitHub](https://github.com/m5stack/M5StickC-Plus)から[ZIPファイル](https://github.com/m5stack/M5StickC-Plus/archive/master.zip)をダウンロードして、Arduino IDEの`スケッチ`メニュー→`ライブラリをインクルード`→`.ZIP形式のライブラリをインストール...`からダウンロードしたZIPファイルを選択してインストールする

[^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`

上記２つを含めて合計4つのURLに指定されているM5Stackのボード情報(ZIPファイル)を比較したところ次のようになっていた。

|含まれるボード情報|ESP32用<BR>(v1.0.6)|M5Stack用<BR>(v1.0.6)|M5Stack用<BR>(v1.0.7)|M5Stack用<BR>(v1.0.8)|M5Stack用<BR>(v1.0.9)|M5Stack用<BR>(v2.0.0)|M5Stack用<BR>(v2.0.1<BR>～v2.0.3)|M5Stack用<BR>(v2.0.4<BR>～v2.0.5)|M5Stack用<BR>(v2.0.6)|(参考)<BR>ESP32<BR>安定板<BR>(v2.0.6)|(参考)<BR>ESP32<BR>開発版<BR>(v2.0.6)|
|:-------------------------------|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|m5stack_core_esp32              |〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|
|m5stack_fire                    |〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|
|m5stick_c                       |〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|
|m5stack_atom                    |〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|
|m5stack_core2                   |〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|
|m5stack_timer_cam<BR>timer_cam  |〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|
|m5stack_coreink                 |〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|〇|
|m5stack_paper                   |  |〇|〇|〇|〇|〇|〇|〇|〇|  |  |
|m5stick_c_plus                  |  |　|〇|〇|〇|〇|〇|〇|〇|  |  |
|m5stack_tough                   |  |　|〇|〇|〇|〇|〇|〇|〇|  |  |
|m5stack_stamp_pico<BR>stamp_pico|  |　|　|〇|〇|〇|〇|〇|〇|  |  |
|m5stack_poe_cam<BR>poe_cam      |  |　|　|　|〇|〇|〇|〇|〇|  |  |
|m5stack_stamp_c3                |  |　|　|　|　|〇|〇|〇|〇|  |  |
|m5stack_unit_cam                |  |　|　|　|　|　|〇|〇|〇|  |  |
|m5stack_station                 |  |　|　|　|　|　|　|〇|〇|〇|〇|
|m5stack_atoms3                  |  |　|　|　|　|　|　|　|〇|　|　|

確認したのは以下の情報で他にもあるのかもしれない。

+ variants/<ボード>/pins_arduino.h（ピンの定義、特にSDA/SCL等）
+ boards.txt（ボード設定）

少なくとも上記情報に関してバージョン[^バージョン注釈]が新しくなると基本的に情報が追加されていただけなので、バージョン[^バージョン注釈]の一番新しいもの、つまり`M5Stack用URL`だけを使えば良さそうだ。（ただし、<font color="#ff0000">**pins_arduino.hの一部ピンの定義(マクロ、static const変数)が変更されているのでライブラリやサンプルスケッチとの互換性に注意**</font>）

[^バージョン注釈]: ESP32用とM5Stack用で同じバージョン体系とは限らないの注意


# まとめ（2021/1/20更新）
特定のM5Stackのモデルで開発する場合、開発元のドキュメント情報にしたがって設定をする。

いろいろなM5Stackのモデル（特に新旧のモデル混在）で開発する場合、`追加のボードマネージャのURL`は`M5Stack用URL`(`https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json`)だけを使えばよさそう。その場合、上記表は以下のようになる。（`追加のボードマネージャのURL`は省略。また、<font color="#ff0000">間違いやすい部分</font>と<font color="#ff0000">上記表と異なる項目</font>は<font color="#ff0000">赤字表記</font>）

|モ デ ル|ドライバー<BR>の<BR>インストール|`ボード`<BR>`マネージャ`で<BR>追加するボード|選択する<BR>ボード|`ライブラリ`<BR>`マネージャ`で<BR>追加する<BR>ライブラリ|必須<BR>ヘッダー<BR>ファイル|
|:--------------------------|:----:|:----:|:----:|:----:|:----:|
|[BASIC](https://docs.m5stack.com/#/en/arduino/arduino_development)|要 (CP210X)|<font color="#ff0000">M5Stack</font>|M5Stack-Core-ESP32|M5St<font color="#ff0000">a</font>ck|M5St<font color="#ff0000">a</font>ck.h|
|[GRAY](https://docs.m5stack.com/#/en/arduino/arduino_development)|要 (CP210X)|<font color="#ff0000">M5Stack</font>|M5Stack-Core-ESP32|M5St<font color="#ff0000">a</font>ck|M5St<font color="#ff0000">a</font>ck.h|
|[M5StickC](https://docs.m5stack.com/#/en/arduino/arduino_development)|不要|<font color="#ff0000">M5Stack</font>|M5Stick-C|M5St<font color="#ff0000">i</font>ck<font color="#ff0000">C</font>|M5St<font color="#ff0000">i</font>ck<font color="#ff0000">C</font>.h|
|[M5StickC<BR>PLUS](https://docs.m5stack.com/#/en/arduino/arduino_development)|不要|<font color="#ff0000">M5Stack</font>|M5Stick-C<BR>または<BR><font color="#ff0000">M5Stick-C-Plus</font>[^V1.0.7で追加]|<font color="#ff0000">M5StickCPlus</font>[^ライブラリに追加可能]|M5St<font color="#ff0000">i</font>ck<font color="#ff0000">CPlus</font>.h|
|[ATOM<BR>Lite](https://docs.m5stack.com/#/en/arduino/arduino_development)|不要|<font color="#ff0000">M5Stack</font>|<font color="#ff0000">M5Stack-ATOM</font>|M5Atom<BR>と<BR>FastLED|M5Atom.h|
|[ATOM<BR>Matrix](https://docs.m5stack.com/#/en/arduino/arduino_development)|不要|<font color="#ff0000">M5Stack</font>|<font color="#ff0000">M5Stack-ATOM</font>|M5Atom<BR>と<BR>FastLED|M5Atom.h|
|[M5Core2](https://docs.m5stack.com/#/en/arduino/arduino_core2_development)|要 (CP210X)|M5Stack|M5Stack-Core2|M5Core2|M5Core2.h|
|[CoreInk](https://docs.m5stack.com/#/en/quick_start/coreink/quick_start_arduino)|要 (CP210X)|M5Stack|M5Stack-CoreInk|M5-CoreInk|M5CoreInk.h|

[^V1.0.7で追加]: v1.0.7で追加（2021/1/20確認）。確認した限りではM5Stick-Cとまったく同一 
[^ライブラリに追加可能]: ドキュメント等に記載はないがライブラリーマネージャから追加可能（2020/12/24確認）。

# 更新情報（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](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](https://dl.espressif.com/dl/package_esp32_index.json)）を併用する場合は、一部のM5Stackシリーズの情報が重複するために問題が発生するかもしれない。もし問題が起きても、いずれリリースされるArduino IDE 2.0で解消されるとは思う。