MicroPythonとUNIXのシェルを統合するrshellの使い方

Interfaceの9月号でも特集されていることもあり、久しぶりにESP32のMicroPythonを動かしてみました。
以前と違って、最新版のバイナリをホームページからダウンロードして書き込めるので、かなり利用の敷居は下がりました。

書き込みツールはesptoolをインストールして使います。

$ sudo pip install esptool
$ esptool.py --chip esp32 -p /dev/ttyUSB0 -b 115200 erase_flash
$ esptool.py --chip esp32 -p /dev/ttyUSB0 -b 115200 write_flash -z 0x1000 esp32-20180801-v1.9.4-421-g6e5a40cf3.bin

ESP32を引っ張り出したのは、前回もちょっと触れたrshellを使ってみるためです。
rshell自体はESP32専用ではなく、むしろpyboard用ですが、こちらのコメントでESP32は挙動が違うようなことが書かれていたので確認してみました。(結果的に、違いは分かりませんでしたが。)

rshellは「Remote Shell for MicroPython」だそうですが、要はUNIXでおなじみのいくつかのコマンド(ls、cp、rmなど)をMicroPythonのファイルシステムに対して使えるようにしたものです。

$ sudo pip install rshell

でインストールできます。起動は、例えばMicroPythonが接続されているシリアルポートが/dev/ttyUSB0なら

$ rshell --port /dev/ttyUSB0 

となります。

起動後は普通のシェルのように使えます。
終了するにはCtrl-Dです。

普通のシェルとの違いは、MicroPythonのファイルシステムが/pyboardという仮想的なディレクトリ以下にマウントされているように使えることです。
例えば、

ls /pyboard

でMicroPythonのルートディレクトリのファイル一覧が得られます。
ローカルファイルも同時に参照できるので、例えば

cp /my/home/file1 /pyboard

とするとローカルの/my/home/file1がMicroPythonのルートディレクトリにコピーされます。

また、

repl

でMicroPythonのREPLに接続できます。REPLから抜けるのはCtrl-Xです。

Linux上でMicroPythonのスクリプトを編集して、MicroPythonのファイルシステムへ転送して、REPLで動作を確認する、という作業がこれ一つでできるので、Linuxを使えるのであれば便利です。
単にREPLを使用するためのターミナルとして使うのもアリだと思います。

コメント