モダンOSのお砂場(12) M5StickC、UIFlowとMicroPython

JosephHalfmoon
JosephHalfmoon

このところKendryte K210搭載のM5StickVの上でMicryoPythonしておりましたが、実は同時期に、ESP32搭載のM5StickCも購入しておったのです。同じM5Stickのシリーズなので兄弟というべきか?プロセッサSoCが違い、CPUコアも違いで開発環境も似ていても違う、従兄弟くらいか、それとも腹違い?の兄弟か?

まずは、2機種の外観を並べてみましょう。左のオレンジ色が新にお砂場に登場したM5StickC、右の水色がこのところ大活躍のM5StickVです。

こうして並べてみると、正面から見た大きさはほぼ同じ(オレンジの方が幅広に見えるのは錯覚です。2個重ねると縦横の大きさは変わりません。)しかし、M5StickVの方が分厚い(Vは側面にSDカードスロットあり、裏面にカメラあり、また内蔵しているバッテリ容量もCより大きい。)、そしてLCDパネルも大きいことが分かります。その代わりにCはVにない拡張用の信号端子が上側に出るようになっているのです。CもVも下側にGroveコネクタがあるのでそれを使った拡張は可能ですが、M5StickCの方が手足が多い分、マイコンぽい使い方ができそうです。

さてM5StickCの開発環境ですが、2つの選択肢があります。

  • Arduino IDEでC言語風の言語で開発
  • UIFlowとよぶ環境で、グラフィカルまたはMicroPythonによる開発

M5StackではArduino IDEを使わせていただいており、M5StickVではMicroPythonです。今回は兄弟?機種にあわせてMicroPythonベースのUIFlowを選択することにいたします。UIFlow利用の手順は、日本語のクイックスタートページがあり、それを見れば難しいことは何もありませんでした。

しかし、例によって細かいトラブルはあり

なのでメモっておきます。まず必要なソフトウエアをダウンロードするためにクイックスタートの中のリンクをクリックすると2020年2月7日夕刻現在、リンクが切れて404 Not Foundです。そこでM5Stack.comのダウンロードページから必要なソフトウエア

M5Burner

をダウンロードして起動します。また、M5StickCもUSBでPCに接続しておきます(例によってCOMポートの番号確認。なお、工場出荷状態ではセンサの値と起動からの時間を表示するようなプログラムがインストールされているようでした。USBで接続するとそれが動いてます。)M5Burner使ってUIFlowのファームウエアをM5StickCに書き込まないとならないのです。そこで一番バージョンが新しく見える UIFlow-v1.4.4を選んだら(選ぶとファームウエアを自動的にダウンロードしてくれる)、Seriesという欄(書き込み先のハードウエアのタイプを設定するためのもの)が現れず、Burnできませんでした。そこで一番古そうなv1.2.3を選んだら以下のスクリーンショットのようにStickCが現れ、Burnできました。しかし、詳細は後で述べますが、これは失敗でした。後でもう一度v1.4.4を選択したら、ちゃんとStickCを選択して、Burnできました。なんでかな~?

なお、クイックスタートではボーレートをもっと低い値にしていましたが、勝手に選択される高いレートでも書き込みはOKでした。

ともかくファームウエアがUSB経由で書き込めたので、次はWiFiの設定です。イマイチ、クイックスタートに書いてある手順の意味がのみこみ難ったです。ステップバイステップで書けばこんな感じですかね。

  1. UIFlowのファームを書き込んで再起動するとM5StickCはまずWiFiのアクセスポイントとして起動してくる
  2. そのアクセスポイントの設定ページにPCなりスマホなりで接続し、M5StickCがインターネットに接続するための「本物」のWiFiルータのSSIDとパスワードを設定する。
  3. もう一度再起動すると今度はM5StickCが「本物」のルータにWiFi接続し、インターネットと通信できるようになる。このとき画面にはAPIKEYが表示される。
  4. Web開発環境 flow.m5stack.comをブラウザで開く。そして、M5StickCの装置毎にユニークなAPIKEYを設定する。すると以降、Web開発環境とM5StickCの装置はこのAPIKEYでコネクションできるようになる。

UIFlowというWeb開発環境は、グラフィカルな開発環境がまず表にあります。例えば、Micro:bitの開発環境に似た感じです。左側半面にLCDパネル上にUI要素を配置できるようになっており、配置した要素の属性を右クリックで表示される画面で設定できるようになっています。

そして右半面で、プログラムの流れを記述するようになっています。Blocklyというモードがグラフィカルなブロックエディタで、要素を選んで配置していけば、プログラム完成です。クイックスタートの例題などものの数分で入力可能です。

このブロック表示の裏側では、MicroPythonのコードが生成されており、タブを切り替えるとMicroPythonのコードを見ることができます。

クリクリやっていけばプログラムが出来てしまうので、こういうのも悪くはないな、と思います。そこで、エイヤとRUNさせると、

あれあれ動かないよ?

UIFlow側のエラーメッセージを読むと、どうもUIFlowのWeb環境と、書き込まれているファームウエアのバージョンが合わないといって怒られているようでした。みれば、Web開発環境のバージョンは

1.4.4

でした。それに対して書き込んだファームは古い1.2.3。もう一回Burnやり直してみたら、今度は1.4.4のファーム書き込みに成功。気を取り直してもう一度、例題プログラムを走らせれば、こんどは成功。こんな感じ。

左下のところが光っているのは内蔵のLEDが点滅しているからです。

よかった動いた。実働15分か20分でOKです。モダンはお手軽。

モダンOSのお砂場(11) MicroPython、GPIO入出力 へ戻る

モダンOSのお砂場(13) M5StickC、UIFlowとprint へ進む