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だった。

そのうち実際に使ってみた編をアップしたい。

 

Share