この方法で出来た! M5STACKにMicroPythonファームウエアをMacBookAirからインストールする方法
背景
M5STACKをMicroPythonで開発するためのファームウエアをインストールする手順を備忘録としてまとめました。
このページで伝えたいこと
最低限の手間と時間で、Pythonを使ったM5STACKの開発が始められる事を目指しました。自身、ネット上のいくつかの方法を試しましたが、うまくいかないものがあまりに多いことに驚きました。同じような困りごとにぶつかっている人が、理屈はさておき前に進められるようにと思い残しました。
ゴールイメージ
ゴールは、M5STACKとPCをUSBケーブルでつないで、パイソン対話モードでM5STACKを動かせること。今回はティスプレイに文字を表示するHello worldプログラム、すなわち
と打ったら、この写真のようにディスプレイ画面に表示されることがゴールです。
前提条件
開発環境はMacBookAir M1 2020で、macOS Big Sur バージョン11.2.2 を使っています。 なお、M5STACKは Basicです。
Arduino IDEではなく、なぜMicroPythonなのか?
個人的にPythonが好きだからです
M5STACKの開発環境といえば、Arduino IDEが標準的ですね
自分はArduino IDEも使いますが、ライブラリやトラブルシュート情報もネットに充実・・・
やりたいことを最小限の努力で実現するならArduinoをおすすめします
うまくいった方法(ここからがメイン)
ここからは実際に、うまくいったファームウエアのインストール方法を紹介します。
早速ですが、自分が使ったファームウエアはここにあります。
ここのディレクトリにある、m5stack-20180516-v0.4.0.bin を使いました。
拡張メモリpsram無しバージョンで、最新の物を選択しました。
ファームウエア書き込みの流れ
ファームウエア書き込みの流れは、
順番に説明しますね。
1.ファームウエアファイルをローカルにコピー
Macのターミナルで作業したいフォルダに移動、
そのディレクトリでgitコマンドを使ってファームウエアの置いてあるディレクトリを丸ごとコピーしました。
usagi@usagi-mba work % git clone https://github.com/m5stack/M5Cloud
Cloning into 'M5Cloud'...
remote: Enumerating objects: 510, done.
remote: Total 510 (delta 0), reused 0 (delta 0), pack-reused 510
Receiving objects: 100% (510/510), 25.65 MiB | 17.66 MiB/s, done.
Resolving deltas: 100% (230/230), done.
usagi@usagi-mba work %
ここでは、ファームウエアが格納されている階層の2階層上のディレクトリ以下をまとめてコピーしています。ファームウエアが置いてある、もっと下位のフォルダでgit clone できないかと思って試しましたが、そんなリポジトリはないと言われて進みませんでした。
2.esptoolを使ってM5STACKのフラッシュメモリデータを消去
esptoolを使って、M5STACK内のフラッシュメモリを消去します。
esptoolが使える状態か、確認するには、ターミナルで下記のコマンドを実行します。
usagi@usagi-mba ~ % esptool.py version
esptool.py v3.0
3.0
バージョン情報が返ってきたら、OK。
command not found などエラーっぽいメッセージが返ってきたらなんらかの問題があります。esptoolをまだインストールしていないという方も含めて、自分が以前に実施して成功したこちらを真似してみてください。
フラッシュメモリの消去は以下のコマンドを使います
esptool.py --port /dev/tty.usbserial-0203ACAE erase_flash
ここで、/dev/tty.usbserial-0203ACAEが、M5STACKのデバイス名です。
この部分は使っているデバイスや環境によって異なるため、自身の環境で確認が必要です。
確認方法は次のように行ってください。
まず、M5STACKをUSB接続していない状態で、デバイス情報をlsコマンドで確認
usagi@usagi-mba ~ % ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port
/dev/tty.wlan-debug
/dev/tty.debug-console
つぎに、M5STACKをUSB接続している状態で、デバイス情報をlsコマンドで確認します
usagi@usagi-mba ~ % ls /dev/tty.*
/dev/tty.Bluetooth-Incoming-Port
/dev/tty.wlan-debug
/dev/tty.debug-console
/dev/tty.usbserial-0203ACAE
一つ増えた。/dev/tty.usbserial-0203ACAEがM5STACKです
以下は、メモリ消去実施結果です。
usagi@usagi-mba OFF-LINE % esptool.py --port /dev/tty.usbserial-0203ACAE erase_flash
esptool.py v3.0
Serial port /dev/tty.usbserial-0203ACAE
Connecting.....
Detecting chip type... ESP32
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: b8:f0:09:c5:c5:10
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 25.5s
Hard resetting via RTS pin...
usagi@usagi-mba OFF-LINE %
Chip erase completed successfullyと表示されればOK!
3.esptoolを使って新しいファームウエアを書き込み
ターミナルでcd コマンドを使い、ファームウエアの置いてあるディレクトリまで移動します
usagi@usagi-mba work % cd M5Cloud/firmwares/OFF-LINE
ls コマンドでファームウエアが表示されればOK!
usagi@usagi-mba OFF-LINE % ls
m5stack-20180323-v0.3.8.bin
m5stack-20180516-v0.4.0.bin
m5stack-psram-20180419-v0.3.9.bin
m5stack-20180419-v0.3.9.bin
m5stack-psram-20180323-v0.3.8.bin
m5stack-psram-20180516-v0.4.0.bin
ファームウェアの書き込みは、フラッシュメモリ消去の時と同様に、esptoolをつかいます
書き込むファームウエアを選んで下記のコマンドを実行します
esptool.py --chip esp32 --port /dev/tty.usbserial-0203ACAE write_flash -z 0x1000 m5stack-20180516-v0.4.0.bin
/dev/tty.usbserial-0203ACAEの部分は、みなさんの環境によって異なるので、上の方の「2.esptoolを使ってM5STACKのフラッシュメモリデータを消去」を参考に確認してください。
書き込みを行うと以下のメッセージが流れます。
usagi@usagi-mba OFF-LINE % esptool.py --chip esp32 --port /dev/tty.usbserial-0203ACAE write_flash -z 0x1000 m5stack-20180516-v0.4.0.bin
esptool.py v3.0
Serial port /dev/tty.usbserial-0203ACAE
Connecting.......
Chip is ESP32-D0WDQ6-V3 (revision 3)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: b8:f0:09:c5:c5:10
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Compressed 1747296 bytes to 1119059...
Wrote 1747296 bytes (1119059 compressed) at 0x00001000 in 98.6 seconds (effective 141.8 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
usagi@usagi-mba OFF-LINE %
うまくいくとM5STACKのディスプレイが、プツッという音とともに光ります。
この状態になれば、ファームウエアの書き込みは完了です!
4.動作確認
USB接続した状態で、screenコマンドでM5STACKにアクセスします。
screenコマンドに続いて、M5STACKのデバイス名を引数に指定し、通信速度は115200とします
usagi@usagi-mba work % screen /dev/tty.usbserial-0203ACAE 115200
コマンド実行すると、下記のようにはじめは真っ白な画面が出ますが、リターンキーを押すとプロンプトが表示されて、Pythonの対話モードにはいります。
- まずはターミナルでscreenコマンド入力
- 直後は真っ白な画面が表示されます
- リターンキーを押すと、プロンプト>>>が表示され、Pythonの対話モード開始
動作確認は、対話モードでおこないます。
対話モードは、コマンド入力すると応答が即座に得られます。
たとえば、以下のような計算を行うと答えが表示されます。
>>> 1+1
2
>>>
以下はm5stackのlcdに文字を表示するコマンドで、一行づつ実行します。
m5stackパッケージから、lcdモジュールをインポート
m5stackのlcd(液晶ディスプレイ)をクリア
m5stackのlcdに文字を表示
以上が、M5STACKにMicroPythonファームウエアを、MacBookAirからインストールする方法でした。
この記事が、誰かのお役に立つことを願っています^^)