ESP-IDF ( ESP32 開発環境 ) の使い方
ESP-IDFは従来、MSYS2環境内で動作させていましたが、現在はWindowsコマンドプロンプト内で動作し、非常に軽快で設定も簡単になりました。 前半は、2020/8月時点のver4.0.1の使い方を説明します。 後半は、従来のMSYS2環境の使い方を説明しています。 ※最新のver4.2以上の場合は、たなかまさゆきさんの以下のサイトを参照してみて下さい。 https://lang-ship.com/blog/work/windows-esp-idf-42/
Arduino IDEでも ESP32 ( ESP-WROOM-32 ) は開発できますが、全ての機能を使うことができません。 ESP-IDF を使うともっといろいろな機能が使えます。 簡単にサクッとESP32を開発したい方はArduino IDE。 もっとコアにガッツリ使いたい方はESP-IDFを使えば良いのではないかと思います。 (Arduino IDEでの使い方はこちらの記事をご覧ください。)
ESP-IDF の使い方はいろいろな方々が記事にされていますが、Arduino IDEをよく使う私にとっては、イマイチよく分からないことが多かったので、私なりに備忘録も兼ねてまとめてみました。 これは要するに、Linux環境を使うようなものです。 結構ハマりますので、覚悟しておいてください。 また、 日々アップデートされているので、数か月後には使い方が変わっている可能性があります 。 その場合はお知らせいただけると助かります。
ここでの場合は Espressif社の ESP32-DevKitC ( ESP-WROOM-32 )開発ボードを使います。
もちろん、スイッチサイエンスさんの ESPr® Developer 32 でも同じように使えます。 ただ、ピンヘッダは別途購入して、ハンダ付けする必要があります。
ESPr Developer 32 については、過去にレビューした記事がありますので、ご参照ください。
- ESP-IDF をインストールする
- ESP-IDF Tools をインストールする
- サンプルプログラムをコピーする
- ESP32開発ボードとLEDを接続する
- サンプルプログラムを修正する
- 環境設定をする
- ビルド(コンパイル)して、データをESP32のフラッシュへ書き込む
- ビルド(コンパイル)だけする。(フラッシュに書き込まない)
- 1.MSYS2 ツールチェーンをインストール
- 2.ESP-IDF をGET する
- 3.MSYS2 の環境設定で ESP-IDF のパスを通すファイルを作成
- 4.プロジェクトの作成
- 5.ESP32-DevKitC を接続する
- 6.コンパイルオプションメニュー設定
- 7.コンパイル書き込み
ESP-IDF v4.0.1 stable版の使い方
2020年8月9日時点では、ESP-IDF の安定(stable)バージョンは 4.0.1 です。 これは、旧来のMSYS2を使う方法とは異なり、Windowsのコマンドプロンプト内で実行できて、とても便利になりました。 そのインストール方法、および使い方を説明します。
ESP-IDF をインストールするまず、ESP32のメーカーESPRESSIF systems公式のESP-IDF Programming Guideサイトに行き、以下のページを開きます。
そこの、ESP-IDF Tools Installer項目のところに、ESP-IDF Toolsインストーラーファイルのダウンロードリンクがあります。 下図の様なところをクリックすると、実行ファイルがダウンロードされます。
ダウンロードされるファイルは、2020/08/09現在では、 esp-idf-tools-setup-2.3.exe という実行形式ファイルです。
ESP-IDF Tools をインストールする次に、先ほどダウンロードした ESP-IDF Tools をインストールします。 ダウンロードフォルダを開き、下図の様に保存されたファイルを右クリックして、 「管理者として実行」 をクリックします。
すると、インストーラーが起動し、下図の様な画面になるので、規約内容をしっかり読み、同意すれば I accept the agreement. を選択して、「Next」をクリックして次に進みます。
すると、下図の様に Python をインストールするか訪ねてきます。 Pythonはプログラムの環境設定をしたり、ビルドしたり、ESP32にバイナリを転送するために必要なアプリです。 既にインストールされていなければチェックを入れて、次に進みます。
すると、下図の様な画面が出て来て、Git をインストールするか聞いてきます。 ESP-IDFのソースはGitHubにあり、そこから最新版に更新したりする為にGitが必要です。 Gitの最新版がインストールされていなければ、下図の様に選択します。 私の場合は、ver 2.13.2 がインストールされていましたが、最新版の2.21.0の方が欲しかったので、それを選択して、次に進みました。
すると、下図の様な画面が出てきます。 初めてESP-IDFをインストールする場合は、 Download ESP-IDF を選択して、次に進みます。
すると、下図の様な画面が出てくるので、2020/08/09時点で最新の安定版である、 v4.0.1(release version) を選択します。 そして、その下のダウンロードするフォルダは、私の場合はDドライブ直下にesp-idfというフォルダを作成し、そこを選択して次に進みました。 これは任意で良いと思います。
すると、下図の様な画面が出て来て、ESP-IDFツール群をインストールするフォルダを聞いてきます。 私の場合は、Dドライブ直下としました。 これも任意で良いと思います。 .espressif というフォルダ名が自動的に作成されるはずです。
①ESP-IDF Tools ショートカットをスタートメニューに作る場合 ②ESP-IDF Tools ショートカットをディスクトップに作る場合 ③ESP-IDF Tools 実行ファイルをウィルスチェックソフトWindows Defenderから除外する場合
そこで、ESP-IDF Command Prompt をダブルクリックして起動させます。 すると、下図の様な画面になれば、インストール成功です。
サンプルプログラムをコピーするでは、次にサンプルプログラムをコピーします。 先ほど作ったesp-idfフォルダを開きます。 私の場合はDドライブ直下に作ったので、パスは D:¥esp-idf となります。
D:\esp-idf\examples\get-startedその中に、blinkというLEDをチカチカさせるプログラム(Lチカ)が入っているので、そのフォルダごと D:\esp-idf フォルダにコピーします。 下図の様な感じです。
ESP32開発ボードとLEDを接続するESP32-DevKitC や、ESPr Developer 32 とLEDをブレッドボード上で接続します。 ブレッドボードは、サンハヤトのSAD-101がお勧めです。
LED は通常の5V程度の砲弾型LEDで良いと思います。 ただ、ESP32のGPIOには最大12mA程度の電流しか流せないので、必ず電流制限抵抗を入れてください。 LEDの電流に合わせて、1kΩ~10kΩ程度になるかと思います。
ここでは、下図の様にGPIO #23 に接続します。
サンプルプログラムを修正する D:\esp-idf\blink\mainすると、下図の様になるので、blink.cというファイルをテキストエディタで開きます。 テキストエディタはできるだけメモ帳でない方が良いです。 例えばサクラエディタとか。。。
そうしたら、18行目を以下のように変更して上書き保存します。 要するに、LEDをGPIO #23に接続したので、その番号に変更するということです。
/* Blink Example This example code is in the Public Domain (or CC0 licensed, at your option.) Unless required by applicable law or agreed to in writing, this software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ #include #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "driver/gpio.h" #include "sdkconfig.h" /* Can use project configuration menu (idf.py menuconfig) to choose the GPIO to blink, or you can edit the following line and set a number here. */ #define BLINK_GPIO 23 void app_main() < /* Configure the IOMUX register for pad BLINK_GPIO (some pads are muxed to GPIO on reset already, but some default to other functions and need to be switched to GPIO. Consult the Technical Reference for a list of pads and their default functions.) */ gpio_pad_select_gpio(BLINK_GPIO); /* Set the GPIO as a push/pull output */ gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT); while(1) < /* Blink off (output low) */ printf("Turning off the LED\n"); gpio_set_level(BLINK_GPIO, 0); vTaskDelay(100 / portTICK_PERIOD_MS); /* Blink on (output high) */ printf("Turning on the LED\n"); gpio_set_level(BLINK_GPIO, 1); vTaskDelay(100 / portTICK_PERIOD_MS); >> 環境設定をする次に、ESP-IDFのblinkプログラムの環境設定をします。 ここからは、Espressif Systemsの公式サイトドキュメントの以下のページを合わせて参照してください。
cd blinkとコマンドを入力して Enterキーを押します。 cd はchange directory コマンドです。
idf.py menuconfigパソコンの矢印キーの「↓」を押して、下図の様に Serial flasher config を選択し、Enterキーを押します。
Flash SPI mode — QIO Flash SPI speed — 80 MHz Flash size — 4 MB
ビルド(コンパイル)して、データをESP32のフラッシュへ書き込むすると、下図の様な画面になるので、 ポート(COM と LPT) をクリックすると、そのボードのCOM番号が分かります。
次に、ESP-IDF画面に戻り、以下のflashコマンドを入力します。 flashコマンドはビルド(コンパイル)を実行して、フラッシュへ書き込みます。 私の場合はcom4だったので、以下のようにしました。
idf.py -p com4 flashすると、ESP32のフラッシュへバイナリデータを転送します。 デフォルト設定では460800bpsで転送するようです。 完了すると、下図の様になります。
ビルド(コンパイル)だけする。(フラッシュに書き込まない) idf.py build以上、Windows10 コマンドプロンプト環境でESP-IDFを使う方法でした。 次のページでは、従来のMSYS2環境で使うESP-IDFを紹介します。
mgo-tecをフォローするコメント
juchang より:mgo-tec 様 ESP-IDFの使い方にチャレンジしてみました。 「書込み成功したらこんな感じになります。」の所まで何とかたどり着いたのですが、Lチカ点滅には至りませんでした。 最後の行に下記のメッセージが出ていますが素人の私にはまったく解読できません。何かコメントをいただけると幸いです。 make[1]: *** [/home/name/my-esp-idf/esp-idf/make/prpject.mk-387 /c/msys32/home/blink/build/bootloader/bootloader.elf] エラー 1 make *** [/home/name/my.esp-idf/esp-idf/components/bootloader/Makefile.projbuild:40: /c/msys32/home/blink/build/bootloader/bootloader.bin] エラー 2
juchangさん お返事おそくなりすみません。 検証するのに時間がかかってしまいました。 しばらく IDF を使っていなかったので分かりませんでした。 ツールチェーンを最新版にしたら make が全くできませんでした。 いろいろ試したところ、Espressif Systems の ESP-IDF設定ページにあるように、homeフォルダの中にあるユーザーフォルダ内にespフォルダやプロジェクトフォルダを入れないとうまく動作しないことがわかりました。 それと、64bitパソコンでも、mingw32.exe を使うことです。 これは今分かったことです。 ということで、記事も書き換えましたので、ご参照いただき、再度試してみて下さい。 これでも動作しない場合はまたご連絡いただけると助かります。
初めまして。 高級言語は全くの素人です。 ESP32を使いたくこのページに来ました。 一応、解説通り行ったつもりですが、make menuconfigのところでエラーで止まります。 いろいろ書いてありますが、具体的にどうしていいのか分からず、お聴きしたく書いています。 よろしければアドバイスお願いいたします。 以下はエラーメッセージです。 The following Python requirements are not satisfied: click>=5.0 pyelftools>=0.22 The recommended way to install a packages is via “pacman”. Please run “pacman -Ss ” for searching the package database and if found then “pacman -S mingw-w64-i686-python2-” for installing it. NOTE: You may need to run “pacman -Syu” if your package database is older and run twice if the previous run updated “pacman” itself. Please read https://github.com/msys2/msys2/wiki/Using-packages for further information about using “pacman” Alternatively, you can run “C:/msys32/mingw32/bin/python.exe -m pip install –user -r C:/msys32/home/so/esp/esp-idf/requirements.txt” for resolving the issue. make: *** ‘menuconfig’ に必要なターゲット ‘check_python_dependencies’ を make するルールがありません. 中止. よろしくお願いいたします。
ギター好きさん 記事をご覧いただきありがとうございます。 今、多忙で検証する時間が無いので、今しばらくお待ちください。ギター好きさん お待たせしました。 インストールし直してみたのですが、当方ではそのエラーが出ないため、正直よくわかりません。 ただ、エラーメッセージを見る限り、Pythonモジュールのインストールが不十分だったようです。 ESP-IDFの英語マニュアルサイトを参照してみてください。 https://docs.espressif.com/projects/esp-idf/en/stable/get-started/index.html#get-started-get-esp-idf そこに、必要なPythonパッケージのインストール方法が書いてあります。 それに沿って、以下のコマンドをMSYS2ウィンドウに入力してみて下さい。
python -m pip install --user -r $IDF_PATH/requirements.txtこれで、Pythonパッケージがインストールされると思いますので、再度 make menuconfig を試してみて下さい。 因みに、このコマンドを入力しなくても私の環境では問題ありませんでした。 もしかしたら、セキュリティソフトがダウンロードを阻害している可能性がありますので、ダウンロードの際はセキュリティソフトやファイアウォール設定を解除するなりしてみるということも考えられますね。
7年ぶりの電子工作再開? より:ひさしぶりでしたが、うまく点滅まで行けました。 ひとつ気になったのは、フォルダーのパスのコピーは手入力よりは、シフト押しながらの右クリックが間違いないな、と実感(笑)。 /でなくても¥で通りました。 そろそろ終わりのwindows7での工作でした。 ありがとうございました。
ブログご覧いただき、コメントありがとうございます! そうですね。手入力はやってられないし、間違えますね。 コピペが一番です。 ESP-IDFは私は難しくて面倒なので、今は殆どArduino core for the ESP32でプログラミングしています。 ライブラリも豊富で、お勧めですよ! (^^)
こんにちは Windows10 64bitの場合は esp-idf-tools-setup-2.2を インストールすると簡単に進めると 公式ガイドのページにあるのですが、 何故かインストールに”code1″で失敗します。 はまってます! やはり、古いインストール手順にしないと 行けないのか? この段階で暗礁に載っていても仕方ないですね。 どうしたモノか:)
とんかつさん ご無沙汰しております。 私も試してみましたが、 esp-idf-tools-setup-2.2.exe を実行すると、ESP-IDFの展開で失敗しました。 原因はまだ分かりません。 とりあえず、MINGW32 で動かすことが良いのかも知れませんね。
こんにちは こちらの記事に従って、慎重に2ページ目の 6.コンパイルオプションメニュー設定の入り口まで 記事画像を見ながら進めて来ました。 コマンドプロンプト(ming32.exe)上で cd /d/msys32/home/User-Name/blink でディレクトリを User-Name@xxxxx MINGW32 /d/msys32/home/user-name/blink となり、ここまでは、OKなのですが make menuconfig で $ make menuconfig Makefile:8: D:/msys32/home/User-Name/esp/esp-idf/make/project.mk: No such file or directory make: *** ターゲット ‘D:/msys32/home/User-Name/esp/esp-idf/make/project.mk’ を make するルールがありません. 中止. となります ディレクトリが無いかファイルが無い」というのですが・・ この13行目の D:/msys32/home/User-Name/esp/esp-idf/make/project. の User-Name は”実際のユーザー名’になっていなくても良いのでしょうか? [cd ]では、実際のユーザー名で表示されているのですが。 「メークするルールがありません」と言うのも!?ですね。 さて、流れの5番まではOKだと思うのですが。 どこまで戻った方が、良いでしょうか? なおESP-IDF はVer.4.0 を使いました。 コマンドプロンプトは [ msys2.exe ] というのも有りましたので この6に来て、使っていましたが、結果は同じでした。 コメント頂けると嬉しいです。
失礼しました!! 上手く行きました!! Lチカ成功。 実際、凄く時間が掛かりました。 (メイク/ビルドに) 上手く行かなかった、原因は 自分でも?と思っていた正に、その点でした。 pathの記述が間違っていました。 コピペのままでした、 ユーザー名を自分の名前に替えるのを 忘れていました!! 大変 失礼致しました。 とても参考になりました。 これで、先に進めます。 感謝!! いや~~~スッキリしました。 ありがとうございます。
あ、よかったですね。 Windowsだと、勝手にユーザー名フォルダを作られてしまうので、面倒ですよね。 特に私は何もしてませんが、とりあえず良かったです。 juchang より:mgo-tec 様 MicroPythonを使った事例がネット上にたくさんあり試したいのですが、M5Stack用MicroPythonの設定がうまくいきません。 ESP-IDFを使ってMicroPythonの設定ができると知り、本記事のESP-IDF v4.0.1 stable版の使い方で試しているのですが、MicroPython_BUILD/BUILD.shのmenuconfigでエラーとなってしまいます。( MicroPython_BUILD の呼び出しまではできています。) お忙しいところ恐縮ですがアドバイスをいただけると有難いです。
juchangさん いつもブログをご覧いただき、ありがとうございます。 せっかくご質問いただいたのに、残念ながら私はMicroPythonを全く使ったことがありません。 ESP-IDFの設定も全く分かりません。 ネットでザッと調べたところ、おそらく拝見されていると思いますが、以下の方のブログ記事が参考になるかも知れません。 https://blog.hrendoh.com/setup-micropython-esp32-port/ MycroPythonをESP-IDFで使う時は特定のバージョンのみサポートしているらしいので、4.0.1では動かないかもしれませんね。 その場合は、MSYS2で動かすのかも知れません。 単なる想像でしかありませんが、私が言えることはここまでです。 お役に立てず、申し訳ございません。 m(_ _)m
コメントをどうぞ コメントをキャンセル お知らせ- しばらく停滞中で~す。再開未定 (-_-)
- Google ColabのAPI変更により、こちらの記事の最後のサンプルコードを修正しました。(2022/09/18)
- こちらの記事もYahoo天気から気象庁天気予報に変更したものを追記しました。 (2022/09/02)
- こちらの記事をYahoo天気から気象庁天気予報に変更したものを追記しました。 (2022/08/27)
- 諸事情で記事更新停滞しています。1年以上経過している記事が殆どなので、うまく動作しない場合があります。ご了承ください。
- Blynk2.0で双方向通信できない場合はこちらの記事のコメント欄をご覧ください(2022/06/24)
- 諸事情でしばらく記事更新できません。ほとんどの記事が1年以上経過している為、動作しないものもあることをご了承ください。
- Yahoo RSS天気予報が配信終了したことに伴い、気象庁から天気予報を取得する方法にライブラリを更新しました。こちらの記事を参照してください(2022/04/15)
- Yahoo! RSS天気予報の配信が2022/03/31で終了してしまいました。よって、過去のプログラムは動きません。(2022/04/06)
- 工学社さん技術情報誌I/O(アイオー)2018/04号にもこちらの記事を転載して頂きました。有難うございます!
- こちらの記事を工学社さんの技術情報誌I/O(アイオー)に転載していただけました。ありがとうございます!
- Make:Japanさんにこちらの記事が紹介されました。ありがとうございます。
- Arduino core for the ESP32 のインストール方法
- ESP-IDF の使い方( ESP32 )
- ESP32 トラブルシューティング
- ESP32 チップ情報確認方法
- Arduino-ESP32 SPIFFS アップローダープラグインのインストール方法
- ESP32データシート独自和訳
- ESP32 Technical Reference Manual和訳
- ESP8266 チップ情報確認方法
- ESP8266, ESP-WROOM-02 トラブルシューティング
- ESPr Developer ESP-WROOM-02開発ボードの使い方
- Arduino – ESP8266 インストール方法
- ZIP形式ライブラリのインストール方法
- Androidスマホ画像リサイズImageShrink使い方
- iPhone 写真リサイズ バッチリサイズの使い方
- micro SD カードのフォーマット方法
- LC 共振回路計算ツール
- RC フィルタ回路計算ツール
当ブログでは広告表示しております。 このブログの維持運営のためには必要不可欠です。どうかご容赦下さい。 m(_ _)m 掲載中の広告サービスは、Google Adsenseという広告配信サービスとAmazon.co.jpアソシエイトというアフィリエイト宣伝プログラムの参加者です。