【M5Stack】ビルド時のボード・オプションの選び方(ArduinoIDE,VSCode+PIO)
M5Stack製品は星の数ほど発売されています。進化が早すぎて、Arduino-ESP32やPlatformIOの設定に新しい製品の名前が無くて混乱する方も増えてきたようです。今回の記事では、M5Stackの製品を使用する場合にどのボードを選択すればよいかまとめておきます。
もくじ(Index)M5Stack関連の目次へ戻る
記事作成時の環境
この記事を作成した時点での関連ソフトのバージョンは下記のとおりです。
- ArduinoIDE(Ver.1.8.13)
- Arduino-ESP32(Ver.1.0.5)
※ 追加のボードマネージャーのURLを下記で設定した場合
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- M5Stack(Ver.1.0.7)
※ 追加のボードマネージャーのURLを下記で設定した場合
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
- Arduino-ESP32(Ver.1.0.5)
- VisualStudioCode(Ver.1.52.1)+PlatformIO(Ver.5.0.4)
- platform-espressif32(Ver.2.1.0)
ビルド時に選択するボード
ArduinoIDE
※ Arduino-IDEでは2021/2現在2種類の選択肢があります。どちらを選んでも基本は同じです。
- Arduino-ESP32
本家はこちらです。M5Stack以外のESP32開発ボードにも対応しています。更新頻度が低いので新機種に対応したボードが無い場合があります。(他のボードの設定でも代用可能な場合が多い。)
2021/2/26現在 Ver.1.0.5が最新です。 - M5Stack
M5Stack社がArduino-ESP32をベースに自社製品のボード設定を追加したもので中身はArduino-ESP32と同じです。新機種に対応してくれるので、更新は早いですがダウンロードが遅くダウンロードできないこともあるようです。
2021/2/26現在 Arduino-ESP32 Ver.1.0.4をベースにしています。
①Arduino-ESP32を利用している場合(Ver.1.0.5)
●2021/2にArduino-ESP32 Ver.1.0.5がリリースされたのでM5Stack公式のArduino-ESP32とはバージョンが異なっています。(M5Stack公式はVer.1.0.4ベース)。
太字は、最新機種の仕様を示しています。(M5Stack製品は購入時期により仕様が異なることがあるので注意してください。)
Flash | PSRAM | ヘッダファイル名 | ボード Arduino-ESP32 | 備考 Arduino-ESP32 | |
---|---|---|---|---|---|
M5Stack Basic | 4MB | なし | M5Stack.h | M5Stack-Core-ESP32 | |
M5Stack Basic | 16MB | なし | M5Stack.h | M5Stack-FIRE | PSRAM:Disabled |
M5Stack Gray | 4MB | なし | M5Stack.h | M5Stack-Core-ESP32 | |
M5Stack Gray | 16MB | なし | M5Stack.h | M5Stack-FIRE | PSRAM:Disabled |
M5Stack Go | 16MB | なし | M5Stack.h | M5Stack-FIRE | PSRAM:Disabled |
M5Stack Fire | 16MB | 4MB | M5Stack.h | M5Stack-FIRE | |
M5Stack Core2 | 16MB | 8MB | M5Core2.h | M5Stack-Core2 | |
M5StickC | 4MB | なし | M5StickC.h | M5Stick-C | |
M5StickCPlus | 4MB | なし | M5StickCPlus.h | M5Stick-C | |
M5Atom Matrix | 4MB | なし | M5Atom.h | M5Stick-ATOM | |
M5Atom Lite | 4MB | なし | M5Atom.h | M5Stick-ATOM | |
M5Atom Echo | 4MB | なし | M5Atom.h | M5Stick-ATOM | |
M5Stack CoreInk | 4MB | なし | M5CoreInk.h | M5Stick-CoreInk | |
M5Paper | 16MB | 8MB | M5EPD.h | M5Stack-Core2 | |
TimerCameraX | 4MB | 8MB | M5Stack-Timer-CAM | ||
TimerCameraF | 4MB | 8MB | M5Stack-Timer-CAM |
②M5Stackを利用している場合(Ver.1.0.7)
●太字は、最新機種の仕様を示しています。(M5Stack製品は購入時期により仕様が異なることがあるので注意してください。)
Flash | PSRAM | ヘッダファイル名 | ボード M5Stack | 備考 M5Stack | |
---|---|---|---|---|---|
M5Stack Basic | 4MB | なし | M5Stack.h | M5Stack-Core-ESP32 | |
M5Stack Basic | 16MB | なし | M5Stack.h | M5Stack-Fire | PSRAM:Disabled |
M5Stack Gray | 4MB | なし | M5Stack.h | M5Stack-Core-ESP32 | |
M5Stack Gray | 16MB | なし | M5Stack.h | M5Stack-Fire | PSRAM:Disabled |
M5Stack Go | 16MB | なし | M5Stack.h | M5Stack-Fire | PSRAM:Disabled |
M5Stack Fire | 16MB | 4MB | M5Stack.h | M5Stack-Fire | |
M5Stack Core2 | 16MB | 8MB | M5Core2.h | M5Stack-Core2 | |
M5StickC | 4MB | なし | M5StickC.h | M5Stick-C | |
M5StickCPlus | 4MB | なし | M5StickCPlus.h | M5Stick-C-Plus | |
M5Atom Matrix | 4MB | なし | M5Atom.h | M5Stack-ATOM | |
M5Atom Lite | 4MB | なし | M5Atom.h | M5Stack-ATOM | |
M5Atom Echo | 4MB | なし | M5Atom.h | M5Stack-ATOM | |
M5Stack CoreInk | 4MB | なし | M5CoreInk.h | M5Stack-CoreInk | |
M5Paper | 16MB | 8MB | M5EPD.h | M5Paper |
VSCode+PlatformIO
grayとgreyは意味は同じだそうです。(US,UK表記ともされていますが、どちらも使われているそうです。)
太字は、最新機種の仕様を示しています。(M5Stack製品は購入時期により仕様が異なることがあるので注意してください。)
Flash | PSRAM | ヘッダファイル名 | ボード | 備考 | |
---|---|---|---|---|---|
M5Stack Basic | 4MB | なし | M5Stack.h | M5Stack Core ESP32 | |
M5Stack Basic | 16MB | なし | M5Stack.h | M5Stack GREY ESP32 | |
M5Stack Gray | 4MB | なし | M5Stack.h | M5Stack Core ESP32 | |
M5Stack Gray | 16MB | なし | M5Stack.h | M5Stack GREY ESP32 | |
M5Stack Go | 16MB | なし | M5Stack.h | M5Stack GREY ESP32 | |
M5Stack Fire | 16MB | 4MB | M5Stack.h | M5Stack FIRE | |
M5Stack Core2 | 16MB | 8MB | M5Core2.h | M5Stack Core2 | |
M5StickC | 4MB | なし | M5StickC.h | M5Stick-C | |
M5StickCPlus | 4MB | なし | M5StickCPlus.h | M5Stick-C | |
M5Atom Matrix | 4MB | なし | M5Atom.h | M5Stick-ATOM | |
M5Atom Lite | 4MB | なし | M5Atom.h | M5Stick-ATOM | |
M5Atom Echo | 4MB | なし | M5Atom.h | M5Stick-ATOM | |
M5Stack CoreInk | 4MB | なし | M5CoreInk.h | M5Stick-Core Ink | |
M5Paper | 16MB | 8MB | M5EPD.h | M5Stack Core2 | |
M5Stack Timer CAM X | 4MB | 8MB | M5Stack Timer CAM | ||
M5Stack Timer CAM F | 4MB | 8MB | M5Stack Timer CAM |
なぜボードの変更が必要か
機種ごとにボードの設定を行うのは主に下記の3つの違いがあるためです。
Flashメモリ(Partition Scheme)
Flashメモリが大きいと、大きいサイズのアプリケーション(スケッチ)を扱うことができます。ビルド(コンパイル)した時にエラーが出た場合は注意しましょう。16MBFlashを搭載したモデルに4MBの設定で書き込んだとしてもアプリのサイズが大きくなければ書き込むことは可能です。(アプリとSPIFFSの大きさはおおよそです。詳しい値はboards.txtを参照してください。)
- 4MBの選択肢
- Default(初期値):
OTAが使用可能、小さいアプリ(1.3MB x 2)とSPIFFS(300KB)を使うことができます。 - No OTA(Large APP):
OTAが使用不可、大きなアプリ(2MB)とSPIFFS(200KB)を使うことができます。。 - Minimal SPIFFS(Large APPS with OTA):
OTAが使用可能、大きなアプリ(1.9MB x 2)とSPIFFS(30KB)を使うことができます。
- Default(初期値):
- 16MBの選択肢
- Default(2 x 6.5 MB app, 3.6MB SPIFFS)
OTAが使用可能、アプリ領域(6.5MB x 2)とSPIFFS(3.6MB)を使うことができます。 - Large SPIFFS(7MB)
OTAが使用可能、アプリ領域(4.5MB x 2)とSPIFFS(7MB)を使うことができます。
- Default(2 x 6.5 MB app, 3.6MB SPIFFS)
OTA(Over The Air)とは?
OTAとは無線通信を介してプログラムを送る技術で、ESP32の持っている特徴的な機能です。これを使うことによってPCに接続してもアプリの書き換えが可能になります。app0とapp1があるのは、OTAで書き込んだアプリが正しく動作しなかった場合にRollbackする仕組みを実現するためのようです。下記のQiita記事に分かりやすく書いてありました。
PSRAM(PSRAM)
多くのM5Stack製品に搭載されているESP32はRAMが520KB搭載されています。PSRAMとはさらにRAM領域を追加するためのもので、メモリを多く必要とするアプリケーションを実行することが可能です。
●メモリを多く消費するアプリの例
たとえば520KBではスプライトに表示できる画像サイズは8bit(256色)だと239×239のサイズまでです。それ以上の画像を扱おうとするとヒープメモリが足りなくなります。より大きな画像ファイルをメモリ上に保持して実行するようなアプリケーションはPSRAMが必要となります。
転送スピード(Upload Speed)
M5Stack製品はPCとデータ転送を行うためにUSB-UART変換チップを搭載しています。製品の大きさによって下記の2種類のチップがありそれぞれデバイスドライバや転送速度が異なります。
大きい筐体(M5Stack Core、M5Stack Core2、M5Paperなど)はCP210X
SiliconLabsのCP210Xシリーズのチップを搭載している製品は、転送速度が921,600bpsで標準設定されています。
※ CP210Xは他に1.5M,2Mなどの転送速度でも利用できるので設定に慣れた人は変更してみてください。(環境依存で最大3Mbps行けたという方もいるようです。)
小さい筐体(M5StickC系、M5Atom系、M5CoreInkなど)はFTDI互換
FTDI互換(Windows10で見るとベンダーがFTDIと表示されます。)のチップを搭載している製品は転送速度が1,500,000bps(1.5Mbps)で標準設定されています。このタイプは921,600bpsで転送できないらしいので注意してください。
初心者で悩んだ時は、、、
表を見てもピンとこない場合、一番最小ですが「M5StickC」の設定が無難です。Flashメモリ:4MB,PSRAM:なし,Upload Speed:1.5Mbpsであれば、間違えてM5Stackの開発を行った場合でもサイズが小さければ書き込むことができます。
(サイズが合わずエラーが出た場合は適した設定を選びましょう。。。)
おわりに
この情報は新製品がでたり、開発環境のバージョンアップで変わっている可能性もあります。もし記事と異なる場合は、コメント、メールやTwitterで教えてください。
更新履歴
- 2021/2/26 Arduino-ESP32がVer.1.0.5になったので追加
- 2021/1/11 新規作成