ESP-IDF ( ESP32 開発環境 ) の使い方

記事最終更新日:2017/11/30

【ご注意!】
toolchain-20171123 は上手く動作しません!! toolchain-20180110 以降をお使いください。 (2018/01/14)
Wi-Fi WPA2 脆弱性対策は最新版をダウンロードしてインストールしてください。
Espressif Systems社のページでも紹介されていますので参考にしてください。
http://espressif.com/en/media_overview/news/espressif-releases-patches-wifi-vulnerabilities-cert-vu228519
(2017/10/19)

Espressif Systems 社推奨のESP32 ( ESP-WROOM-32 ) の開発環境、ESP-IDF の使い方を説明します。

Arduino IDE でも ESP32 ( ESP-WROOM-32 ) は開発できますが、全ての機能を使うことがまだできません。
ESP-IDF を使うともっといろいろな機能が使えます。

ESP-IDF の使い方はいろいろな方々が記事にされていますが、Arduino IDE しか使ったことが無かった私にとっては、イマイチよく分からないことが多かったので、私なりに備忘録も兼ねてまとめてみました。
これは要するに、Linux環境を使うようなものです。
結構ハマりますので、覚悟しておいてください。
また、日々アップデートされているので、数か月後には使い方が変わっている可能性があります
その場合はお知らせいただけると助かります。

本家、ESPRESSIF社の GitHub の以下のページに英語版使用方法がありますので、合わせてご覧ください。

Espressif IoT Development Framework

ここでの場合は Espressif社の ESP32-DevKitC ( ESP-WROOM-32 )開発ボードを使います。

※2018/01/30時点で、Amazon.co.jp では Espressif system純正の ESP32-DevKitC は販売されていません。秋月電子通商さんか、マルツパーツさんで購入してください。

もちろん、スイッチサイエンスさんの ESPr® Developer 32 でも同じように使えます。

以下、Windows10 環境の場合で説明します。

スポンサーリンク

1.MSYS2 ツールチェーンをインストール

まず、ESP32用に構成されたMSYS2 をインストールします。
MSYS2とは、Windows で gcc コンパイラなどのUNIX コマンドが使えるソフトです。
ESP32用 のC言語ソースを gcc コンパイラでコンパイルするために、MSYS2 を使います。

まず、Espressif社の ESP-IDF Programming Guide の以下のページを開いて下さい。

Standard Setup of Toolchain for Windows

そのページの中の下図の様な Toolchain Setup のところに、ZIPファイルリンクがありますので、クリックしてダウンロードしてください。
2017/11/30現在では 20171123 というバージョンですが、最新版に更新されていたらそれを使って下さい。

ESP-IDF71

ダウンロードしたら、解凍してください。
サイズは 1.21 GB くらいあります。かなり大きいです。
解答するのに10分くらい時間がかかりますので覚悟してください。

解答したら、下図のようにその中の msys32 フォルダをドライブ直下にコピーすると良いです。
なぜかというと、コマンドラインでフォルダのパスを指定するので、Cドライブ直下か、またはその他のドライブ直下の方が、長いパス名を入力しなくて済む為に使いやすいと思います。
私は下図の様にシステムドライブとは別の Dドライブ直下に置きました。
因みに、コピーするだけでも多量のファイルがある為、5分以上の長い時間がかかりますので覚悟しておいてください。

ESP-IDF_02

ESP-IDF_03

次に、msys32 フォルダを開きます。
下図の様に、64bitパソコンならば、mingw64.exe をクリックして起動し、32bitパソコンならば、mingw32.exe をクリックして起動します。
実際に起動するファイルは mingw32.exe というファイルを使います。
試したところ、64bitパソコンでも mingw32.exe を使用してください。
mingw64.exe ではうまく動作しない場合があります。

ESP-IDF73

すると、下図の様な MSYS2 ウィンドウが開きます。
ここにコマンドを入力していきます。

ESP-IDF74

すると、msys32フォルダの中に home フォルダがありますが、その中にご自分のユーザー名フォルダが作成されているのが分かると思います。
このフォルダの中に ESP-IDF ファイルやプロジェクトを作成していきます。
このフォルダ以外で作成するとうまく動作しませんのでご注意ください。

ESP-IDF75

これで、MSYS2 のインストールは完了です。

2.ESP-IDF をGET する

ESP-IDF は GitHub で公開されていて、C言語ソースファイルやライブラリ、環境設定ファイル、Makeコマンド設定ファイルなどがパッケージになっているものです。
本家の以下のページも合わせて参照してください。

http://esp-idf.readthedocs.io/en/latest/get-started/index.html#get-started-get-esp-idf

まず、ESP-IDF を設置するフォルダはどこでもいいのですが、
msys32/home/ご自分のユーザー フォルダの中に設置します。

下図の様に、msys32/home/ユーザーフォルダの中に esp というフォルダを作成します。

ESP-IDF76

次に、msys32.exe または msys64.exe を起動して、以下のようなコマンドを入力します。
ここで注意!!
フォルダ指定はバックスラッシュ( ¥)ではなく、スラッシュを入力してください。

User-Name のところはご自分のユーザー名フォルダに書き換えてください。

cd /d/msys32/home/User-Name/esp

cd は change directory (カレントディレクトリ変更)です。
/d/ はd ドライブということです。
これを入力して、 Enter を押すと下図の様になります。

因みに、コマンドをコピペしたい場合、Windows の場合は右クリックするとコピペできます。
Ctrl+C などの一般的なショートカットは異なりますのでご注意ください。

ESP-IDF77

ここで、私の場合は Toolchain を最新版(20170918)にしたときに、CDコマンドが効かず、espフォルダに移動できないという症状が出ました。
その場合、一旦 MSYS2 ウィンドウを閉じて、パソコンを再起動してみてください。

次に下図の様なコマンドを入力します。

git clone --recursive https://github.com/espressif/esp-idf.git

git の説明はここでは省きますが、このコマンド群を使うと、GitHub にある最新のプログラムをダウンロードできます。
特に、

--recursive

というオプションコマンドを入れないとサブモジュールが最新版になりませんので気を付けてください。
では、それを入力すると、こうなり、GitHubからダウンロードが始まります。

ESP-IDF78

ダウンロードが終了するとこうなります。

ESP-IDF79

ToolChain 20180110版では、ダウンロードできない場合があります。
その場合、諦めずにもう一度同じコマンドを入力してみてください。
私の場合はそれでダウンロードできました。
(2018/1/14)

そうしたら、実際にフォルダを見てみましょう。
下図の様な感じでGitHub上の ESP-IDF と同じものができているはずです。

ESP-IDF_14

要するに、GitHub から ZIP ファイルをダウンロードして解凍しても同じことができるわけです。
GitHub 上のファイルのクローンをパソコン上に作ったということです。

ちなみに、Arduino core for ESP32 のようにtools フォルダに get.exe はありません。

3.MSYS2 の環境設定で ESP-IDF のパスを通すファイルを作成

次に、MSYS2 に ESP-IDF のソースファイルを参照できるようにパスを通しておく環境設定ファイルを作成します。

まず、メモ帳などのテキストエディタで以下のようなコマンドを入力します。
User-Nameのところはご自分のユーザー名フォルダに書き換えてください。

export IDF_PATH="D:/msys32/home/User-Name/esp/esp-idf"
export PATH="$PATH:/d/msys32/usr/bin:/d/msys32/mingw32/bin:/d/msys32/opt/xtensa-esp32-elf/bin"

これを以下のフォルダパスに名前をつけて保存しておきます。

d:\msys32\etc\profile.d

(ここで注意していただきたいのは、profile.d というのはフォルダです
ファイル名ではありませんのでご注意!!)

ファイル名は、ここでは、My_IDF_PATH.sh としておきます。
ファイル拡張子は .sh にしてください。
文字コードは UTF-8 にして保存します。

ESP-IDF80

profile.d フォルダ内には、こんな感じで保存されます。

ESP-IDF81

そうしたら、必ず MSYS2 を一旦閉じて再起動してください。

再起動したら、設定した PATH が通っているか確認します。
下図の様に

printenv IDF_PATH

と入力してエンターしてください。
そして、次に

printenv PATH

と入力してください。

toolchain-20171123 版では、下図のように export command not found というメッセージが出ます。
その場合、toolchain-20180110 版にインストールし直してください。
(2018/01/14)

ESP-IDF82

このようにパスが通っていたらOKです。
警告は無視して良いようです。

4.プロジェクトの作成

では、いよいよプロジェクトを作成します。
空のプロジェクトを作成してもいいのですが、一番簡単で確実な方法は、ESP-IDF の examples からコピーして書き換えることです。

下図の様に、
msys32/home/User-Name/esp/esp-idf/examples/get-started
フォルダへ移動し、まずは LED チカチカするためのサンプルプロジェクトがある、blink フォルダを msys32/home/User-Name フォルダへコピーします。

ESP-IDF83

Blink フォルダの中のmain フォルダを開くと、blink.c というC言語ソースファイルがあるので、テキストエディタで必要によってプログラムを書き換えればOKです。
要するにこれが Arduino IDE で言うスケッチのようなものです。

5.ESP32-DevKitC を接続する

ESP32-DevKitC などの ESP-WROOM-32 開発ボードを下図の様に LED と接続します。
LED は一般的な5V以下の物でOKです。
GPIO には最大12mA しか流せませんので、必ず電流制限抵抗を入れてください。

ESP-IDF_50

写真ではこんな感じになります。

ESP-IDF_51

mgo-tec電子工作 関連コンテンツ ( 広告含む )

スポンサーリンク
スポンサーリンク

「ESP-IDF ( ESP32 開発環境 ) の使い方」への2件のフィードバック

  1. 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

    1. juchangさん

      お返事おそくなりすみません。
      検証するのに時間がかかってしまいました。

      しばらく IDF を使っていなかったので分かりませんでした。
      ツールチェーンを最新版にしたら make が全くできませんでした。

      いろいろ試したところ、Espressif Systems の ESP-IDF設定ページにあるように、homeフォルダの中にあるユーザーフォルダ内にespフォルダやプロジェクトフォルダを入れないとうまく動作しないことがわかりました。

      それと、64bitパソコンでも、mingw32.exe を使うことです。
      これは今分かったことです。

      ということで、記事も書き換えましたので、ご参照いただき、再度試してみて下さい。
      これでも動作しない場合はまたご連絡いただけると助かります。

コメントを残す

メールアドレスが公開されることはありません。

*画像の文字を入力してください。(スパム防止の為)