少し前にuPyDevというMicroPython開発ツールについて記事をまとめたが、完成度がイマイチで常用する気にならず。そんな中、rshellという良さ気なコマンドラインツールを見つけた。rshellのGitHubページは以下。
rshellはampyよりは高機能だがuPyDevほどではない、といったところ。実際にrshellを試してみたので記事にまとめる。
rshellで出来ること
rshellの特長は、
- ファイルのコピーや削除は勿論、閲覧や編集などファイル操作のための内部コマンドが用意されている
- MicroPython側のファイルシステムが仮想マウントされファイル操作が簡単に出来る
- rshellの中でREPL(MicroPythonの対話型インタプリタ)が実行出来る
ファイルシステムの仮想マウントのお陰で、MicroPythonがリモートにある事を意識せずに作業出来る。CircuitPythonならUSBマスストレージ前提だから分かるけど、シリアル接続だけのMicroPythonでこの使い勝手が得られるのは有難い。
下の表にrshellの主なコマンドをまとめておく。(詳細はGitHubページを参照)
コマンド名 | 機能 |
---|---|
cat | ファイルの内容を表示 |
cd | カレントディレクトリの変更 |
cp | ファイルのコピー |
edit | ファイルを指定エディタ(環境変数などで指定する)で開く |
ls | ディレクトリの内容を表示 |
mkdir | ディレクトリの作成 |
rm | ファイルやディレクトリの削除 |
repl | MicroPythonのREPL(対話型インタプリタ)に入る |
shell(!) | PC側のコマンドを実行 |
rshellのインストール
rshellのGitHubページはここ。rshellはPyPIに登録されており、pipでインストール可能。
pip install rshell
rshellの起動
コマンドラインからCOMポートを指定して起動する。
rshell -p <COMポート名>
COMポート名は、Windowsの場合は”COM5″など、Linuxの場合は”/dev/ttyUSB0″などだ。
rshellの内部コマンド
rshellを起動するとカレントディレクトリがプロンプトとして表示され、rshellの内部コマンドが使えるようになる。rshellを終了したい時はCtrl-Dを入力すればOK。以下、いくつか内部コマンドの使い方の例を紹介。
ファイルの一覧を表示
MicroPythonのファイルシステムはデフォルトでは/pyboardの下に見えているので、
ls /pyboard
を実行するとMicroPython側のファイル一覧を表示出来る。/pyboard以外のディレクトリを指定すると、ローカルのファイル一覧が表示される。
ファイルのコピー
PCとMicroPythonの間のファイルのやりとりも簡単だ。
- PC→MicroPythonのコピー
cp foo.py /pyboard
- MicroPython→PCのコピー
cp /pyboard/bar.py .
ファイルの内容確認
MicroPython側にあるファイルの内容も簡単に確認出来る。
cat /pyboard/bar.py
ファイルの編集
MicroPython側にあるファイルを指定してエディタを起動し直接編集出来てしまう(エディタはEDITOR環境変数などで指定)。これは便利!
edit /pyboard/bar.py
REPLに入る
REPLに入るには”repl”と入力するだけ。REPLを終了させたい時はCTRL-Xを入力する。
repl
セッションの例
ラズパイPicoにインストールしたMicroPythonにrshellで接続した時のセッション例を貼っておく。
$ rshell -p /dev/ttyACM0
Using buffer-size of 32
Connecting to /dev/ttyACM0 (buffer-size 32)...
Trying to connect to REPL connected
Retrieving sysname ... rp2
Testing if ubinascii.unhexlify exists ... Y
Retrieving root directories ...
Setting time ... Apr 17, 2022 11:32:48
Evaluating board_name ... pyboard
Retrieving time epoch ... Jan 01, 1970
Welcome to rshell. Use Control-D (or the exit command) to exit rshell.
/home/common/work/EleDIY/MicroPython> ls /pyboard
/home/common/work/EleDIY/MicroPython> edit /pyboard/main.py
Retrieving /pyboard/main.py ...
Updating /pyboard/main.py ...
/home/common/work/EleDIY/MicroPython> ls /pyboard
main.py
/home/common/work/EleDIY/MicroPython> cat /pyboard/main.py
import os
print(os.listdir())
/home/common/work/EleDIY/MicroPython> repl
Entering REPL. Use Control-X to exit.
>
MicroPython v1.18 on 2022-01-17; Raspberry Pi Pico with RP2040
Type "help()" for more information.
>>>
>>> print('Hello world!')
Hello world!
>>>
MPY: soft reboot
['main.py']
MicroPython v1.18 on 2022-01-17; Raspberry Pi Pico with RP2040
Type "help()" for more information.
>>>
/home/common/work/EleDIY/MicroPython>
ここで実行しているのは、以下のような内容。
- MicroPythonのファイルシステムをls(ファイルが何も無いことを確認)
- MicroPythonのmain.pyをエディタで開いてプログラム作成
- MicroPythonのファイルシステムをls(main.pyが作成されている)
- MicroPythonのmain.pyの中身をcatで表示
- REPLに入り、MicroPythonでprint文を実行→’Hello world!’が表示される
- Ctrl-DでMicroPythonを再起動→先ほど作成したmain.pyが自動実行される
- Ctrl-XでREPLを抜ける
まとめ
MicroPython開発の便利ツールrshellを試し、使い方をまとめた。MicroPythonのファイルシステムがPC側に仮想マウントされる仕組みは本当に素晴らしい。コマンドライン好きの自分としてはampyからの乗り換え第一候補かな。そもそもrshell自体は歴史が古く、かなり前から存在していたようだ。もっと早くから使いたかった!
この機能がWiFi経由で使えたら文句なし、と思う。
コメント