M5StickC PLUS 主にMicroPythonで遊ぶ


ちっちゃくて,いろいろ遊べるデバイスです。私の遊び方をまとめることにします。

https://docs.m5stack.com/en/quick_start/m5stickc_plus/mpy
https://docs.m5stack.com/en/core/m5stickc_plus

ほぼこのページで説明されているのですが,補足の意味で書きます。

まずはとにかくファームを書き込む

  • M5Burnerを使います。上記URL参照。
  • PLUSじゃないサンプルファイルを書き込むと,いろいろ不都合を起こします。やってしまったら,Easyloader等でやり直しします。(これも上記URLからたどれる)
  • WiFiの設定も適宜行います。

とにかく REPL と ampy で操る

いきなりUSBケーブルを接続し,ampyコマンドを送っても反応がないので,かなり悩みました。

なかなかズバリ書かれた記事が見当たらなかったのですが,以下の手順を見つけました。macOS Big Sur 11.6.4 を使っています。

  • USBケーブルでmacに接続し,screen でM5StickC PLUSと通信します。(デバイス番号は適宜変更してください)
screen /dev/cu.usbserial-1DD2F6A6AB 115200

M5StickC PLUSから反応がない場合が多いです。Ctrl+C / Ctrl+D / Ctrl+B などを送ってみます。 見慣れたメッセージが出てくるはずです。

このまま REPL 上で操作も可能です。ああよかった。

その REPL の状態で,screenを脱出します。[Ctrl]+[a] つぎに [k] [y] を押します。ampyを受け付けるようになります。

$ ampy -p /dev/cu.usbserial-1DD2F6A6AB ls /flash
/flash/apps
/flash/blocks
/flash/boot.py
/flash/emojiImg
/flash/img
/flash/main.py
/flash/res
/flash/temp.py
/flash/test.py
/flash/update
$ ampy -p /dev/cu.usbserial-1DD2F6A6AB run blink.py 
0
1
2
3
4
$

使ったスクリプト

blink.py
from m5stack import *
from m5ui import *
from uiflow import *
import utime

def run():
    for i in range(5):
        print(i)
        M5Led.on()
        utime.sleep(0.5)
        M5Led.off()
        utime.sleep(0.5)

run()

それでも,どのようなきっかけなのかよくわかりませんが,ampyを受け付けなくなるときがあります。そんなときも,上記のようにREPLにアクセスして,いったんscreenを抜ければまたampyを受け付けるようになるはずです。

M5StickC PLUS の動作モードについて

これも最初わからなくて悩みました。。。末尾の記事を参考に,やっと自分なりに理解できるようになりました。うまく説明できるか不安ですが。。。

図はいろいろなURLから引用させてもらいました。

まず,どのモードになっていても,上に記載した方法で 強制的にREPLにアクセスすることができるようです。 ひと安心です。

電源を入れて,最初の画面が出たらすぐに[B]ボタンを何度か押すと,以下の3モードが切り替えできます。

左から Internet モード,USB モード,APP モードとなってます。

[B]ボタンを離してしばらくすると,そのモードで動作開始します。

また,電源ON直後に[A(M5)]を押し,続けて[B]を連打することで,以下3つの裏モードに入ります。

[B]で選んで[A(M5)]で確定します。

  • Code ではInternetモードになるようです。
  • Setup は設定メニューに入ります。
  • APPListでは,app/にある*.pyファイルを選んで実行できます。

最初は [A(M5)] や [B] を押すタイミングが良くわかりませんでしたが,慣れたらOKでした。
REPLからCtrl+Dで再起動すると少し楽です。

VScode + vscode-m5stack-mpy で遊ぶ

公式ガイドのとおりですが,少しだけ補足します。

M5StickC PLUS を接続すると,エクスプローラー - M5STACK DEVICE にデバイス内のファイル一覧が出てきます。これらの *.py ファイルに対して編集したり,Run in M5Stack したりすることになります。

Thonnyを使う(個人的おすすめ 加筆修正)

  • Ctrl+C連打等でREPLへのアクセスは可能です。デバイス内のファイルも開けます。ただ,>>> %Run -c $EDITOR_CONTENT がうまく動きません。importして実行します。(blink.pyは上記参照)
  • または exec("myfile.py")とすれば簡単です。
MicroPython ae8b2b72a-dirty on 2022-03-04; M5StickC-Plus with ESP32
Type "help()" for more information.
>>> os.listdir()
['apps', 'blink.py', 'blocks', 'boot.py', 'emojiImg', 'img', 'main.py', 'res', 'temp.py', 'test.py', 'update']
>>> import blink
0
1
2
3
4
>>> import blink
>>> blink.run()
0
1
2
3
4
>>> del blink
>>> import blink
>>> blink.run()
0
1
2
3
4
>>> 

しばらく使い込んでみました。以下のように使うといい感じでした。

  • M5StickC PLUS は APPモードにします。

  • Thonnyに接続します。REPLに戻らなかったら,Ctrl+C連打等実施します。

  • 表示 - ファイル を選んでおけば,デバイス内のファイルやり取りも簡単です。とにかくデバイス内にスクリプトを用意します。

  • main.pyを書いた場合,Ctrl+Dで再起動すれば実行できます。その他の場合は上記の通りimportexecfileで実行します。

  • UIFlowを併用すれば,スクリプトのプロトタイプに最適です。UIで画面やら大枠をササッと作って,スクリプトをThonnyにコピペして,細かいところをタイプして実行です。この場合はUIFlowとM5StickC PLUSを接続せずに使います。 UIFlowはリファレンスマニュアルとしても最適です。

ほか参考 URL

  • Arduinoは使ったことがないので...

https://docs.m5stack.com/en/core/m5stickc_plus
https://note.com/singtaro/n/n45bed25b37c5