[備忘録]VSCode-PlatformIO IDEを使って、ESP32の開発環境を構築およびLチカ

記事が古くなったので、↓に更新しました。

https://zenn.dev/kotaproj/articles/esp32_vscode_pio

内容はほとんど変わっていないため、↓の手順でも問題ありません。


# はじめに

ESP32で電子工作をする上で、Arduino IDEを使っていました。
最近、PlatformIO IDEを使うようになり、非常に使いやすいと感じました。
今回、環境構築の方法を紹介させていただきます。


# 紹介する内容

- PlatformIO IDEのインストール
- PlatformIO IDEのLチカベースに操作説明


# 確認した環境

- ホストPC
	- windows10 64bit Home
	- VSCode - 1.41
- ターゲットボード
	- ESP32-WROOM-32 開発ボード


# 手順

## VSCode(Visual STudio Code)をインストール

[Download Visual Studio Code](https://code.visualstudio.com/download)
の公式より、インストーラをダウンロードし、インストールします。

※手元の環境では、Windows - User Installerを選択しました。


## VSCodeの拡張機能よりPlatformIO IDEをインストール

VSCodeを起動し、拡張機能よりPlatformIO IDEをインストールします。<br>
拡張機能のところで、"PlatformIO"と入力すれば、上位に表示されると思います。

![vsc_100.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/66c4916d-0e55-5aff-4c3f-275b0a647689.png)

## Lチカ用のプロジェクトを作成する

インストールが完了すると、PIO Homeが表示されます。

![vsc_101.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/82b77192-bc36-e1cd-ff4f-4b134a71b04f.png)

※表示されない場合、コマンドパレット([Ctrl] + [Shift] + P)を表示し、
  "PlatformIO: HOME"を選択すると表示されます。

"New Project"を選択します。

![vsc_102.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/f08251bf-5286-43a6-4039-a74c8462d353.png)

必要情報を入力します。

- Name
	- プロジェクトの名前を指定(任意の名前)
	- BlinkLed
- Board
	- ターゲットのボードを指定
	- Espressif ESP32 Dev Modeule
- Framework
	- フレームワークを指定
	- Arduino
- Location
	- 保存場所
	- チェックを外すと、直接パスを指定できる

"Finish"を選択する

![vsc_103_104_and.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/7142ac7f-374c-d581-24c4-0a9bb95074a0.png)


プロジェクトのひな形が作成されます。


![vsc_105a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/ecdb7836-532b-08f6-7cfd-b88cad7f54d2.png)


## プロジェクトの通信設定を変更する

"platformio.ini"が設定ファイルとなります。<br>
シリアル通信のボーレートを変更するには、
```
monitor_speed = 115200
```
を追記し、保存します。

![vsc_106.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/c6d90213-e1d7-368b-54b7-e68407ca78a7.png)


## Lチカのコードを記載する

"./src/main.cpp"にsetup(), loop()関数が定義されています。<br>
Arduino IDE - inoファイルと異なり、

```
#include <Arduino.h>
```
が必要となります。

![vsc_110_maincpp.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/c7b495a1-8472-c60a-11a3-a8e6ecbad250.png)


今回のサンプルコードと回路図は以下となります。

```main.cpp
#include <Arduino.h>

#define LED_PIN   15

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  delay(100);
  Serial.printf("%s - run\n",__func__);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED_PIN, HIGH);
  Serial.printf("%s - LED_PIN - HIGH\n",__func__);
  delay(1000);
  digitalWrite(LED_PIN, LOW);
  Serial.printf("%s - LED_PIN - LOW\n",__func__);
  delay(1000);
}


```

![SampleLed_ブレッドボード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/7a5234c7-6d53-8191-3e0b-4b7886ee11f6.png)



## ビルドする

画面下の①をクリックすると、ビルドが始まります。<br>
②に結果が表示されます。
![vsc_111_maincpp_build.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/3b4d847a-15e6-1370-e101-251308234a1f.png)

※コマンドパレット([Ctrl] + [Shift] + P)にて、"PlatformIo: Build"でも実行できます。


## ターゲットにアップロードする

ホストPCとターゲットをmicroUSBケーブルで接続します。<br>
画面下の①をクリックすると、アップロードが開始されます。<br>
②に結果が表示されます。

![vsc_112_maincpp_upload.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/5fb62c93-4cee-64f8-c6a3-7a62132e6073.png)
※コマンドパレット([Ctrl] + [Shift] + P)にて、"PlatformIo: Upload"でも実行できます。

問題がなければ、書き込み後Lチカがはじまっています。


## シリアル通信を確認する

画面下の①をクリックすると、シリアル通信が表示されます。<br>
②に結果が表示されます。

![vsc_113_maincpp_serialmonitor.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/ac9aa537-90fa-848a-e07e-4e2e1f18b6fe.png)
※コマンドパレット([Ctrl] + [Shift] + P)にて、"PlatformIo: Serial Monitor"でも実行できます。


以上が基本的な手順となります。




# 補足

作業中に疑問やポイントを記載します。

## COMポートの認識は？

"PIO Home" - "Devices"より確認することができます。

![hosoku_devices.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/d28641ea-4a73-237f-8d61-5ac4381813b5.png)


## Arduino - IDEのライブラリマネージャーは？

"PIO Home" - "Libraries"より管理することができます。

![hosoku_libraries.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/e7d90a70-191e-c8e3-a257-38ed56a9ba6b.png)


## "PIO Home"が毎回起動してしまう

赤丸の部分のチェックを外し解決
![hosoku_startup.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/559938/88f53edb-8a3a-363b-0918-03aa16266cd7.png)

## 必要なライブラリのチェックは？

ビルドするときに、必要に応じて取得しているようです。

# さいごに

今回紹介した内容は、一部の内容です。<br>
もう少しつっこんだ使い方を別途記載したいと思っています。

# 参考

[PlatformIo公式Docs](https://docs.platformio.org/en/latest/what-is-platformio.html)