ESP32の開発環境ESP-IDFをインストールを少し丁寧に説明
こんにちはCX事業本部IoT事業部のさかじです。
ESP32を出しているESPRESSIF社が提供している公式開発環境ESP-IDFの開発環境をインストールしたのですが、いくつか手順通りいかない箇所がありましたのでまとめました。概ね公式ドキュメントと近い内容になりますが補完するように作成しました。
環境
- Windows10
- M5Stack Core2 ESP32 IoT Development Kit
- Tera Term V4.106
前提条件
- 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-シリアルのドライバをインストールしてください
サンプルコードのコンパイル
インストールされたショートカットのコマンドプロンプトか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を使う機会があまりなかったので、潤沢なリソースを活用してアプリケーションを作っていければと思います。