ESP-WROOM-32 を Arduino として使っている際には、あまり意識していなかったのですが、 ESP-IDF 環境でプログラムを作成するとなるとちょっとつらくなってきたので環境を整えてみることにしました。
Visual Studio Code を用いて、コードの編集からコンパイル、転送までを集約したいと思います。
準備
ESP32 の開発環境として ESP-IDF を用います。以前の環境構築の話をベースとしているので、やや一般とズレたところがあるかもしれません。
Visual Studio Code は、執筆時点のバージョンでは 1.28.2 となっていました。この状態で、 “C/C++ for Visual Studio Code” という Extension をインストールしています。
続いてプロジェクトを始めるために、 適当なフォルダでテンプレートをクローンしておきます。
git clone https://github.com/espressif/esp-idf-template.git helloworld
このプロジェクトの場所で、 Visual Studio Code を開いて、以降の設定をしていくことにします。
設定
シェルを MinGW32 のものにするために、設定から settings.json ファイルを次のように編集します。エディタグローバルに効いて欲しくなかったため、自分はワークスペースへの設定としました。
{
"terminal.integrated.shell.windows" : "D:/ESP32Env/msys32/usr/bin/bash.exe",
"terminal.integrated.shellArgs.windows": [
"--login",
],
"terminal.integrated.env.windows": {
"CHERE_INVOKING" : "1",
"MSYSTEM" : "MINGW32",
},
}
メニューから、”ターミナル / タスクの構成” と選択して、 Others を選択します。すると、 tasks.json ファイルを編集するようにエディタ内で開かれると思います。そこで次のように各タスクを定義していきます。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "build app",
"group": {
"kind": "build",
"isDefault": true
},
"command": "make",
"type": "shell",
"args": [
"app"
],
"presentation": {
"reveal": "always"
},
"problemMatcher": {
"owner": "cpp",
"fileLocation": "absolute",
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"label": "clean app",
"command": "make",
"type": "shell",
"args": [
"app-clean"
],
"presentation": {
"reveal": "always"
},
"problemMatcher": []
},
{
"label": "flash app",
"command": "make",
"type": "shell",
"args": [
"app-flash"
],
"presentation": {
"reveal": "always"
},
},
{
"label": "monitor",
"command": "make",
"type": "process",
"windows": {
"command": "D:/ESP32Env/msys32/mingw32.exe",
"args": [
"make",
"monitor"
]
},
"presentation": {
"reveal": "always"
},
"problemMatcher": []
},
{
"label": "menuconfig",
"type": "process",
"windows": {
"command": "D:/ESP32Env/msys32/mingw32.exe",
"args": [
"make",
"menuconfig"
]
},
"presentation": {
"reveal": "always"
},
"problemMatcher": []
}
]
}
この設定では、 “Ctrl+Shift+B” で make app が実行されます。他のタスクは、コマンドパレットを出して、Tasks: Run Task を選択すると、上記で定義したコマンドを実行します。これにより、バイナリの転送やモニターの表示といったことが Visual Studio Code を起点として開始することが出来るようになります。
まとめ
ちょっと前の Visual Studio Code 用の設定は見かけたのですが、現行バージョンとはうまくあっていない状態だったので記事にしてみました。
Visual Studio Code で ESP32 の開発環境をという点では、 PlatformIO のものもあったのですが、追加でツールセットを入れるのも既に作った環境に対して勿体なかったので見送りました。最初から PlatformIO のものだけ入れてもいいと思います。調べてみたところ、この記事で作った環境よりもよく出来ている(ようにみえる)気がします。
ちなみに Visual Studio Code を使う前までは、テキストボックスでコードを書いて、 MingGW32 のウィンドウ(ターミナル)に切り替えて、コンパイル&転送を行っていました。上記の設定にたどり着くまでは色々とありましたが、開発のしやすさは体感としてはよくなったと思ってます。

