pyboard.py ツール
これは PC 上で動作する単体の Python ツールで、次のことができます:
MicroPython のデバイス上で Python のスクリプトやコマンドを素早く実行します。MicroPython のプログラムを開発するとき、デバイスとの間でファイルをコピーせずに素早くコードを試せるので便利です。
デバイス上のファイルシステムにアクセスします。これにより、(ボードが USB MSC をサポートしていなくても)コードをデバイスにデプロイできます。
名前とは異なり、 pyboard.py は raw REPL をサポートするすべての MicroPython のポート(STM32、ESP32、ESP8266、NRF を含む)で動作します。
最新版は GitHub からダウンロードできます。唯一の依存は pyserial ライブラリで、PiPy かシステムのパッケージマネージャからインストールできます。
pyboard.py --help を実行すると、次の出力が得られます:
usage: pyboard [-h] [-d DEVICE] [-b BAUDRATE] [-u USER] [-p PASSWORD]
[-c COMMAND] [-w WAIT] [--follow | --no-follow] [-f]
[files [files ...]]
Run scripts on the pyboard.
positional arguments:
files input files
optional arguments:
-h, --help show this help message and exit
-d DEVICE, --device DEVICE
the serial device or the IP address of the pyboard
-b BAUDRATE, --baudrate BAUDRATE
the baud rate of the serial device
-u USER, --user USER the telnet login username
-p PASSWORD, --password PASSWORD
the telnet login password
-c COMMAND, --command COMMAND
program passed in as string
-w WAIT, --wait WAIT seconds to wait for USB connected board to become
available
--follow follow the output after running the scripts
[default if no scripts given]
-f, --filesystem perform a filesystem action: cp local :device | cp
:device local | cat path | ls [path] | rm path | mkdir
path | rmdir path
デバイス上でコマンドを実行する
これは、短いコード片を試したり、デバイスとのやり取りをスクリプト化したりするのに便利です。:
$ pyboard.py --device /dev/ttyACM0 -c 'print(1+1)'
2
同じデバイスとよくやり取りするなら、 --device コマンドラインオプションを使う代わりに環境変数 PYBOARD_DEVICE を設定できます。たとえば、次は前の例と同じです:
$ export PYBOARD_DEVICE=/dev/ttyACM0
$ pyboard.py -c 'print(1+1)'
同様に、 PYBOARD_BAUDRATE 環境変数で --baudrate オプションのデフォルトを設定できます。
デバイス上でスクリプトを実行する
デバイス上で実行したいスクリプト app.py があるなら、次のようにします:
$ pyboard.py --device /dev/ttyACM0 app.py
これは実際には app.py をデバイスのファイルシステムにコピーするわけではなく、コードを RAM に読み込んで実行するだけである点に注意してください。プログラムが生成した出力はすべて表示されます。
プログラム app.py が終了しない場合は、Ctrl-C などで pyboard.py を停止する必要があります。プログラム app.py は MicroPython のデバイス上で動作し続けます。
ファイルシステムへのアクセス
-f フラグを使うと、次のファイルシステム操作がサポートされます:
cat pathデバイス上のファイルの内容を表示します。cp src [src...] destデバイスとの間でファイルをコピーします。ls [path]ディレクトリの内容を一覧表示します(デフォルトはカレントワーキングディレクトリ)。mkdir pathディレクトリを作成します。rm pathファイルを削除します。rmdir pathディレクトリを削除します。touch pathファイルがまだ存在しなければ作成します。
cp コマンドは、ローカルとリモートのファイルを指すのに ssh に似た記法を使います。 : で始まるパスはデバイス上のものと解釈され、それ以外はローカルのものになります。したがって:
$ pyboard.py --device /dev/ttyACM0 -f cp main.py :main.py
は、PC のカレントディレクトリにある main.py を、デバイス上の main.py という名前のファイルにコピーします。ファイル名は省略できます。たとえば:
$ pyboard.py --device /dev/ttyACM0 -f cp main.py :
は上と同じです。
さらにいくつかの例:
# main.py をデバイスからローカルの PC にコピーします。
$ pyboard.py --device /dev/ttyACM0 -f cp :main.py main.py
# 同じことを . を使って行います。
$ pyboard.py --device /dev/ttyACM0 -f cp :main.py .
# 3つのファイルを名前を保ったままデバイスにコピーします。
$ pyboard.py --device /dev/ttyACM0 -f cp main.py app.py foo.py :
# デバイスからファイルを削除します。
$ pyboard.py --device /dev/ttyACM0 -f rm util.py
# デバイス上のファイルの内容を表示します。
$ pyboard.py --device /dev/ttyACM0 -f cat boot.py
...contents of boot.py...
pyboard ライブラリを使う
pyboard.py を、MicroPython のボードとのやり取りをスクリプト化するためのライブラリとして使うこともできます。
import pyboard
pyb = pyboard.Pyboard('/dev/ttyACM0', 115200)
pyb.enter_raw_repl()
ret = pyb.exec('print(1+1)')
print(ret)
pyb.exit_raw_repl()