【M5Stack】ビルド時のボード・オプションの選び方(ArduinoIDE,VSCode+PIO)

 M5Stack製品は星の数ほど発売されています。進化が早すぎて、Arduino-ESP32やPlatformIOの設定に新しい製品の名前が無くて混乱する方も増えてきたようです。今回の記事では、M5Stackの製品を使用する場合にどのボードを選択すればよいかまとめておきます。

 もくじ(Index)

M5Stack関連の目次へ戻る

記事作成時の環境

 この記事を作成した時点での関連ソフトのバージョンは下記のとおりです。

ビルド時に選択するボード

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製品は購入時期により仕様が異なることがあるので注意してください。)

 FlashPSRAMヘッダファイル名ボード
Arduino-ESP32
備考
Arduino-ESP32
M5Stack Basic4MBなしM5Stack.hM5Stack-Core-ESP32
M5Stack Basic16MBなしM5Stack.hM5Stack-FIREPSRAM:Disabled
M5Stack Gray4MBなしM5Stack.hM5Stack-Core-ESP32
M5Stack Gray16MBなしM5Stack.hM5Stack-FIREPSRAM:Disabled
M5Stack Go16MBなしM5Stack.hM5Stack-FIREPSRAM:Disabled
M5Stack Fire16MB4MBM5Stack.hM5Stack-FIRE
M5Stack Core216MB8MBM5Core2.hM5Stack-Core2
M5StickC4MBなしM5StickC.hM5Stick-C
M5StickCPlus4MBなしM5StickCPlus.hM5Stick-C
M5Atom Matrix4MBなしM5Atom.hM5Stick-ATOM
M5Atom Lite4MBなしM5Atom.hM5Stick-ATOM
M5Atom Echo4MBなしM5Atom.hM5Stick-ATOM
M5Stack CoreInk4MBなしM5CoreInk.hM5Stick-CoreInk
M5Paper16MB8MBM5EPD.hM5Stack-Core2
TimerCameraX4MB8MBM5Stack-Timer-CAM
TimerCameraF4MB8MBM5Stack-Timer-CAM

②M5Stackを利用している場合(Ver.1.0.7)

●太字は、最新機種の仕様を示しています。(M5Stack製品は購入時期により仕様が異なることがあるので注意してください。)

 FlashPSRAMヘッダファイル名ボード
M5Stack
備考
M5Stack
M5Stack Basic4MBなしM5Stack.hM5Stack-Core-ESP32
M5Stack Basic16MBなしM5Stack.hM5Stack-FirePSRAM:Disabled
M5Stack Gray4MBなしM5Stack.hM5Stack-Core-ESP32
M5Stack Gray16MBなしM5Stack.hM5Stack-FirePSRAM:Disabled
M5Stack Go16MBなしM5Stack.hM5Stack-FirePSRAM:Disabled
M5Stack Fire16MB4MBM5Stack.hM5Stack-Fire
M5Stack Core216MB8MBM5Core2.hM5Stack-Core2
M5StickC4MBなしM5StickC.hM5Stick-C
M5StickCPlus4MBなしM5StickCPlus.hM5Stick-C-Plus
M5Atom Matrix4MBなしM5Atom.hM5Stack-ATOM
M5Atom Lite4MBなしM5Atom.hM5Stack-ATOM
M5Atom Echo4MBなしM5Atom.hM5Stack-ATOM
M5Stack CoreInk4MBなしM5CoreInk.hM5Stack-CoreInk
M5Paper16MB8MBM5EPD.hM5Paper

VSCode+PlatformIO

grayとgreyは意味は同じだそうです。(US,UK表記ともされていますが、どちらも使われているそうです。)

太字は、最新機種の仕様を示しています。(M5Stack製品は購入時期により仕様が異なることがあるので注意してください。)

 FlashPSRAMヘッダファイル名ボード備考
M5Stack Basic4MBなしM5Stack.hM5Stack Core ESP32
M5Stack Basic16MBなしM5Stack.hM5Stack GREY ESP32
M5Stack Gray4MBなしM5Stack.hM5Stack Core ESP32
M5Stack Gray16MBなしM5Stack.hM5Stack GREY ESP32
M5Stack Go16MBなしM5Stack.hM5Stack GREY ESP32
M5Stack Fire16MB4MBM5Stack.hM5Stack FIRE
M5Stack Core216MB8MBM5Core2.hM5Stack Core2
M5StickC4MBなしM5StickC.hM5Stick-C
M5StickCPlus4MBなしM5StickCPlus.hM5Stick-C
M5Atom Matrix4MBなしM5Atom.hM5Stick-ATOM
M5Atom Lite4MBなしM5Atom.hM5Stick-ATOM
M5Atom Echo4MBなしM5Atom.hM5Stick-ATOM
M5Stack CoreInk4MBなしM5CoreInk.hM5Stick-Core Ink
M5Paper16MB8MBM5EPD.hM5Stack Core2
M5Stack Timer CAM X4MB8MBM5Stack Timer CAM
M5Stack Timer CAM F4MB8MBM5Stack 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)を使うことができます。
  • 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)を使うことができます。

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 新規作成

コメントを残す

メールアドレスが公開されることはありません。