ピンポンうさぎ日記

料理レシピや趣味を中心に、日々の気づきを書いています

この方法で出来た! M5STACKにMicroPythonファームウエアをMacBookAirからインストールする方法

 

背景

M5STACKをMicroPythonで開発するためのファームウエアをインストールする手順を備忘録としてまとめました。

このページで伝えたいこと

最低限の手間と時間で、Pythonを使ったM5STACKの開発が始められる事を目指しました。自身、ネット上のいくつかの方法を試しましたが、うまくいかないものがあまりに多いことに驚きました。同じような困りごとにぶつかっている人が、理屈はさておき前に進められるようにと思い残しました。 

ゴールイメージ

ゴールは、M5STACKとPCをUSBケーブルでつないで、パイソン対話モードでM5STACKを動かせること。今回はティスプレイに文字を表示するHello worldプログラム、すなわち

>>> from m5stack import lcd
>>> lcd.print('This is the goal!!')

 

と打ったら、この写真のようにディスプレイ画面に表示されることがゴールです。

f:id:Pin-Pon-Usagi:20210523152119j:plain

M5STACKをPythonでうごかすのがここでのゴール!

 

前提条件 

開発環境はMacBookAir M1 2020で、macOS Big Sur バージョン11.2.2 を使っています。 なお、M5STACKは Basicです。

Arduino IDEではなく、なぜMicroPythonなのか?

個人的にPythonが好きだからです 

M5STACKの開発環境といえば、Arduino IDEが標準的ですね

自分はArduino IDEも使いますが、ライブラリやトラブルシュート情報もネットに充実・・・

やりたいことを最小限の努力で実現するならArduinoをおすすめします

 

うまくいった方法(ここからがメイン) 

ここからは実際に、うまくいったファームウエアのインストール方法を紹介します。

 

早速ですが、自分が使ったファームウエアはここにあります。

github.com

 

ここのディレクトリにある、m5stack-20180516-v0.4.0.bin を使いました。

拡張メモリpsram無しバージョンで、最新の物を選択しました。

f:id:Pin-Pon-Usagi:20210523153122p:plain

使ったファームウエア

ファームウエア書き込みの流れ

ファームウエア書き込みの流れは、

  1. 拡張子.binのファームウェアをローカルにコピー
  2. esptoolを使ってM5STACKのフラッシュメモリデータを消去
  3. esptoolを使って新しいファームウエアをフラッシュメモリに書き込み
  4. 動作確認

順番に説明しますね。

 

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をまだインストールしていないという方も含めて、自分が以前に実施して成功したこちらを真似してみてください。

pin-pon-usagi.hatenablog.com

 

フラッシュメモリの消去は以下のコマンドを使います

 

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のディスプレイが、プツッという音とともに光ります。

f:id:Pin-Pon-Usagi:20210523164109j:plain

プッ・・という音とともに突然ディスプレイが光ります(ビックリします)。

 この状態になれば、ファームウエアの書き込みは完了です!

 

4.動作確認

USB接続した状態で、screenコマンドでM5STACKにアクセスします。

screenコマンドに続いて、M5STACKのデバイス名を引数に指定し、通信速度は115200とします 

 

usagi@usagi-mba work % screen /dev/tty.usbserial-0203ACAE 115200

 

コマンド実行すると、下記のようにはじめは真っ白な画面が出ますが、リターンキーを押すとプロンプトが表示されて、Pythonの対話モードにはいります。 

 

  • まずはターミナルでscreenコマンド入力

f:id:Pin-Pon-Usagi:20210524082806p:plain

ターミナルに、screenコマンドを入力しM5STACKとUSB接続

 

  • 直後は真っ白な画面が表示されます

f:id:Pin-Pon-Usagi:20210524082915p:plain

はじめは真っ白な画面だが、これで大丈夫!
  • リターンキーを押すと、プロンプト>>>が表示され、Pythonの対話モード開始

f:id:Pin-Pon-Usagi:20210524082958p:plain

リターンキーを押すと、Pythonの対話モードに入り、プロンプト>>>が表示!!


動作確認は、対話モードでおこないます。
対話モードは、コマンド入力すると応答が即座に得られます。

たとえば、以下のような計算を行うと答えが表示されます。

 

>>> 1+1
2
>>>

 

以下はm5stackのlcdに文字を表示するコマンドで、一行づつ実行します。

m5stackパッケージから、lcdモジュールをインポート

m5stackのlcd(液晶ディスプレイ)をクリア

m5stackのlcdに文字を表示

>>> from m5stack import lcd
>>> lcd.clear()
>>> lcd.print('This is the goal!')
>>>

 

f:id:Pin-Pon-Usagi:20210523152119j:plain

LCDに入力した文字が表示されればOK.

以上が、M5STACKにMicroPythonファームウエアを、MacBookAirからインストールする方法でした。

この記事が、誰かのお役に立つことを願っています^^)