追記(2017/8/26) 注意 本記事の内容は古くなっていて、現在はバイナリーが配布されています。Firmware for ESP32 boards

先の投稿で触れたESP-WROOM-32が、この2月に入って日本国内でも流通するようになりました。一方、タイミング良くMicroPythonのESP32をターゲットに据えた移植がβ段階に入ったということで、早速テストしてみることにしました。

しかし、未だGithubのレポジトリーはmicropython-esp32として本体のレポジトリーから分離された状態で、バイナリー・ファイルも配布されていないため、テストするにはソースをコンパイルする環境を整えるところから始めなければなりません。レポジトリーを眺めて、それは少し難しいように感じましたが、実際にやってみたら思ったほどでもありません…。

まず、前準備としてGCCツール・チェーンとESP-IDFをホストPCにインストールします。ホスト機はMac/Windows/Linuxのいずれでも良く、それぞれの作業については各リンク先のガイドを参照してください。

ガイドのStep 3以降に示されているESP-IDFのテンプレートの読み込みや、事前のmake menuconfigの実行は、MicroPythonを動かす目的では必要ありません。


さて、つい数日前にAdafruitがネットでMicroPython ESP32 building and loading firmware with Tony D!という内容の番組を流しましたが、今でも視聴できるので全体像を把握するために最大画面・高精細度で、ぜひ一度通して観ておくことをお勧めします。

ただし、Mac上の仮想環境(Ubuntu)と実環境を何度か往復するなど、かなり冗長な部分があります。YouTubeにも転載されていて英文のキャプション付きで視聴できますが、CMが流れる際の音量に要注意です。


ここから、実際にMicroPythonをインストールする準備に入ります。

まず、ホスト機のコマンド・ターミナルを開き、予め用意しておいたディレクトリー(例: /esp)にmicropython-esp32レポジトリーのクローンをつくります。

cd ~/esp

git clone https://github.com/micropython/micropython-esp32.git

これから二度に分けてコンパイルをします。最初にレポジトリーのクローンのルートでMicroPythonクロス・コンパイラーの生成を行います。

cd micropython-esp32

make -C mpy-cross

cd esp32

ここでクローンのesp32ディレクトリーに移って最終的なファームウェアの生成を行いますが、その前にエディターを使ってmakefileという(全て小文字の)名称のファイルを、このディレクトリー内につくります。makefileは次のような内容で、赤い部分はESP-IDFのパスでユーザー毎に異なります。太い部分インストラクションの内容と違う箇所で、前述のTony Dの番組内容に沿ったものです。

ESPIDF = /home/genie/esp/esp-idf/
PORT = /dev/ttyUSB0
FLASH_MODE = dio
FLASH_SIZE = 16MB
#CROSS_COMPILE = xtensa-esp32-elf-

include Makefile

そして、ファームウェアのコンパイルをします。

make

ここからはターゲットになるボードに相当するものが必要になります。各手順については前述のTony Dの番組をご覧ください。ボタンを押すタイミングはコマンドのタイプをした後に行う方がスムーズに行くかも知れません。また、make eraseは失敗することがあって、その場合には再実行が必要です。

make erase

make deploy

以上でMicroPythonを起動する準備が整ったので、ボーレートを115200に設定したターミナル・プログラムで接続してESP32にリセットをかけます。FreeRTOS上の一タスクとしてMicroPythonが起動します。


MicroPythonが動くようになってからの様々なモジュールのロードに関しては、Adafruitが用意したMicroPython Basics: Loading Modulesという記事が有用です。

ほんの少しのスケッチの変更でもIDE上でリビルド~アップロードというサイクルから逃れられないArduinoに比べて、ターゲット上で即時テストが可能なMicroPythonは、今後ますます浸透して行くのではないかと感じます。

さて、上でご紹介した内容はESP-WROOM-32のファームウェアを書き換えるものであるため、自己責任において試してくださるようにお願いします。

参照: ESP-WROOM-02のファームウェアを書き換えた場合、技適はどうなるのか