ESP32をESP-IDFで開発する

ESP32をArudiono IDEではなくESP-IDFで開発する際の環境構築手順です。

OSはWindows10(64bit)です。

ESP-IDFとは

ESP-IDFはESP32の公式の開発環境です。

公式サイト:
https://docs.espressif.com/projects/esp-idf/en/stable/get-started/index.html
https://github.com/espressif/esp-idf

セットアップ

セットアップするためには2つのアプリケーションが必要です。

  1. Toolchain
  2. ESP-IDF

1. Toolchain

Toolchainとは、一般的にアプリケーションをつくるために必要なツールのことを指すようです。

ESP32の場合は、ESP32のアプリケーションをビルドするためのもので、MSYS2を指しています。
以下のページに記載されているリンクからMSYS2をダウンロードします。

https://docs.espressif.com/projects/esp-idf/en/stable/get-started/windows-setup.html

現時点では、https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20181001.zip でした。

ダウンロードしたファイルは、Cドライブ直下に解凍します。
例えば、msys2.exeのパスは以下のようになります。

1
C:\msys32\msys2.exe

次に、C:\msys32\msys2.exeを実行します。表示されたターミナルで以下のコマンド実行してください。

1
python --version

pythonのバージョンが表示されましたか?表示されない場合はpythonのパスが通っていません。
なので、.bashrcファイルなどを編集してpythonがあるフォルダにパスを通します。ファイルの末尾に以下の行を追加してください。

1
export PATH="$PATH:/mingw32/bin"

ファイルの編集方法ですが、vimが使える人はそのままターミナルで編集してください。
vimを使えない人はWindowsのメモ帳なので編集してください。ファイルは以下の場所にあります。

1
C:\msys32\home\<ユーザー名>\.bashrc

ファイルを編集したらMSYS2を再起動します。もう一度pythonのバージョンを確認してみましょう。
バージョンが表示されたらOKです。

1
2
# python --version
Python 2.7.15

2. ESP-IDF

ESP-IDFをgitで取得します。MSYS2を実行して、以下のコマンドを実行してください。

1
2
3
cd
mkdir ~/esp
git clone -b v3.3 --recursive https://github.com/espressif/esp-idf.git

続いて、IDF_PATHを設定します。.bashrcファイルなどに以下の行を追加してください。

1
export IDF_PATH="$HOME/esp/esp-idf"

ここでMSYS2を再起動します。以下のコマンドを実行してesp-idfディレクトリ内のファイルが表示されればOKです。

1
ls $IDF_PATH

以下、実行結果の例です。

1
2
3
4
# ls $IDF_PATH
add_path.sh CONTRIBUTING.rst Kconfig README.md
CMakeLists.txt docs LICENSE requirements.txt
components examples make tools

最後に必要なpythonパッケージを取得します。以下のコマンドを実行してください。

1
python -m pip install --user -r $IDF_PATH/requirements.txt

プロジェクトのビルド

ESP-IDFにはプロジェクトがいくつも含まれていますが、その中でも簡単ものとしてHelloWorldとBlinkがあります。
ここでは、HelloWorldをビルドしてみます。

MSYS2を実行して、以下のコマンドを実行してください。これは、examplesディレクトリにあるプロジェクトをespディレクトリにコピーしています。

1
2
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .

コピーしてきたディレクトリに移動します。

1
cd hello_world

続いて、以下のコマンドで設定画面を表示します。

1
make menuconfig

今回はシリアルポートの名前を設定します。各自の環境に合わせてください。

Serial flasher config > Default serial port の順に選択し、シリアルポートを入力してください。
使用しているのがCOM1なら、そのままCOM1と入力すればOKです。入力したらSAVEしてEXITします。

設定内容はsdkconfigファイルに保存されます。設定内容が保存されているか確認してみましょう。
以下のコマンドを入力してください。

1
cat sdkconfig | grep CONFIG_ESPTOOLPY_PORT

以下はコマンドの実行例です。入力したシリアルポートが設定されていたらOKです。

1
CONFIG_ESPTOOLPY_PORT="COM1"

では、ビルドして書き込んでみます。以下のコマンドを実行してください。

1
make flash

書き込みが終わったら、シリアルポートの通信内容を以下のコマンドで確認できます。

1
make monitor

他のアプリケーションで確認する場合はボーレートを合わせてください。デフォルトだと115200bpsです。

以下のようなログが表示されます。

1
2
3
4
5
6
7
8
9
Hello world!
This is ESP32 chip with 2 CPU cores, WiFi/BT/BLE, silicon revision 1, 4MB external flash
Restarting in 10 seconds...
Restarting in 9 seconds...
Restarting in 8 seconds...
Restarting in 7 seconds...
Restarting in 6 seconds...
Restarting in 5 seconds...
Restarting in 4 seconds...

なお、make flash実行時に以下のようなエラーが表示される場合はシリアルポートを認識していません。
ESP32が別のポートで認識されているか、そもそもESP32を認識していない可能性があります。Windowsのデバイス画面などでシリアルポートを確認してください。
また、別のアプリケーションが該当のポートを使っているのかもしれません。

1
serial.serialutil.SerialException: could not open port 'COM1'