ESP32の開発環境ESP-IDFをインストールを少し丁寧に説明

開発環境のトラブルはだいたい起きるのでどなたかの役に立てば。
2022.06.08

こんにちはCX事業本部IoT事業部のさかじです。
ESP32を出しているESPRESSIF社が提供している公式開発環境ESP-IDFの開発環境をインストールしたのですが、いくつか手順通りいかない箇所がありましたのでまとめました。概ね公式ドキュメントと近い内容になりますが補完するように作成しました。

環境

前提条件

  • ESP-IDF : V4.4.1

環境構築

Windowsのインストーラ置き場から ESP-IDF V4.4.1 Offline インストーラをダウンロードします。
ダウンロードしたesp-idf-tools-setup-offline-4.4.1.exeを管理者として実行します。

システムチェックで以下のエラーが出たのでPowerShellを管理者権限で起動して、指示通りコマンドを実行します。このとき上記のウィンドウは閉じないでください。

> Start-Process -FilePath reg 'ADD HKLM\SYSTEM\CurrentControlSet\Control\FileSystem /v LongPathsEnabled /t REG_DWORD /d 1 /f' -Verb runAs

次にApply Fixes クリックしてエラーが出ないことを確認します。エラーが出ていなければ Nextをクリックします。

インストール先はデフォルトのフォルダを使用してセットアップします。
公式セットアップドキュメントにインストールディレクトリ名に注意することとあるためデフォルトを使用します。

Limitations: - The installation path of ESP-IDF and ESP-IDF Tools must not be longer than 90 characters. Too long installation paths might result in a failed build. - The installation path of Python or ESP-IDF must not contain white spaces or parentheses. - The installation path of Python or ESP-IDF should not contain special characters (non-ASCII) unless the operating system is configured with “Unicode UTF-8” support.

System Administrator can enable the support via Control Panel - Change date, time, or number formats - Administrative tab - Change system locale - check the option “Beta: Use Unicode UTF-8 for worldwide language support” - Ok and reboot the computer.

今回は Full installationを選択してインストールを進めます。必要に応じて設定してください。

ドライバをインストールするかを聞かれますが、「インストールする」として進めます。

インストールが完了しましたら以下のチェックが入っていることを確認してFinishをクリックします。

PowerShellとコマンドプロンプトがエラー無く起動しましたらインストール完了です。

サンプルプログラムを動かしてみる

任意のフォルダへサンプルコードのダウンロードもしくは git clone します https://github.com/espressif/esp-idf/tree/v4.4.1

私はgit cloneしました

$ git clone git@github.com:espressif/esp-idf.git

M5Stackを接続してシリアルポートを確認 - スタートボタンを右クリック - 「デバイスマネージャー」をクリック

今回はCOM3と認識しました。
認識しない場合にはUSB-シリアルのドライバをインストールしてください

M5Stack Core2ページ

サンプルコードのコンパイル

インストールされたショートカットのコマンドプロンプトかPowerShellを起動します。 今回はPowerShellを起動 ドキュメントでは ~/espへファイル類をコピーするとありますが、ダウンロードした先で作業をします。

PS C:...> cd ダウンロードフォルダ\esp-idf\examples\get-started\hello_world>
PS C:...> idf.py set-target esp32

しばらく設定が行われて以下の表示がされます

-- Configuring done
-- Generating done
-- Build files have been written to: C:ダウンロードフォルダ/esp-idf/examples/get-started/hello_world/build
PS C:...> idf.py menuconfig

メニューが起動します

必要に応じて設定を変更することも可能ですが今回は変更せずデフォルト設定で進めます。

qを押してメニューを終了させます。

サンプルプログラムをビルドします。

PS C:...> idf.py build

問題がなければ以下のように表示されます

Project build complete. To flash, run this command:
C:\Espressif\python_env\idf4.4_py3.8_env\Scripts\python.exe ..\..\..\..\..\..\..\..\Espressif\frameworks\esp-idf-v4.4.1\components\esptool_py\esptool\esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32  write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x1000 build\bootloader\bootloader.bin 0x8000 build\partition_table\partition-table.bin 0x10000 build\hello_world.bin
or run 'idf.py -p (PORT) flash'
PS C:...>

M5Stackへ書き込みます。

PS C:...> idf.py -p COM3 flash

問題がなければ以下のように表示されます

Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.1 seconds (effective 233.5 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
Done
PS C:...>

動作確認

モニターを起動します。

PS C:...> idf.py -p COM3 monitor

起動すると以下のような表示が延々に流れます。

モニターを終了させるにはCtrl+]を入力して終了します。

もちろんTeraTermでも確認できます。

設定はこちらで確認できました。

115200bps, 8bit, パリティ無し

改行コードCRに設定。

トラブル

シリアル通信「あるある」なのですが、文字化けが発生してしまいました。boudrateなど確認して調整してみたのですが改善せず、改行コードをCR+LFにしたところ復旧しました。その後CRに戻しても問題なくデータを受信できていたので、制御文字がなにか悪さをしていたのだと思います。
似たような現象が起きた場合には、再起動してみる、設定を変えてみる、バッファをクリアしてみるなど行ってみると改善するかもしれません。

参考サイト

最後に

これでFreeRTOSが使えるようになりました。これまでRTOSを使う機会があまりなかったので、潤沢なリソースを活用してアプリケーションを作っていければと思います。