Arduino IDEでESP32/ESP8266を使う時のメモ

# Arduino IDEのインストール

ここからダウンロードしてインストール
https://www.arduino.cc/en/software

# ボードマニフェストのインストール
## ボードマネージャーを追加
### 1. Arduino IDEの「環境設定」で「追加のボードマネージャーのURL」のところ、入力欄の後のIconをクリック
![環境設定_と_sketch_dec17b___Arduino_1_8_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/8dad94e7-f5b8-2b71-2e99-d7ab05ed2da2.png)


### 2. 開いたウィンドウに下記のURLを一行ずつ入力

ESP8266 : `http://arduino.esp8266.com/stable/package_esp8266com_index.json`
ESP32 : `https://dl.espressif.com/dl/package_esp32_index.json`

![追加のボードマネージャのURL_と_環境設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/afda9af1-ba7e-ff0c-f2e4-96e19337b31b.png)

「OK」を押すと、こんな入力欄がこんな風になる
![環境設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/a4d72d5d-7093-e15c-2692-b8ff2c072d4d.png)

環境設定の「OK」を押して終了

### 3. ボードマネージャーでマニフェストをインストール
「ツール」 => 「ボード: 〇〇」 => 「ボードマネージャー」を開きます

![全画面_2021_12_17_21_49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/ebcc0009-5d44-2471-a0be-639eeb5a5a83.png)

「ボードマネージャー」で `esp` を検索すると、ESP8266も、ESP32も出るはずです。そこにフォーカスすると、「インストール」のボタンが出てクリックします。
![ボードマネージャ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/b6acfa3e-f044-d5e0-07dd-764d99217a69.png)


インストール成功すれば「ツール」 => 「ボード: 〇〇」のメニューがこんな風になります
![全画面_2021_12_17_22_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/f386c01b-c532-33a0-6f8b-39ffc4aa6ea1.png)


マニフェストインストール前:
![全画面_2021_12_17_21_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/dd03be3e-5460-d928-35b1-686131ef5118.png)

## [任意] Pythonライブラリーの追加
macOS Big Sur以上のOSで使用する時、`esptool.py`がエラーを吐く現象が見られますので、念のため**システムのPython**に `pyserial` をインストールします。

```sh
$ /usr/local/bin/pip3 install pyserial
```

# ボードと接続
## 共通
「ツール」 => 「シリアルポート: 〇〇」 を開き、`/dev/cu.usbserial-〇〇` の方を選びます
![全画面_2021_12_17_22_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/c52a0013-212f-d5ac-90f9-4cfccfb88e45.png)


シリアルポートについては、下記のコマンドでも確認できます。

```sh
$ ls -l /dev/tty.*
crw-rw-rw-  1 root  wheel    9,   0 12  7 20:38 /dev/tty.Bluetooth-Incoming-Port
crw-rw-rw-  1 root  wheel    9,   2 12 17 19:54 /dev/tty.usbserial-DN01IPIC
```

Windowsだと「COM1」のようなものが出ると思いますが、確認していません

## ESP8266
### ボード設定
`ESP-WROOM-02`など汎用開発ボードの場合は「ツール」 => 「ボード: 〇〇」 => 「ESP8266 Boards」 => 「Generic ESP8266 Module」を選びます。
![全画面_2021_12_17_22_35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/7ae33a3e-9527-a32b-9dbf-c65b0c27dfb8.png)

細かい設定があるが、適当に合わします。デフォルトも全然書き込めますし、チューニングすれば若干？早くなるが、気のせいかと思います。
![全画面_2021_12_17_22_38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/61c8de27-8de6-1b0a-bdb1-302ffd3c6bc5.png)

### [重要] 書き込みについて
#### ボタンのある基板

「Flash」、「IO0」、「PGM」など書いているボタンを押しっぱなしして、「Reset」、「RST」が書いたボタンを押してリセットを行ってから書き込むこと
![ESP8266_開発版_-_Google_検索.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/8a75e9e3-a8e0-d803-d2c8-dd3dc3e325bf.png)
![ESPr®_Developer（ESP-WROOM-02開発ボード）_-_スイッチサイエンス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/0749095f-54c7-2d4d-357d-42fb60122bc5.png)
![K-12236_jpg__640×480_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/4cfc229a-0fed-c30e-4d57-d76be8e7b074.png)

#### ボタンのない基板
IO0 PINをプールダウン(10Kの抵抗でGNDと繋ぐ)して、Reset　PINは一瞬だけプールダウンしてから書き込むこと
書き込みが終わったら、IO0 PINのブールダウン状態を解放し、Reset　PINをもう一回プールダウンして再起動すること

### シリアルレイアウト
デフォルトではボードレート(変調速度)が`9600bps`または`115200bps`になっているが、リセットするたびに、大量な文字化けが出る場合があります。
![全画面_2021_12_17_23_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/1e1be01f-cfb1-274f-c37c-db964c5d9e22.png)

上記文字化けを直すには、ボードレートを`74880bps`に設定すると内容が読めます。

![_dev_cu_usbserial-DN01IPIC_と_WiFiAccessPoint___Arduino_1_8_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/fa1af72b-cad1-ac92-203d-1f4921803fc6.png)

コアの内部情報なので、普段の使い方では別に気にしなくていいと思います。

## ESP32
### ボード設定
[秋月電子などで購入できる](https://akizukidenshi.com/catalog/g/gM-15673/)`ESP32-WROOM-32E`のような開発ボードは、「ツール」 => 「ボード: 〇〇」 => 「ESP32 Arduino」 => 「ESP32 Dev Module」を選ぶといいでしょう
![全画面_2021_12_17_23_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/25a4fc78-492c-790b-3eee-2eb22b89a8f2.png)

細かい設定はデフォルトでいいですが、Flashのサイズはもしわかれば、正確なサイズを選ぶといいでしょう
![全画面_2021_12_17_23_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/796d4405-a606-ecb6-daec-e7d55417b4df.png)

### [重要] 書き込みについて
#### ボタンのある基板
これもESP8266と同様に、「IO0」、「Boot」が書かれたボタンを押しっぱなしして、「Rst」、「EN」とかが書かれたボタンを押してリセットを行います。
![Amazon___YUPVM_ESP-WROOM-32_ESP32_ESP-32S用開発ボード2_4GHzデュアルモードWiFi___ブルートゥースデュアルコアマイクロコントローラープロセッサ___YUPVM___家電＆カメラ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/f706857c-b66d-54bc-dd5a-1d1954b460c8.png)
![M-15673_jpg__640×480_.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/4d475abd-283f-4354-09dd-af13ce1b467e.png)

#### ボタンのない基板
IO0 PINをプールダウン(10Kの抵抗でGNDと繋ぐ)して、EN　PIN(Reset PIN)は一瞬だけプールダウンしてから書き込むこと
書き込みが終わったら、IO0 PINのブールダウン状態を解放し、EN　PINをもう一回プールダウンして再起動すること

![Amazon___YUPVM_ESP-WROOM-32_ESP32_ESP-32S用開発ボード2_4GHzデュアルモードWiFi___ブルートゥースデュアルコアマイクロコントローラープロセッサ___YUPVM___家電＆カメラ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/0ada9251-5e22-56f8-d13c-fea648acd618.png)

### シリアルレイアウト
ESP8266と違い、`115200bps` でチップ情報を表示しています。
![_dev_cu_usbserial-1440_と_WiFiAccessPoint___Arduino_1_8_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87438/bbbc8bc6-a5a3-7c1d-994e-1a1ad9cfb026.png)



# 参考
- [ESP8266 Arduinoのインストール](http://www.humblesoft.com/wiki/?ESP8266%20Arduino%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
- [ESP32 MCU の Arduino IDE 設定](https://docs.leafony.com/docs/environment/esp32/arduino/)
- [macOS Big SurでArduino IDEからESP32の書き込みができない件](https://qiita.com/ashe1098/items/585d6474bd5d4833d39d)
- [Arduinoのポートが認識されない時の対処法](https://qiita.com/ryusukefuda/items/5b2edea6b62794069209)
- [ESP-WROOM-02(ESP8266)のArduino環境を一からセットアップする方法](https://kohacraft.com/archives/201903140921.html)
- [ESP-WROOM-02 (ESP8266) > ハードウェアのセットアップ](https://www.hiramine.com/physicalcomputing/espwroom02/setup_hardware.html)