M5StickCとMuエディタを使ったMicroPython開発

現時点の情報です。最新情報はM5StickC非公式日本語リファレンスを確認してみてください。

概要

M5Stackさんの公式アカウントでMuエディタを紹介していたので、使ってみました。

Muエディタとは?

MicroPython用のエディタで、BBC micro:bitなどの開発用として作られているみたいです。Python上で動いているので、コードのシンタックスチェックやコード補完などもやってくれるようです。

ESP32サポート

現在安定版はMu 1.0.3ですが、ESP32のサポートはMu 1.1.0以降からのようです。ベータ版を使うことでESP32で使えるようになります。

Muのセットアップ方法

オフィシャルサイトのダウンロードのページからセットアップファイルを取得できます。ただしバージョンがMu 1.1.0以降である必要があるので、下の方にあるリンクではなく「TRY THE ALPHA OF THE NEXT VERSION OF MU!」と赤い枠で囲われている方からダウンロードする必要があります。

正式版がリリースされるとセットアップしなくてもよい、ポータル版などがあるのではやくリリースされるといいですね。

今回は「mu-editor_1.1.0-alpha.2_win64.exe」を利用してみました。

起動確認

最初に起動したときに、どのボードを使うのか聞かれます。ESPを選択してください。メニューのモードからいつでも変更可能です。

エディタの画面になります。標準で日本語化されていました。

エラー確認

エディタ画面の右下に設定マークがあるので、開いてみます。するとエラーログが表示されると思います。この中をみてエラーがでていないかを確認してください。

No module named 'jupyter_client.session'

私はこのモジュールがないとエラーがでていました。まだベータ版だからかな?

pip install --upgrade jupyter

とりあえず入れてみたらエラーが消えました。でもMuってPython環境こみのはずなのになぜ標準環境にいれたpipで読み込めるのだろう?

M5StickC接続

UIFlowを入れたM5StickCをUSBモードで接続しておきます。

USBモードやUIFlowの入れ方は上記の記事を参考にしてください。

接続確認

メニューから「ファイル」ボタンなどを押して見ると、おそらくこのエラーが表示されるはずです。これはMuエディタではシリアルポートをすべて検索して、知っているUSBシリアル以外は読み込まない設定になっているからです。

ソースファイル修正

  • C:\Users\%username%\AppData\Local\Mu\pkgs\mu\modes\esp.py

Windowsで標準環境にセットアップすると、上記の場所に該当ファイルがあるはずです。

    valid_boards = [
        # VID  , PID
        (0x1A86, 0x7523),  # HL-340
        (0x10C4, 0xEA60),  # CP210x
        (0x0403, 0x6015),   # Sparkfun ESP32 VID, PID
    ]

上記のようになっている行を以下のように変更してください。

    valid_boards = [
        # VID  , PID
        (0x1A86, 0x7523),  # HL-340
        (0x10C4, 0xEA60),  # CP210x
        (0x0403, 0x6001),  # CH552
        (0x0403, 0x6015),   # Sparkfun ESP32 VID, PID
    ]

CH552がM5StickCで使っているUSBシリアルになります。M5StackなどはCP210xを使っているので、この作業は必要ないはずです。

変更後にMuエディタを再起動することで、読み込みできるようになるはずです。この変更はプルリクエストを書いてみたので、そのうち必要なくなるかもしれません。

接続確認

メニューより「ファイル」を押してみると、先程とは違うエラーが表示されるようになったはずです。このエラーが表示されれば認識されているはずです。

ちなみに複数デバイスが接続されている場合には、一番最初に見つかったデバイスにアクセスしちゃいますので注意してください。この辺を修正するプルリクエストも他の人がだしていたので、そのうち複数いる場合にはデバイスを選択できるようになると思います。

実行で接続してCtrl+Cを連打

「ファイル」が選択されている場合にはもう一度押して解除してから「実行」ボタンを押してみてください。上記のようになにか文字がでてくれば成功です。

文字のところに入力用のカーソルがありますので、そこを選択してからCtrl+Cボタンを何度か押します。

上記のようにhelp()が表示されればUIFlowが終了され、コマンドが受け付ける状態になりました。

では実際に使ってみたいと思います。UIFlowなどを使ってとりあえず画面を赤くするブロックを設置し、その後Pythonコードを表示させます。

from m5stack import *
from m5ui import *
from uiflow import *
lcd.fill(0xff0000)

改行などは消していますが、上記が最低限必要な処理です。これを実行のボックスに入力していきます。

上記のように入力すると、M5StickCの画面が赤くなったはずです!

実用的な使い方(Lチカ)

from m5stack import *
from m5ui import *
from uiflow import *

setScreenColor(0x111111)

lcd.fill(0xff0000)
while True:
  M5Led.on()
  wait(1)
  M5Led.off()
  wait(1)
  wait_ms(2)

Lチカをブロックで作って、余分な改行を消したものです。

上記のコードをエディタ部分に入力してから「実行」ボタンを押すと、上の行から再度実行し直してくれます。

これはかなり便利ですね。ただし、前回の状態が残ったまま再実行していますので、過去の変数が残っていたり、LEDがつきっぱなしだったりと初期化がされていませんので注意してください。

たまにM5StickCの電源ボタンを押して、強制的に初期化してあげるのが良さそうです。

ちなみに構文チェック機能はありますが、M5Stack社の拡張した部分はソースが公開されていないので、ほとんどがエラーになってしまいます。

まとめ

シリアルポートが直接選択できないのは、micro:bit初学者が混乱しないようにみたいですが、ちょっと不便ですよね。

エディタ自体は結構軽いので、ちょっとしたことをMicroPythonで動かしたいときにはいいのかもしれません。

ファイル転送もできるので、UIFlowのアプリとして転送することもできます。個人的にはコードを直接触るのであれば、UIFlowではなくMicroPythonのBluetoothが使える最新バージョンを使いたいです。しかしM5StickCの画面などを使うのが面倒なので、ATOMやDevボード系に最新バージョンを入れるか、M5StickCでUIFlowバージョンを使うかの選択かもしれません。

コメント