以前 BBC micro:bit v1上でMicroPythonを動かしてみたことがあったのです。メモリが小さな v1 では大したスクリプトを動かせなかったです。しかしメモリ容量の拡大した v2 でなら動くはず。今回、MicroPythonのビルドからやってインストールしてみたのですが、調べてみたらビルドなど不要でした。トホホ。
※「MicroPython的午睡」投稿順 Indexはこちら
先に結論書いておきます。
Thonny IDE使えば、ソースからのビルド不要で micro:bit v2用のMicroPythonを一撃でインストールできる
なお、使用したThonny IDEは、Raspberry Pi 4 model B のRaspberry Pi OSで動作しているThonny 3.3.10です。このIDEをインストールしてあれば各種のMicroPythonインタプリタの実行オブジェクトも同梱されているみたいです。その中に micro:bit v2用も含まれていました。
振り返り:micro:bit v1用のMicroPythonへの不満
v1用のMicroPythonへの不満点をまとめると以下です。
-
- RAM容量が小さい(16KB)なので、スクリプトではいくらも使えない。
- 上記の制約からもmicro:bitの特徴の一つであるBLEが使えない
v2であればRAM容量は128KBと8倍となり、上記の制約は無くなった筈。ただ、v2出始めの時期はv2へのMicroPythonの対応が遅れていて、ソースからビルドしないとダメで手がかかる割にはBLEへの対応が未だったので、当面パスということで見送っておりました。
micro:bit v2用MicroPythonへの誤解
久しぶりに micro:bit 用のMicroPythonの以下のページ(日本語)を見てみたら、まだビルドは必要みたいだけれど、v2用であればBLEも使えるみたいでした。よし、手を出してみるか、という気になりました。
ビルドも簡単そうなので、上記のページに記載されている指示にしたがってRaspberry Pi 4 model B上でビルドを試みることにいたしました。
micro:bit v2用MicroPythonのビルド
必要なツールが上記ページに列挙されているので、不足しているものを apt でインストールしてやれば、ビルドそのものはラズパイ上で問題なく行えます(それほど時間もかかりませぬ。)
gitHubからソースを持ってきた後、最初の mpy-cross というツールをビルドした時の出力の末尾のあたりが以下に。
この後、srcディレクトリに入って make すればmicro:bit v2用のMicroPythonのオブジェクトファイルが出来上がる筈。しかし、やってみるとこんな感じ。
コンパイルそのものは通ったのですが、最後、micro:bit v2に書き込めるオブジェクトの形態に仕上げるところでエラーが起きてました。どうもMAPファイルからアドレスを取り出してきてサイズを計算するところでコケているみたい。多分、どこか設定を変更すれば通るようになるのではないかしらん?エラーが出ているのはPythonスクリプト
addlayouttable.py
の内部でした。スクリプトの内部を拝見したところ、チョッと弄れば通りそうだったので、よく考えもせず修正して通してしまいました。修正はこんな感じ。
ビルド完了後の MICROBIT.HEX オブジェクトファイルをUSB接続したmicro:bit v2 へ転送、そしてREPLに接続すれば、こんな感じ。
ちゃんと動作しているみたいです。ビルドは成功ってことだね。
なお、v2用はv1用と違い、CODALというプラットフォーム(開発はランカスタ大らしい)上で実装されているみたいです。関係のURLは以下に。
MicroPython on the micro:bit via CODAL
The micro:bit runtime DAL/CODAL
とくに下の方は、micro:bit上の実装がどうなっているのか易しく?解説してくれているので、読んでよかった(個人の感想)です。
Thonny IDEからもv2用MicroPythonインタプリタをインストールできた
上記でREPL接続するのに使用したのは、Raspberry Pi OS上のThonny IDEです。Raspberry Pi上のPython3用のIDEとしてだけでなく、各種マイコン上のMicroPythonインタプリタのフロントエンドとしても動作するIDEです。そういえば、Thonny IDEからもMicroPythonのオブジェクトをインストールできたっけ、ということで開いてみたのがOptionメニューです。OptionメニューのInterpreterタブが以下に。
以前みた時よりも、対応のMicroPythonの種類増えてないかい? MicroPython(BBC micro:bit、とくにv1, v2の指定は無し)を指定した上で、右下の Install or update firmwareのリンクを押してみるとこんな感じ(以下は、Thonnyからオブジェクトをインスートルした後に再度開いたシーンです。)
micro:bit v2ボードを、ラズパイ4機のUSBポートに接続してあれば、それがmicro:bit でも v2のボード だと正しく認識し、インストールしてあるファームウエアバージョンまで表示されます。ここから Install ボタンを押せば同梱のファームウエアがインストールできます。
起動するとこんな感じ。v1/v2識別して適切なものをインストールしてくれるみたいです。便利だな。
ビルドした日付こそ異なるものの、さきほどビルドしたオブジェクトとまったく同じバージョンじゃん!
ソースからビルドする必要などなかった。。。
BLE、確かに使えるのだけれど。。。
インストールしてみて、気づいたのがBLEに期待するところとの落差です。確かに、現時点のmicro:bit v2用のMicroPythonはBLEをサポートしてはいるのですが
オブジェクトの部分書き換え用
みたいです。ネットワーク経由のファーム更新向けかね。こちとらBLE上のアプリを作りたかったのですけれども。
まあ、しばらく見ないでいるうちに、いろいろ進展あるみたいなので、今後に期待。