MicroPython のリモート制御: mpremote¶
mpremote コマンドラインツールは、シリアル接続を介して MicroPython デバイスをリモートで操作したり、自動化したりするための統合されたユーティリティセットを提供します。
mpremote を使えるようにするには pip でインストールします:
$ pip install mpremote
このツールを使う最も簡単な方法は、引数なしで起動することです:
mpremote
このコマンドは、最初に利用可能なシリアルデバイスを自動的に検出して接続し、対話モードの REPL が使える状態にします。シリアルポートはエクスクルーシブモードで開かれるので、 mpremote の 2 番目(さらに3番目など)のインスタンスを実行すると、利用可能なシリアルデバイスがあれば、後続のシリアルデバイスに接続します。
コマンド¶
REPL にアクセスするには、たいていは引数なしで mpremote を実行するだけで十分です。 mpremote はまた、コマンドラインに与えられる一連のコマンドをサポートしていて、これによりリモートの MicroPython デバイスに対して様々なアクションを実行します。
サポートされているコマンドの全リストは以下の通りです:
デバイス名ショートカットで指定したデバイスに接続:
$ mpremote <device-shortcut>
名前で指定したデバイスに接続:
$ mpremote connect <device>
<device>は以下のいずれかです:list: 利用可能なデバイスのリスauto: 利用可能な最初のデバイスに接id:<serial>: USB シリアル番号<serial>(connect listコマンドで出力される2番目の項目)を持つデバイスに接続port:<path>: 指定したパスを持つデバイスに接続- 任意の有効なデバイス名/パスを指定して、そのデバイスに接続
現在のデバイスを切断:
$ mpremote disconnect
接続したデバイスの REPL に入る:
$ mpremote repl [options]
オプションは次のとおり:
--capture <file>: REPL セッションの出力を指定したファイルにキャプチャーします--inject-code <string>: REPL で Ctrl-J が押されたときに注入する文字を指定します--inject-file <file>: Ctrl-K が押されたときに REPL に注入するファイルを指定します
Python の式を評価して結果を表示:
$ mpremote eval <string>指定した Python のコードを実行:
$ mpremote exec <string>ローカルファイルシステムにあるスクリプトを実行:
$ mpremote run <file>
デバイスに対してファイルシステムコマンドを実行:
$ mpremote fs <command>
<command>は次のとおり:cat <file..>: デバイスにあるファイルの内容を表示ls: カレントディレクトリを一覧表示ls <dirs...>: 指定のディレクトリを一覧表示cp [-r] <src...> <dest>: ファイルをコピー。接頭辞として ":" があると、デバイス上のファイルを指定したことになるrm <src...>: デバイス上のファイルを削除mkdir <dirs...>: デバイスにディレクトリを作成rmdir <dirs...>: デバイス上のディレクトリを削除
リモートデバイス上にローカルディレクトリをマウント:
$ mpremote mount <local-dir>
複数のコマンドを指定することができ、それらは順次実行されます。接続と切断は、コマンドに明示的に指定されていなければ、ツールの実行開始時と終了時に自動的に行われます。自動接続では、最初に利用可能なシリアルデバイスを検索します。アクションが指定されていない場合は REPL が起動します。
ショートカット¶
ショートカットはマクロシステムを使って定義できます。内蔵のショートカットには次のものがあります:
- ``devs``: 利用可能なデバイスを一覧表示
a0,a1,a2,a3: /dev/ttyACM? に接続u0,u1,u2,u3: /dev/ttyUSB? に接続c0,c1,c2,c3: COM? に接続cat,ls,cp,rm,mkdir,rmdir,df: ファイルシステムコマンドreset: デバイスをリセットbootloader: デバイスのブートローダを起動
ユーザー設定は、ユーザー定義のショートカットも含めて、ファイル .config/mpremote/config.py に入れることができます。たとえば、以下のようになります:
commands = {
"c33": "connect id:334D335C3138",
"bl": "bootloader",
"double x=4": "eval x*2", # x is an argument, with default 4
"wl_scan": ["exec", """
import network
wl = network.WLAN()
wl.active(1)
for ap in wl.scan():
print(ap)
""",],
"test": ["mount", ".", "exec", "import test"],
}
利用例¶
mpremote
mpremote a1
mpremote connect /dev/ttyUSB0 repl
mpremote ls
mpremote a1 ls
mpremote exec "import micropython; micropython.mem_info()"
mpremote eval 1/2 eval 3/4
mpremote mount .
mpremote mount . exec "import local_script"
mpremote ls
mpremote cat boot.py
mpremote cp :main.py .
mpremote cp main.py :
mpremote cp -r dir/ :