※ 2019/5/17 注記: M5Stack で MicroPython 単体および M5Cloud はすっかりメンテされなくなり、UI.Flow に移行しているため、本記事はもう古すぎな内容となっています。
ESP32を使った開発モジュールM5stack、カラー液晶画面つきで、キーボード開発キット「FACES」も出て、MicroPythonも使えるとあって手を出しました。
技適の表示もあることを確認。日本でも安心して電波出せます。
FACESの電源入れるといきなりスーパーマリオブラザースが起動します(さすがに、スイッチサイエンスが日本で取り扱っているFACESではこのプレインストールがありません)。ちょっと遊んでみる限り、液晶の発色はあまりよくなく、スピーカからの音もひどいノイズで聞けたもんじゃありません。
さて、マリオはさっさとつぶしてMicroPython環境を入れることにします。ただ、公式ページに情報がほとんどありません。ググってみてPycomのファームウェアを入れるというのは見つけたのですが、これはちょっと違う気が。そこで、M5stackのgithubを見てまわって、それっぽいものがあったので試してみることにしました。
~~中国語ですが、~~それっぽい説明はここにあります。"M5Stack MicroPython"というキーワードもあるので、いかにもそれっぽい。この説明にしたがって試してみることにします。
ファームウェアのダウンロードと書込み
ファームウェアはここにあります。とりあえず最新の m5cloud-20180102-v0.2.5.bin m5cloud-20180228-v0.3.4.bin をダウンロードします。m5cloud-psram-20180102-v0.2.5.bin m5cloud-psram-20180228-v0.3.4.bin というのはたぶん2017年末に出た4MB PSRAM付用です。
ファームウェアをESP32に書き込むのにはesptool.pyを使いました。バージョン2.1以上がいいらしいです。書込みは、PCとM5stackを付属のUSBケーブルでつないで以下の2つのコマンドラインで出来ます (Macの場合)。
$ esptool.py --chip esp32 --port /dev/tty.SLAB_USBtoUART erase_flash
$ esptool.py --chip esp32 --port /dev/tty.SLAB_USBtoUART write_flash --flash_mode dio -z 0x1000 m5cloud-20180228-v0.3.4.bin
Wi-Fi接続の設定
ファームウェアの書込みが終わると、自動でリセットがかかり、M5stack 自体が Wi-Fiのアクセスポイントになります。この時点でLCD画面の表示から MicroPython が動いているらしいことがわかります。
LCD画面の表示からアクセスポイントの SSID は "M5Stack-49c048" なので、PCのWi-Fi接続先をそこに変えます。
Webブラウザで 192.168.4.1 にアクセスして、普段使っている Wi-Fi のSSIDとパスワードを入力して "Configure" をクリックします。
Wi-Fi接続が行われます。Wi-Fi接続中にLCD画面にパスワードが表示されるのはセキュリティ的にマズイ。他の人に使わせるときには注意してください。 Wi-Fi接続に成功すると、LCD画面にチェックコードが表示されます。
PCのWi-Fi接続先は元に戻しておきます。
M5Cloud へのデバイス登録
WebブラウザでM5Cloudにアクセスします。ログイン画面になるので、まずはアカウントを登録するために "Register" をクリックします。
アカウント登録画面になるので、アカウント名となるEメールアドレスとパスワードを入力して "Register" をクリックします。
"Device Management" 画面になるので、"+Add" をクリックします。
M5stack のLCDに表示されていたチェックコードを入力します。チェックコードは一定間隔で変わるので、必ずLCD画面に表示されている最新のものを入力します。
デバイス一覧に出てきて、"status" が "online" になっていれば登録完了です。
IDEでの開発とアップロード
”Device Management" 画面の左側にあるアイコン ">" をクリックすると IDE画面になります。最初に使用するデバイスの選択になるので、登録したデバイスを選択します。
IDEでは最低限のファイルが用意されます。
boot.py は デバイスブート時に実行されるもので、デフォルトではWi-Fi設定、NTP時刻取得、デバイスとクラウド間の通信の設定が行われます。
config.jsonにはWi-Fi接続のためのSSIDとパスワードが設定されています。パスワードは暗号化されていないので他人に見られないよう要注意。
main.pyがMicroPythonスクリプトの本体です。デフォルトでは "Hello world!" をLCD画面に出力ものがコメントアウトされています。このコメントアウトを外して、左側の雲のアイコンをクリックします。ファイルが M5stack に転送・実行されます。
オフラインでの開発方法(元に戻す自信のない人は止めときましょう)
いちおう、これでM5stackのMicroPython開発環境は出来たわけですが、Wi-Fiに繋がってないと開発できないというのはちょっと不便。Wi-Fi使えない環境だと、M5stackが接続待ちで固まってしまうので、オフライン環境で開発するにはブート時のWi-Fi接続を止める必要があります。これを行うにはboot.pyでの "wifisetup" と "m5cloud" のimportをコメントアウトしてM5stackに転送します。
以後は自動でM5cloudに接続しに行かなくなるので、PCとM5stackを付属のUSBケーブルで繋いで、シリアル端末からREPL操作したり、ampyでファイル転送ができるようになります。ただし、これを行うと、当然ながら以後のM5cloudからのファイル転送は出来なくなりますので、元のboot.pyを復活させる自信の無い人は止めておきましょう。
また、v0.3.0からM5Clouldを使わない人のためのファームウェアも用意されました。