PlatformIO IDE for VSCode でESP32のプログラム開発

Arduino IDE のエディタの機能の貧弱さで疲れて、Eclipseで開発しようとしてSloeberでESP32のプログラム開発を試したりしたが、現状では不具合が多くてプログラムの開発よりも不具合の調査で時間が取られる。

そこで、PlatformIO IDE for VSCode を使って見ることにした。OS環境はWindows10である。

以下はインストールと動作確認についての備忘録である。

Visual Studio Code (VSC)

ダウンロード

https://code.visualstudio.com/ から Visual Studio Code をダウンロードする。

VSCインストール

ダウンロードしたファイルを実行してインストールする。

使用許諾契約書に同意すると先に進む。

インストール先の指定をする。

プログラムグループの指定をする。

必要な追加タスクを選択する。

インストールの設定の確認をしたら「インストール」ボタンをクリックしてインストールを開始する。

インストールが進む。インストールが完了するのを待つ。

  

「完了」ボタンをクリックしてインストールを完了する。

最初にVisual Studio Codeを起動すると必要な初期化がなされる。

言語パックのインストール

日本語OSであると以下のように、言語パックをインストールするか尋ねられるようだ。

[2018年9月4日補足] Git がインストールされていない場合には、Gitのインストールについても尋ねられる。

ここでは言語パックをインストールする。

「インストールして再起動」をクリックするとインストールが進む。

インストールが終わると自動的に再起動され、次のような日本語表示になる。

PlatformIO IDE for VSCode

PlatformIOのインストール

PlatformIOのインストールのために左側の垂直バーの一番下のアイコン(Extensions)を選択する。

垂直バーの隣の拡張機能の「Marketplaceで拡張機能を検索する」のボックスにPlatformIOを入力する。

検索された候補のなかから「Platform IDE」を選択する。

「インストール」をクリックして Platform IDEのインストールを開始する。

インストールができたら、再読込を行ってアクティブにする。

アクティブにするとウィンドウの右下の出力部分に次のメッセージが表示され、必要なモジュールなどがインストールされるようになる。少し(相当?非常に?)時間がかかる。

Installing PlatformIO Core…

Please do not close this window and do not open other folders until this process is completed.

ウィンドウの左下にも「PlatformIO:Installing Platform IDE…」と表示される。

[2018年9月4日補足] ウィンドウの左下に「PlatformIO:Installing Platform IDE…」が表示されている間はウィンドウを閉じたり、VS Code を終了させない。気長に待つ必要がある場合が多いと思われる。

正常に終了すると「PlatformIO IDE installed successfully.」と表示される。

「PlatformIO IDE has been successfully installed! Please reload window」というメッセージも表示されるので「Reload Now」をクリックしてリロードする。

さらに、「拡張機能がディスク上で変更されています。ウィンドウを再読み込みしてください。」のメッセージが出るので、「ウィンドウの再読み込み」ボタンをクリックする。

次のようなウィンドウが表示されれば、PlatformIO のインストールができたことになる。

次のように PlatformIOのHome (PIO Home)もすぐに表示されるようになるはず。

これでPlatformIO が使えるようになったはず。

ESP32プロジェクト作成

ESP32のプロジェクトの作成を行う。

ESP32のプログラムの開発に必要なファイルはPlatformIOによって自動的にインストールが行われるようだ。

Arduinoプロジェクトの作成については次のWebにも説明がある。

PlatformIO for Visual Studio Code

プロジェクト作成と必要なファイルのインストール

「+New Project」をクリックしてプロジェクトを作成する。

プロジェクトウィザードが起動される。初回起動したときはボードの選択肢などが表示されるまでに少し時間がかかる。

プロジェクト名を指定する。ここでは「ESP32_blink」とした。

次にボードを指定する。ここでは、「DOIT ESP32 DEVKIT V1」を選択した。

フレームワークはArduinoとする。ESP-IDFも選択できる。

「Finish」ボタンを押すと必要なファイルのインストールが行われるようになる。ちょっと時間がかかる。

次のスクリーンショットの説明にあるように追加の設定を行う際に「platform.ini」を変更しなければならない場合がある。

正常に必要なファイルのインストールが終わり、プロジェクトの準備ができると以下のような表示になるはず。

少したつと次のPIO Homeが表示されるようになり、準備が整ったことがわかる。

この時点でのplatform.ini には、プロジェクト作成の際に選択した情報が入っているはず。

ESP32 Blinkプログラムの作成

いわゆるLチカのプログラムを作成し、実行することで動作確認をする。

プロジェクト作成した際に自動的に生成されているmain.cpp は次のようになっているはず。

プログラムを作成する。

ウィンドウのボトムにあるバーの「チェックマーク」をクリックすることでArduinoのVerifyが行われる。

ビルドが開始される。

ビルドが終了すると以下のようになるはず。

プログラムのアップロード

次に、ウィンドウのボトムのバーの「→」をクリックして、ボードへのアップロードを行う。

当然ながら、この時点ではDOIT ESP32 DEV KIT V1 ボードが接続されている必要がある。

ポートなどは自動的に探してくれるので、複数のボードをつないでいる場合などを除けば、特にポートを指定しなくても良いはず。Arduino IDEに比べると便利である。

正常にアップロードがされれば次のようになるはず。

ボードのLEDが点滅をしていれば動作確認ができたことになる。

シリアルモニターの使い方

上記で利用したLチカのプログラムにシリアルポートへの出力を加え、シリアルモニターで出力を確認するための手順などは以下の通り。

シリアル出力を行うプログラム

まず、プログラムにシリアルポート出力を加える。次のようにSuggestionが示されるので、Arduino IDEよりは楽にプログラミングできる。

次のような簡単なプログラムを実行することにする。

通信速度は11520bpsとする。

「✓」をクリックしてでビルドを開始する。

正常にビルドができれば次のようになる。

「→」をクリックしてアップロードを行う。

アップロードが完了すれば次のように表示され、ボードではLEDが点滅するようになっているはずである。

シリアルモニターの起動

シリアルモニターを起動するには、ボトムのバーのコンセントプラグのマークをクリックする。

以下のようにシリアルモニターが起動されるが、通信速度が合っていない場合には文字化けする。

上記ではプログラムでは通信速度を11520bpsに設定しているのに、シリアルモニターの通信速度が9600bpsになっているために文字化けしている。

シリアルモニターの通信速度設定

シリアルモニターの通信速度設定は、前述の platform.ini で行う。

次の行をplatform.ini に追加することで、通信速度を115200bpsにすることができる。

monitor_speed = 115200

シリアルモニターの設定については以下の資料に記述がある。

http://docs.platformio.org/en/latest/ide/vscode.html#serial-port-monitor

シリアルモニターの通信速度設定の確認

platform.ini を更新してからプログラムを再度アップロードし、実行すると以下のように期待していたシリアル出力が得られるはずである。

おわりに

インストールは概ね問題なく進んだ。必要なファイルが自動的に選択されるようになっており、今回の範囲では、Webなどで調べなければならないことはシリアルの速度設定が主なものであった。

Visual Studio Code では、C/C++のリファクタリング支援の機能があまりないようだ(TypeScriptとJavaScriptのリファクタリング支援機能は組み込みであるようだ)。リファクタリング支援機能についての拡張は今後に期待したい。

また、Visual Studio CodeやPlatform IO IDEの使い方についてよく分かっていないので、これから理解を深めるようにしたい。