前回は、M5Stackとはどんなものなのかに触れました。今回は、その開発環境についてまとめてみます。
M5StackのコアはESP32というSOCなので、開発環境も他のESP32ボードと同じです。代表的なものは、ArduinoとMicroPythonです。ESP32専用のものとしてESP-IDFがありますが、やや上級者向けで、ツールチェーンと言えるものです。今回はこれら代表的な環境について取り上げます。また、M5Stackを汎用のESP32ボードとしてセットアップするより、M5stack用として公開されているものを使うほうが断然便利ですので、その説明がメインです。M5Stack専用の独自な開発環境も開発が進んでいますが、それらはどちらかというと(今のところは)教育用途と捉えたほうがよさそうです。
またESP32は開発スピードが早いだけでなく、変更も大きい場合がありますので、最新情報はこの記事と異なってしまっている可能性もありますのでご注意ください。
基本情報(回路図とピンアサイン)
技術情報はGithubにまとめられています。たまにレポジトリが変更されたり、ファイルのの置き場所が変わっていたりするので注意です。
回路図や3D Cadデータなどはこちらにまとめられています。https://github.com/m5stack/M5-3D_and_PCB
ピンアサインは、Arduino用ライブラリのレポジトリに掲載されています。https://github.com/m5stack/M5Stack
これらの情報は開発環境に関係なく有用です。
Arduino IDEを使った開発
ESP32ボードはArduino IDEで開発できます。ESP32用のArduinoコア(Arduino-ESP32)は、Espressif社からオープンソースで公開されており、M5Stackの開発でも利用できます。
このコアはボードマネージャーには対応していませんので、自前でセットアップする必要があります。コマンドラインからのセットアップなので初心者には厳しいかもしれませんが、手順通りにやれば問題ないはずです。こちらでプラットフォーム毎にインストール手順が公開されています。
https://github.com/espressif/arduino-esp32/tree/master/docs/arduino-ide
インストールすればボード選択のESP32 Arduinoのリスト中にM5Stack-Core-ESP32という名前で出てきます。
M5Stack専用のライブラリも公開されています。ディスプレイやボタン、スピーカー、SDカードなどM5Stackに搭載されている機能が使いやすくなっていますので、まずこれを使い、足りない部分を他のライブラリや自作することで補うのがよさそうです。
インストールは、Arduino IDEのライブラリマネージャでM5Stackと検索すれば出てきます。最新のライブラリを利用したい場合はGithubからダウンロードしてインストールします。手動でインストールする方法もGithubで説明されています。Githubの方がより進んでいるというほどでもなさそうなので、通常はライブラリマネージャーで問題ないでしょう。
Arduino向けの公式のドキュメントもあります。初心者向けのLessonも用意されています。
M5Stack Documentation
Arduino IDEはお手軽な反面、ソースコードが増えてくると管理が面倒になったり、デバッグがしにくいという問題があります。Arduinoの資産をそのまま活用できる開発環境としてPlatformIOも人気のようです。
ESP-IDFを使った開発環境
ESP-IDFはESP32のネイティブな開発環境です。正式には、Espressif IoT Development Frameworkといいます。専用のIDEは持たずコマンドラインから使うようになっています。Eclipseなどからも使うことができます。上級者向けといえます。必要なものはGithubにまとめられています。頻繁に更新されているため動作が怪しくなる場合もあるようなので、必要がなければRelease版を使ったほうが良いでしょう。
セットアップの仕方は公式のドキュメントでまとめられています。Eclipseからの使い方も説明されています。
http://esp-idf.readthedocs.io/en/latest/get-started/index.html
Macの場合はPython2.7環境が必要です。通常macOSでは2.7がデフォルトでインストールされているはずですが、3にしているとツール類が動作しなくなる場合があります。(僕はPyenvで2.7と3を切り替えて利用しています。)
M5Stack用のテンプレートが公開されています。ライブラリ類も含まれているので、これを使うのが良いでしょう。
ESP-IDFの更新が頻繁なためこちらの更新が追いつかない場合もままあるようですので注意が必要です。
ESP-IDFはArduino-ESP32をコンポーネントとして利用することができますので、Arduinoの資産を活用することもできます。
https://github.com/espressif/arduino-esp32/blob/master/docs/esp-idf_component.md
またPlatformIOもESP-IDFに正式対応になったようです。
まだ、試していませんがM5Stackでも使えるでしょう。
MicroPython
MicroPythonは元々STM32F4ボード用に作られたものですが、他のプラットフォームへの移植も盛んで、ESP32にも公式で対応しています。最近ではMicroPythonといえばESP32と言われるくらい使っている人が多いようです。だだし、まだ全てのESP32の機能が使えるようではないようですし、ESP32用の正式なドキュメントがまだ無くESP8266用のものを参考にする必要があります。M5Stackにおいても状況は同じです。
Arduino-ESP32やESP-IDFは、ESP32用のファームウェアを作成するものですが、MicroPythonの場合、MicroPythonのファームウェアをインストールしておき、その上でPythonスクリプトを動かすという仕組みになります。
M5StackもESP32用の純正ファームウェアが使えると思いますが、M5Stack用のファームウェアも公開されていまのでそちらを使うのが良いでしょう。M5Stack用のMicroPythonのファームウェアは公式で2種類あります。M5CloudというものとM5Stack_MicroPythonです。
頻繁に更新されているのはM5Cloudの方で、こちらをメインとするようです。M5Cloudはまだベータ版ですが、Web IDEもあります。
http://io.m5stack.com/
ネットワークが繋がる環境であればブラウザから開発ができます。これだとネットワークがつながらない場合やその必要が無い場合等では不便なので、最近のファームウェアでは、Web IDEがなくても使えるようになっています。
僕の自宅のネット環境だとサーバーに自分のM5Stackを登録できるものの、開発時にはサーバーに接続できないので、ネットワーク環境によってはうまく使えない場合もありそうです。
セットアップの仕方は、
https://github.com/m5stack/M5Cloud/blob/master/README_JP.md
に詳しい説明があります。
その他の情報
M5stackベースのM5Goという開発キットもリリースされています。これはM5Cloudベースの専用開発環境での利用が想定されているようです。MicroPythonかScratchっぽいGUI環境が利用できるよいうです。主に教育用途を想定しているようですが、これも面白そうです。(M5Goのコアは他のM5Stackのコアと同じでなく16MBのFlashを搭載しています)
さいごに
ざっくりとM5Stackの主な開発環境についてまとめました。Pythonの言語としての敷居の低さは魅力的ですが、マシンパワーを引き出すとしたらArduinoの方が良さそう(さらにはESP-IDFですが...)です。
次回は実際にArduitoを使ってM5Stackを動かしていろいろ試してみようと思います。