ESP32ボードでmicropythonを使う場合の環境構築メモ。
Firmwareのインストール
作業はパソコン上で行うが、僕はmacOSなので以下説明は全てmacOSの場合。Windowsでもそれほど違いはない。
必要なツール
esptool.pyというPythonのツールが必要。ということはPython環境が必要。Python環境の構築については割愛するが、macの場合、標準で使えるはずなのでそれで事足りるはず。esptool.pyはArduino ESP32に付属しているのでArduino環境を構築している場合は、それを使うことができる。そうでない場合は、
https://github.com/espressif/esptool
からダウンロードするか、pipでもインストールできる。ターミナルで
sudo pip install esptool
当然pipがインストールされている必要がある(説明割愛)。pySerialというPythonのモジュールも必要。こちらもpipでインストールする。ターミナルで
sudo pip install pyserial
macの場合、pipコマンドは通常の場合はsudoが必要だと思う。
Firmwareのダウンロード
micropythonの本家サイトのDownloadページ(http://micropython.org/download)の『Firmware for ESP32 boards』からファームウェアをダウンロードしてくる。今はDaily Buildのみダウンロード可能となっている。つまり毎日更新されているけど毎日アップデートがあるというわけでもないので注意。
Firmwareのインストール
ターミナル上でコマンドを使ってインストール。 ターゲットのESP32ボードが初めてmicropythonをインストールする場合は、Flashの削除が必要。
esptool.py --port /dev/cu.SLAB_USBtoUART erase_flash
“cu.SLAB_USBtoUART”のところはUSBシリアルのポート名が入る。環境によって異なるはずだけど、CP2102が使われている場合が多いので、同じかも。
削除したらFirmwareを書き込む。
esptool.py --chip esp32 --port /dev/cu.SLAB_USBtoUART write_flash -z 0x1000 esp32-20170924-v1.9.2-272-g0d183d7f.bin
“cu.SLAB_USBtoUART”のところはUSBシリアルのポート名が入る。esp32-20170924-v1.9.2-272-g0d183d7f.bin”はダウンロードしてきたFirmwareのファイルへのパス。上記例はfirmwareのファイルをおいているフォルダでesptool.pyを実行させた場合。
インストールの確認
ESP32ボードにmicropythonがインストールされたはず。ターミナルとかでシリアル接続すればpythonのREPL環境が使える。screenコマンドとかでも良いけど個人的にはCoolTermがオススメ。 Baudrateは115200。 MicroPython v1.9.2-272-g0d183d7f on 2017-09-23; ESP32 module with ESP32 Type "help()" for more information. >>>
こんな感じで表示されるはず。表示されない場合は一度Reset(EN)を押してみよう。
OSError: [Errno 2] ENOENT
こんなエラーが表示されるかもしれない。これはボード内にmain.pyが無いために表示されるので、空のmain.pyでも置いておけば表示されなくなる。そのままでも問題ないけど。
ESP32用の正式なドキュメントが無いのだけど、ほぼESP8266と同じでドキュメントもそれを見ろとのこと。
http://docs.micropython.org/en/latest/esp8266/
を見てみよう。
REPL環境だけでもそれなりにいろいろできるけどampyのインストールしておくのをおすすめ。次章で説明する。
ampyのインストール
ESP32のmicropythonではまだWebREPLが使えない。そこでAdafruitが提供するampyを使う。ampyはESP32内のファイルシステムを操作するツール。Mac/PC等とファイルのやり取りもできる。
https://github.com/adafruit/ampy
からダウンロードできるがpipでインストールしておくほうが良いだろう。
sudo pip install adafruit-ampy
でインストールできる。(環境によっては頭のsudoはいらない。)これで、ターミナルからampyコマンドとして利用できるようになる。ESP32とはシリアルで通信する。
ampy -p /dev/cu.SLAB_USBtoUART put
こんな感じ。書きに簡易ヘルプ訳を記しておく。
——————————————————————————————————————— 使用法: ampy [オプション] コマンド [引数]… オプション: -p, --port PORT 接続しているボードのシリアルポートの名前。AMPY_PORT環境変数 を使って指定することもできる。[必須] -b, --baud BAUD シリアル通信のボーレート(Baud rate)を指定する(デフォルトは115200) AMPY_BAUD環境変数を使って指定することもできる。 -d, --delay DELAY RAW MODEに入る前にウェイトを入れる(秒)。デフォルトは0。AMPY_DELAY環境変数を使っても指定可。 --version バージョンを表示して終了。 --help ヘルプを表示して終了。 コマンド: get ボードからファイルを取り出す。 ls ボード上のディレクトリ内のコンテンツのリスト表示する。 mkdir ボード上にディレクトリを作成する。 put ファイルやフォルダとそのコンテンツをボード上にコピーする。 reset ボードのソフトリセット/リブートを実行する。 rm ボード上のファイルを削除する rmdir ボード上のディレクトリをそのコンテンツを削除する。 run スクリプトを実行し、その出力を表示する。 ———————————————————————————————————————
ディレクトリ内への移動はできないみたい。lsコマンドで中身を見ることはできる。コマンドごとの詳細なヘルプは、
ampy -p /dev/cu.SLAB_USBtoUART put —help
で表示される。それらしい命令にしてやって最後に–helpを付ければ良い。この場合、コマンドは実行されない。
環境によって実機との通信がうまくいかない場合があるようだ。実際に遭遇した。PyboardError(‘could not enter raw repl’)というエラーが表示される。そういう場合は -dオプションでウェイトを入れる。僕の環境だと”1″でOKだった。
そのうち実際に使ってみた編をアップしたい。
コメントを残す