概要
M5Stack Core2 for AWSが販売されましたが、開発にはESP-IDF4.2が必要です。4.1までは非常にかんたんに環境を作れるのですが、現時点で4.2はちょっと面倒なのでセットアップ手順を書いておきたいと思います。
ESP-IDFとは?
ESP32の標準開発環境です。Arduino環境で開発する場合にも、内部ではこのESP-IDFを利用して動いています。
ESP-IDFのバージョン
バージョン | 特徴 |
3.2系 | ESP32 Arduino 1.0.4(現在の最新)で利用されている |
3.3系 | 1.0.5で利用される予定のバージョン |
4.0系 | ビルドシステムが新しくなった |
4.1系 | 現在の推奨安定バージョン。ESP32-S2のサポート追加 |
4.2系 | 最近リリースされた最新バージョン |
Arduinoで使う上では、非常に古い3.2系になってしまいます。このバージョンはすでにサポートされていないので、現在3.3系にバージョンアップを行う準備中のようです。とはいえ3.3系もかなり古い環境になります。Arduino環境が4系になるのはもう少し時間かかるのかな?
4系は、4.0でmake関係がたしか入れ替わっています。現在は4.1が推奨バージョンですが、安定する前に4.2がリリースされてしまいました。ESP32-S2向けにいろいろな改修が入っているのですが、日本ではESP32-S2は利用できないのであまり情報はありません。
どのバージョンを使うべきか?
Arduino環境の人は、環境に依存するので選択肢自体がありません。ESP32 Arduinoの最新版のバージョンを使ってください。ただしオーディオ系は3.3以降から使える関数が多いので、早く3.3に上がってほしいです。
素のESP-IDFを使いたい人は4.1が現状の推奨バージョンでした。Linux環境であれば4.2もいいかもしれません。
M5Stack Core2 for AWSを開発する場合には4.2一択です。そしてAlexaの開発をする場合には4.2にさらにパッチを当てて最新の機能を使う必要があるみたいです。
Windows環境でのインストール手順
Python3.9のインストール
上記から最新版のPythonをダウンロードします。コマンドラインの場合には3.7でも動くのですがVSCodeで動かす場合には3.9である必要があるみたいでした。

最後に「Add Python 3.9 to PATH」を選択してください。
esp-idf-tools-setupツールダウンロード
上記のURLからセットアップツールをダウンロードします。このツールができてから非常にかんたんにセットアップができるようになりました。ちなみにVSCodeの拡張機能からセットアップを行おうとすると失敗するので、こちらのツールを使ったほうが無難です。

実行するとライセンスの確認がでるのでacceptして次に進みます。

Pythonが入っていない場合には、自動的にインストールしてくれます。VSCodeの場合3.7では動きませんでしたので、上記のように3.7のインストールが表示された場合には3.9が正しくインストールされていません。おそらくPATHの追加ができていないと思いますので、再度インストールしてみてください。

次はGitの確認です。こちらも最新は2.29.2なのでちょっと古いですね。自分で入れる場合にはすべてデフォルトの設定でいれれば動きました。今回は自動インストールにしてみます。

ESP-IDFをダウンロードするか、過去にインストールしたフォルダを選ぶかを聞かれます。ダウンロードを選択します。

現状一番上が4.1ですね。これが推奨バージョンだと思われます。今回は4.2なのでrelease/V4.2を選択する必要があります。一番上に4.2が選択できるようになるとインストールももう少しかんたんになると思います。
また、デフォルトはデスクトップに保存します。非常に邪魔なので他の場所に移動する必要があります。

推奨は、ユーザーフォルダ直下になります。esp-idfの名前はVSCodeで利用する場合には変更しないことを推奨します。

今度はツールを保存する場所を聞かれます。ツールとESP-IDFが別管理なのがちょっと面倒ですね。こちらはユーザーディレクトリ直下がデフォルトになっていました。こちらもVSCodeで利用する場合にはデフォルトから名前と場所を変更しないことを推奨します。

インストールオプションになります。そのままNextですすめます。

インストールの確認がでますので、Nextですすめます。上記ではPython3.7もインストールしていますが、VSCodeで動かないので消してから3.9を入れ直しています。

ダウンロードしつつインストールが進みます。

続いてGitも自動インストールされます。最初にWindowsの許可ダイアログがでると思いますので許可します。
このあとに結構な時間を待ちます。

はい、終わりました。失敗とでていますが、終わりです、、、失敗したのを手で修復する必要があります。
コマンドプロンプトを開く
- ESP-IDF Command Prompt (cmd.exe)
- コマンドプロンプト
おそらくデスクトップにESP-IDF Command Promptがあると思いますが、普通のコマンドプロンプトでも構いません。普通のコマンドプロンプトの場合にはユーザーディレクトリ直下で起動するので、esp-idfフォルダに移動する必要があります。
cd esp-idf
上記で移動してから、インストールの続きを実行させます。
C:\Users\tanaka\esp-idf>install.bat
上記な感じで実行できると思います。
WARNING: You are using pip version 20.3.1; however, version 20.3.3 is available.
You should consider upgrading via the 'C:\Users\tanaka\.espressif\python_env\idf4.2_py3.9_env\Scripts\python.exe -m pip install --upgrade pip' command.
すると、上記のようなエラーがでると思います。pipのバージョンが古いようです。
C:\Users\tanaka\.espressif\python_env\idf4.2_py3.9_env\Scripts\python.exe -m pip install --upgrade pip
私の環境だと上記のコマンドですが、環境によって違うのでエラーメッセージからコピーして実行します。
Requirement already satisfied: pip in c:\users\tanaka\.espressif\python_env\idf4.2_py3.9_env\lib\site-packages (20.3.1)
Collecting pip
Downloading pip-20.3.3-py2.py3-none-any.whl (1.5 MB)
|████████████████████████████████| 1.5 MB 6.4 MB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 20.3.1
Uninstalling pip-20.3.1:
Successfully uninstalled pip-20.3.1
Successfully installed pip-20.3.3
C:\Users\tanaka\esp-idf>
はい、成功しました。
C:\Users\tanaka\esp-idf>install.bat
再度実行します。
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
Python3.9を利用していると、ビルド済みのパッケージがないものがあるようで上記のようなエラーがでます。自動インストールの3.7であればこのエラーはでません。ただしVSCodeでは3.7でもビルドしないとツールがインストールできません、、、
上記からインストーラーをダウンロードしてきて実行します。

上記画面で一番左上にあるビルドツールを選択してからインストールします。
C:\Users\tanaka\esp-idf>install.bat
再度実行します。
Successfully installed esp-windows-curses-0.1
All done! You can now run:
export.bat
この出力が最後にでればインストールは成功です。コマンドラインで実行する場合にはexport.batを実行してからプロジェクトファイルのビルドができるようになります。
VSCode上での利用
VSCodeのインストール
普通にインストールします。

選択肢は最後のPATHに追加するかぐらいです。デフォルトのままでもいいと思います。
日本語化

「File」→「Preferences」→「Extensions」から拡張機能を開きます。

japなどで検索をして、日本語化の拡張機能を追加します。右下にある「Restart Now」を押すと反映されます。
Espressif IDF拡張

さらに拡張機能からesp-idfなどで検索して「Espressif IDF」拡張を入れます。

左メニューにESP-IDFのマークが増えるので、選択すると上記の設定画面になります。Pythonの場所を聞かれますので、おそらく自動検索の結果で問題ありません。

ESP-IDFはすでにインストール済みですので、Findにしてから自分でPathを指定します。

ツールのダウンロードをするかを聞かれます。ここは再度ダウンロードを選びます。すでにダウンロード済みですので、ファイルのチェックのみで比較的早く終わると思います。とはいえ、一部コマンドラインのツールとは違うものを入れているようで、ビルドしないと動きません。
事前にESP-IDFのインストールをしていない場合、このダウンロードがかなり時間かかります。そして手作業で修復したところがエラーになるのでうまく動かない状態になってしまいます。Python3.7の場合pipのバージョンがネックになりビルド成功しませんでした。

全部完了すると、上に「Go to next step」のボタンが表示されます。

次のページでツールが動くかを確認します。

一番下にあるボタンを押すとチェックをします。

上記のようにチェックがされます。

一番下に「Go to next Step」ボタンがあれば成功です。

上記のボタンを押すと上のメニューに選択肢がでてESP-IDFを選ぶと、スケッチ例がでます。

最初は「get-started」の「hello_world」から実行してみるのがよいと思います。「Create project using example hello_world」ボタンを押すと、プロジェクトの保存場所を聞かれます。ドキュメント直下に「ESP-IDF」などのフォルダを作成して、そこを選択すると中に「hello_world」フォルダが作成されているはずです。

hello_world_main.cを開いてみました。左下にESP-IDFの拡張機能のボタンが増えています。左からプロジェクトの選択、シリアルポート選択、menuconfig実行、ビルド、アップロード、モニター、ビルドしてアップロードしてモニタのボタンです。

menuconfigがきれいな画面で表示されました。

ちなみにこちらがコマンドラインから呼び出したmenuconfigです。
C:\Users\tanaka>cd esp-idf
C:\Users\tanaka\esp-idf>export.bat
C:\Users\tanaka\esp-idf>cd ..\
Documents\ESP-IDF\hello_world
C:\Users\tanaka\Documents\ESP-IDF\hello_world>idf.py menuconfig
上記のようなコマンドでも呼び出せます。現状のところVSCodeのESP-IDF拡張機能は4.2で使うのには面倒です。4.1の場合には事前準備無しで、VSCodeのESP-IDF拡張機能をいれて、選択していけばすんなり4.1が動きます。
エディタといてVSCodeを使うのはおすすめですが、拡張機能は無理にいれなくてもよいかもしれません。
Commands:
all Aliases: build. Build the project.
app Build only the app.
app-flash Flash the app only.
bootloader Build only bootloader.
bootloader-flash Flash bootloader only.
clean Delete build output files from the build directory.
confserver Run JSON configuration server.
efuse_common_table Generate C-source for IDF's eFuse fields.
efuse_custom_table Generate C-source for user's eFuse fields.
encrypted-app-flash Flash the encrypted app only.
encrypted-flash Flash the encrypted project.
erase_flash Erase entire flash chip.
erase_otadata Erase otadata partition.
flash Flash the project.
fullclean Delete the entire build directory contents.
gdb Run the GDB.
gdbgui GDB UI in default browser.
gdbtui GDB TUI mode.
menuconfig Run "menuconfig" project configuration tool.
monitor Display serial output.
openocd Run openocd from current path
partition_table Build only partition table.
partition_table-flash Flash partition table only.
post_debug Utility target to read the output of async debug action and stop them.
python-clean Delete generated Python byte code from the IDF directory
read_otadata Read otadata partition.
reconfigure Re-run CMake.
set-target Set the chip target to build.
show_efuse_table Print eFuse table.
size Print basic size information about the app.
size-components Print per-component size information.
size-files Print per-source-file size information.
idf.pyのオプションは上記がありますが、cleanなどは拡張機能から呼び出しができません。細かい処理をする場合にはコマンドラインで実行でもいいのかもしれません。

ターミナルのタスクの実行を選択することで、Cleanは実行できるようでした。
まとめ
なかなか環境構築に手間取りました。VSCodeの拡張機能を使わないのであれば、そこそこ単純化できるのですが拡張機能の依存がちょっと面倒でした。おそらくもう少し経てばesp-idf-tools-setupツールで4.2がデフォルト選択になると思います。そうなればもう少しかんたんに利用することができると思います。
コメント
いつもお世話になっております。
掲載されている拡張機能「Espressif IDF」の画面は、バージョン1.0.2のものでしょうか?
去年のバージョンなので、もう少し古いものだと思います
画面見るとプレビューとついているので、正式バージョン前ですね
時期的に考えるとv0.5.1だと思います
ご回答ありがとうございます。
正式バージョン前のものだったのですね。
「Configure ESP-IDF」の設定画面が違ってたので戸惑いましたが
なんとかビルドできる所まで出来ました。