WindowsでESP-IDF4.2環境を作る

概要

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がデフォルト選択になると思います。そうなればもう少しかんたんに利用することができると思います。

コメント

  1. tama より:

    いつもお世話になっております。

    掲載されている拡張機能「Espressif IDF」の画面は、バージョン1.0.2のものでしょうか?

    • たなかまさゆき より:

      去年のバージョンなので、もう少し古いものだと思います
      画面見るとプレビューとついているので、正式バージョン前ですね
      時期的に考えるとv0.5.1だと思います

  2. tama より:

    ご回答ありがとうございます。

    正式バージョン前のものだったのですね。
    「Configure ESP-IDF」の設定画面が違ってたので戸惑いましたが
    なんとかビルドできる所まで出来ました。