MacでESP-32Sにコードを書き込む

MacでESP-32Sにコードを書き込む際の備忘録です。

# 用意

購入したもの
[ESP32 ESP-32S Aideepen 2個セット ESP-32ワイヤレスWiFi Bluetooth 2.4GHz CP2102マイクロUSBデュアルコアESP32-WROOM-32開発ボード](https://www.amazon.co.jp/gp/product/B07MH58JS2/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1)

# MacにESP-32Sモジュールのドライバをインストール

ツール→シリアルポートでUSBデバイスが見えなかったので以下記事を参考にドライバをインストール
（Macの場合は、SiLabsUSBDriverDisk.dmg を実行してインストール）

> [MacでESP32のLチカ（Arduino IDE版）](https://qiita.com/naohiro2g/items/b8baa3f0e1a880ae9d0a)
[CP210x USB - UART ブリッジ VCP ドライバ](https://jp.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)
[CP210x USB - UART ブリッジ VCP ドライバ Download for Macintosh OSX (v5.2.4)](https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip)

これでESP-32Sを繋いだ時に、ツール→シリアルポート(Port)：　/dev/cu.SLAB_USBtoUART が見えるので選択する。

# esp32用のボードマネージャのインストール

ツール→ボードからESP32マイコンが見えないので、esp32用のボードマネージャのインストールする。
その後、Arduino IDEを再起動する。

> [espressif arduino-esp32 Installation instructions for Mac OS](https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/mac.md)
> mkdir -p ~/Documents/Arduino/hardware/espressif && \
cd ~/Documents/Arduino/hardware/espressif && \
git clone https://github.com/espressif/arduino-esp32.git esp32 && \
cd esp32 && \
git submodule update --init --recursive && \
cd tools && \
python get.py

> ・Restart Arduino IDE 

ツール→ボード→ESP32 dev Module が見えるので選択する。

# 書き込み

以下のソースコード記載して、スケッチ→マイコンボードに書き込む

```c:sample
void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println("hello world.");
  delay(1000);
}
```

ツール→シリアルモニタにログが表示されればOK

<img width="351" alt="スクリーンショット 2020-05-05 13.11.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/24d049dc-6990-f950-bd82-56a4d156e3ff.png">

# ESP32にソフトが書き込めない

> [ESP32書き込みモード conecting……..____と出て書き込めない時の対処方法](https://kobazlab.tech/2018/03/27/esp32書き込みモード-conecting-____と出て書き込めない時の対/)
> ESP32の開発ボードには書き込みモードなるものがあるらしい．
画像の右下のbootボタンを押しながら，左下のresetボタンを押すと書き込みモードになる．

ツール→シリアルモニタでシリアルログを表示させ、
画像の右下のbootボタンを押しながら，左下のresetボタンを押した時に、
waiting for download... と出力されたら再び書き込むと成功した。

<img width="353" alt="スクリーンショット 2020-05-05 13.12.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/344880/c6ec4a33-22da-482d-33ac-ec2a51d0e668.png">


# Error: java.lang.NullPointerException

ボード選択を間違っていた。

ツール→ボード→ESP32 dev Module が正しい。
ツール→ボード→ESP32 dev FM DevKit だと書き込み時にエラーが出た。


# 参考
[MacでESP32のLチカ（Arduino IDE版）](https://qiita.com/naohiro2g/items/b8baa3f0e1a880ae9d0a)
[CP210x USB - UART ブリッジ VCP ドライバ](https://jp.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)
[CP210x USB - UART ブリッジ VCP ドライバ Download for Macintosh OSX (v5.2.4)](https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip)
[espressif arduino-esp32 Installation instructions for Mac OS](https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/mac.md)
[Error: java.lang.NullPointerException - ESP32 Forum](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=2ahUKEwiutv3e6ZvpAhVyIqYKHbFaDXsQFjAAegQIAxAB&url=https%3A%2F%2Fesp32.com%2Fviewtopic.php%3Ft%3D11132&usg=AOvVaw09U0ICemvx217XPOcFXuKQ)
[ESP32 のボードマネージャーを追加](https://dandydot.no-ip.biz/~dot/presen/advtech/seminars/iot_workshop/install-esp32-board-manager/README.md.html)