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

記事最終更新日:2017/7/12

スポンサーリンク

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

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

ESP-IDF の使い方はいろいろな方々が記事にされていますが、Arduino IDE しか使ったことが無かった私にとっては、イマイチよく分からないことが多かったので、私なりに備忘録も兼ねてまとめてみました。

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

Espressif IoT Development Framework

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

もちろん、スイッチサイエンスさんの 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/7/11現在では 20170330 というバージョンですが、最新版に更新されていたらそれを使って下さい。

ESP-IDF_01

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

解答したら、下図のようにその中の msys32 フォルダをドライブ直下にコピーすると良いです。
なぜかというと、コマンドラインでフォルダのパスを指定するので、Cドライブ直下か、またはその他のドライブ直下の方が、長いパス名を入力しなくて済む為に使いやすいと思います。
私は下図の様にシステムドライブとは別の Dドライブ直下に置きました。

ESP-IDF_02

ESP-IDF_03

次に、msys32 フォルダを開きます。
下図の様に、64bitパソコンならば、mingw64.exe をクリックして起動し、32bitパソコンならば、mingw32.exe をクリックして起動します。

ESP-IDF_04

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

これで、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-IDF_10

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

cd /d/msys32/home/esp

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

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

ESP-IDF_11

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

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

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

--recursive

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

ESP-IDF_12

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

ESP-IDF_13

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

ESP-IDF_14

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

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

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

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

まず、メモ帳などのテキストエディタで以下のようなコマンドを入力します。
このパスはそれぞれご自分のインストールしたフォルダに合わせて変えてください。

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

ESP-IDF_20

これを以下の場所に名前をつけて保存しておきます。

d:\msys32\etc\profile.d

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

ESP-IDF_21

そうしたら、必ず MSYS2 ( mingw64.exe または mingw32.exe )を一旦閉じて再起動してください。

4.プロジェクトの作成

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

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

ESP-IDF_22

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

6.コンパイルオプションメニュー設定

コンパイルする前に、コンパイルオプションを設定します。

まず、ESP32 開発ボード ( ESP-DevKitC , ESPr Developer 32 など )をパソコンとUSB接続します。
次にMSYS2 ( mingw64.exe または mingw32.exe )を再起動し、cd コマンドを以下のように入力して、blink フォルダに移動します。

cd /d/msys32/home/blink

ESP-IDF_23

次に

make menuconfig

と入力します。

ESP-IDF_24

Enter を押すと、make コマンドが走り始め、しばらく経つとコンパイル設定メニューが表示されます。

ESP-IDF_25

キーボードの矢印カーソルキー[↓] を押して、下図の様に Serial Flasher config を選びます。

ESP-IDF_25-1

すると、下図の様な画面になりますので、Default serial port をセレクトしてEnterします。

ESP-IDF_25-2

すると、下図の様な画面になります。

ESP-IDF_25-3

ここで、Windows10 画面のタスクバーにあるWindowロゴを右クリックして、タスクマネージャーを起動します。

ESP-IDF_25-4

デバイスマネージャーを開いたら下図の様にポート(COM と LPT) をクリックすると、ESP32-DevKitC の USB COMポート番号が分かります。
ここでは3番です。

ESP-IDF_25-5

そうしたら、MSYS2 コマンドライン画面に戻り、下図の様に番号を書き換えてOKをEnterします。
Windows の場合、COM3 という形に書き換えます。
Mac の場合 /dev/cu.3 という形式らしいです。
その後、OKしてください。

ESP-IDF_25-6

そうしたら、[Esc]キーを2回連続で押すことを、何回か繰り返すと、元の画面に戻ります。

元の画面に戻ったら、キーボードの矢印カーソルキーの[↓]を押して、例えば下図のように、Example Configuration へカーソルを移動させます。
ESP-IDF_26

そこで、下の部分が <Select>にカーソル(青くなっている)ことを確認して、Enter を押します。
(矢印キーの [←] や [→] を押すとカーソルが移動します)

そうすると下図の様に Example Configuration メニューの中に入れます。

ESP-IDF_27

もう一度 Enter を押すと下図の様な画面になります。

ESP-IDF_28

ここで、LED を接続するところを GPIO #5 から #23 へ変更してみます。
ESP-IDF_29

そうしたら Enter を押します。

キーボードのEsc キーを2回連続で押すと、一つ前の画面に映ります。

そして、最初の画面まで行ったら、次に ESP32 の CPU クロック周波数を設定してみます。
LED 点滅程度ではデフォルトのままでもいいのですが、ここではあえて設定してみます。

下図の様に Component config を選択します。

ESP-IDF_30

下図の画面でもう一度 Enter します。

ESP-IDF_31

そして、下図の画面でもう一度 Enter します。

ESP-IDF_32

すると、下図の様な画面になるので、カーソルキーの[↓] を押して、240MHz の最速にして Enter キーを押すと決定になります。

ESP-IDF_33

その後、下図の画面になり、240MHz にセレクトされていることが確認できます。
ESP-IDF_34

次に、矢印カーソルキー[→] を押して、<Save>をセレクトして設定を保存します。
GPIO 設定と共に、今まで設定したものが保存されます。

ESP-IDF_35

すると、下図の画面になるので、OKをEnter します。

ESP-IDF_36

次に下図のように保存100% になった旨の画面が出るので Exit します。

ESP-IDF_37

ひたすら<Exit>していくか、[Esc] キーを2回連続で押していくと、menuconfig 画面が閉じ、設定ファイルがmake されてMSYS2コマンドウィンドウに戻ります。

ESP-IDF_38

これでコンパイルオプション設定完了です。

7.コンパイル書き込み

では、いよいよ、ESP32-DevKitC や ESPr Developer 32 などの開発ボードのフラッシュにコンパイル書き込みしていきます。

下図の様に

make flash

というコマンドを入力してEnter します。
(ここで注意!! flush と間違えないように!!私は何度もやらかしました)

ESP-IDF_39

するとコンパイルが始まり、コンパイル終了後、自動的に ESP32 へ書き込みします。
今回の場合、転送速度は 115200bps です。
思ったより時間がかかります。

書込み成功したらこんな感じになります。

ESP-IDF_40

実際にLED がチカチカ点滅していればOKです。

ESP-IDF_52

以上、ESP-IDF の使い方でした。
Arduino IDE に比べてかなり面倒ですね。
ネット上に様々な方々が記事にされていますが、イマイチ分からないところがあったので、今回は自分で記事にしてみました。

その他、参考にさせていただいたサイトは以下の通りです。
情報ありがとうございました。
m(_ _)m

rukihenaさん
ESP32(ESP-WROOM-32)でLチカ (WindowsでESP-IDF使用)

T-YOSHさん
WROOM-32 セットアップ

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

スポンサーリンク

Amazon.co.jp 当ブログのおすすめ







コメントを残す

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

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