MicroPythonは対話モードとスクリプトファイルを実行するモードがあります。スクリプトモードで動かすには、PCなどでプログラムを書き、プログラムファイルをMicroPythonが動くマイコン(ここでは「ボード」と呼ぶことにします)に転送します。
PCとボードとの間のファイル転送ツールはいくつかありますが、そのうちの一つで、M5Stackで動作確認できたampyを紹介します。
ampy
ampyはAdafruit社が開発したツールで、ツールの名前はAdafruit MicroPython Toolから来ているようです。ampyはシリアル回線経由でPCとボードとの間でファイル転送をします。またPC上のMicroPythonスクリプトをボード上で実行できます。
この記事はversion 1.0.3で評価して書きました。
インストール
ampyを使うにはPC上にPython 2.7.x か 3.xが必要です。インストールはpipコマンドでおこないます。MacOSでの例を示します。
$ sudo pip install adafruit-ampy
ampyを使う
ampyはportオプションでボードを接続しているデバイスを指定します。AMPY_PORT環境変数にデバイスを指定しておくと便利です。
$ ampy --port=/dev/tty.SLAB_USBtoUART ls flash $ $ export AMPY_PORT=/dev/tty.SLAB_USBtoUART $ ampy ls flash
ampyには次のコマンドがあります。ボードはMicroPythonが動いているマイコンのことです。
- get: ボードからPCにファイルを転送する
- ls: ボード上でlsを実行する
- mkdir: ボード上でmkdirを実行する
- put: PCからボードにファイルを転送する
- reset: ボードでソフトリセットとブートを実行する
- rm: ボード上でrmを実行する
- rmdir: ボード上でrmdirを実行する
- run: ボード上でプログラムファイルを実行する
M5Stackと接続した場合の実行例
M5Stackのファイルシステムは、ルートディレクトリの下にflashというディレクトリーがあり、ファイルをputするとflashの下に置かれます。ampyのディレクトリーの扱いには少しクセがあります。
$ ampy ls flash $ ampy ls flash # エラーになる $ ampy ls /flash # /flashの下のファイルが表示される boot.py main.py config.json $ ampy mkdir testdir # /flash/testdirが作られる $ ampy put test.py /flash/testdir # エラーになる $ ampy put test.py /flash/testdir/test.py # test.pyが/flash/testdir/test.pyとして転送される
runコマンドはPCにあるMicroPythonのファイルを、ボードにファイル転送せずにボード上で実行できるため、デバッグ時などに便利です。
$ cat test.py print('hello world') $ ampy run test.py hello world $
まとめ
ampyはESP8266でもESP32でも動作するMicroPython用のファイル転送ツールです。M5Stackでプログラム開発するときの便利ツールの一つです。