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でプログラム開発するときの便利ツールの一つです。