Arduino IDE をTeensy,ESP32両対応にする


![SS 192.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/a41cd967-f549-8677-1efa-2e99bf69518d.png) ArduinoIDE対応のいろいろなボードを使いたい人向け

##やること
シンプルで使いやすいArduinoボード、wifiが使えるESP32系、処理速度がダントツに早いTeensyといろいろなボードが出ています。
それらはすべてArduinoの開発環境であるArduinoIDEに対応しています。
ので、ぜんぶ使えるように環境を整えます。


##謝辞・参考
参考記事のURLは文末に掲載させていただきました。ありがとうございます。
この記事は参考記事をもとに、一連の手順を最新の環境に合わせてまとめたものです。（2020年12月30日現在）

##準備物・実施環境
- Windows10
- ArduinoIDE 1.8.19
- Teensy4.0など
- ESP32DevKitCなど

##「ArduinoIDE」を使えるようにする

まずはArduinoIDEを使えるようにします。すでに導入済みの方は飛ばしてOKですが、念のため**IDEのバージョンだけは確認**してください。

下記のURLよりArduino IDE のバージョン1.8.19をDLしてインストールします。このバージョンであれば後述のTeensyduinoに対応しています。

https://www.arduino.cc/en/software

**（重要）必ずzip版をダウンロードしてください。**
windows appからDLする方法も選べますが、こちらのバージョンはTeesyduinoに対応していないとのことです。
DL後に解凍してarduino.exeを実行すればインストール完了です。


##「Teensy」を使えるようにする

公式サイト）
[Teensyduino: Download and Install Teensy support into the Arduino IDE (pjrc.com)](https://www.pjrc.com/teensy/td_download.html)

Teensyに対応させるには、Teensyduinoというアプリを追加する必要があります。
これは一度設定してしまえば、あとはとくに意識せずに普通のArduinoIDEとして使うことができます。

公式サイトの[こちら](https://www.pjrc.com/teensy/td_download.html)より、OSに該当するTennsyduinoのインストーラーをダウンロードし、（TeensyduinoInstall.exeなどを）実行します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/bfeaa0b0-ea43-ffba-ccf5-47644692fbf0.png" width=400>
インストーラーからArduinoの場所を問われますが、手元でインストールしてみたところデフォルトのもので大丈夫でした。

メニューの「ツール」→「ボード」でTeensyduinoが選択できるようになっていれば成功です。
Teensyduinoが別ウィンドウで開きます。このウィンドウが表示されない場合も、ArduinoIDEの検証ボタン（画面左上のチェックマーク）を押せば出てくると思います。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/ecc78555-5cb0-103e-95c5-a740657d344a.png" width=400>

#### Teensy4.0 書き込みテスト
ここで書き込みテストを行います。
ボードの設定でお手持ちのTeensyを選択し、
書き込むスケッチの選択として、ArduinoIDEの「ファイル」→「スケッチ例」→「01.Basic」→「Blink」を開きます。

画面左上の検証ボタン（チェックマーク）を押した後、書き込みボタン（矢印マーク）で書き込みを実行します。
初回のみTeensy本体のボタンを押す必要があります。
Teensy4.0であれば13番ピンがオンボードLEDなので、スクリプトはそのままでOK。書き込みが成功するとLEDが点滅します。

ちなみにArduinoIDEを再度立ち上げると、Teensyduinoが消えていることがあります。
その場合、Teensyduinoのウィンドウは、検証ボタンを押すと再度現れます。
Teensyduinoの緑のAutoが点灯していれば、書き込み時にTeensy本体のボタンを押さなくてOKです。

##「ESP32」を使えるようにする

####ボードの導入
ArduinoIDEの「ファイル」→「環境設定」を開きます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/02cd2ebc-9451-b1e6-5b4f-76e484fdabc9.png" width=400>

「追加のボードマネージャーのURL」の欄に以下を入力します。

```
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
```

すでにほかのURLが入っている場合には、そのあとに改行して追記します。
入力ができたらOKを押し、環境設定を終わります。

メニューから「ツール」→「ボード」→「ボードマネージャ...」を選択して開きます。
テキストボックスに「ESP32」を入力し、「esp 32by Esepressif systems」を見つけます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/a52cbd21-927d-6935-b945-b8a3d4422a37.png" width=600>

インストールボタンを押すとDLが開始され（10分ぐらい時間がかかるかも）、その後インストールが完了します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/9774c57b-b1b4-9562-b307-359c4b479330.png" width=600>
メニューから「ツール」→「ボード」で図のように「ESP32 Arduino」以下が選択できるようになっていれば成功です。

####シリアルドライバの導入
WindowsデフォルトのシリアルドライバではESP32に対応していないと思いますので、ここでESP32用のシリアルドライバをインストールします。

[https://jp.silabs.com/developers/usb-to-uart-bridge-vcp-drivers](https://jp.silabs.com/developers/usb-to-uart-bridge-vcp-drivers)
にアクセスし、「CP210x VCP Windows」を選びます。
ファイルを解凍し、「CP210xVCPInstaller_x64.exe」を実行すればOKです。（winが32bitの場合はx84）

ArduinoIDEのメニューの「ツール」→「シリアルポート」を見ると、シリアルポートが増えています。追加された方のCOMポートを選択することで、ESP32にも書き込みができるようになります。

####自動書き込みできない機種もある
なお、手元にあるespressif版のESP32DevKitCでは問題なく書き込みができましたが、他の製品では書き込みがうまくいかない場合があります。その場合は、本体側を手動で書き込みモードにする必要があります。
書き込み前に本体のBootボタン押しっぱなし→ENボタンを１回押す→ArduinoIDEから書き込みを実行→ArduinoIDEにConnecitng...の表示が出たらBootボタンを離す、といった手順で書き込みができるようになります。
もしくはEN-GND間に1μF程度のコンデンサを追加することでも対処できるようです。

#### ESP32DevKitC 書き込みテスト
書き込みテストを行います。
書き込むスケッチの選択として、ArduinoIDEの「ファイル」→「スケッチ例」→「01.Basics」→「AnalogReadSerial」を開きます。
メニューより「ツール」→「ボード」→「ESP32 Arduino」→「ESP32DevKitC（など）、
同じく「ツール」→「シリアルポート」→（COM5など）を設定します。
最後に検証と書き込みボタンで書き込みます。
「ツール」→「シリアルプロッタ」を開き、bpsは9600を選びます。
でギザギザの線が表示されたら成功です。（未接続の不安定なピンの電圧が表示されています。）

##ボードを使い分ける
これでArduino IDEが、Arduino、ESP32、Teensyのそれぞれの書き込み準備が整いました。
ボードに応じて、メニューのツールより「ボード」と「シリアルポート」を変更すれば、複数のボードを使い分けることができます。


##謝辞・参考
以下の記事を参考にさせていただきました。ありがとうございます。
[ESPRESSIF公式](https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html)
[Teensy公式](https://www.pjrc.com/teensy/td_download.html)
[Arduino core for the ESP32 のインストール方法 ](https://www.mgo-tec.com/arduino-core-esp32-install)
[esp32-wroomDevkitCをarduino IDEでセットアップからサーボ駆動まで(Windows)](https://qiita.com/WK_ZAKK/items/d7fbbb8c0c8eebe5682d)
[ESP32-DevKitCの使い方(インストール編)](https://nobita-rx7.hatenablog.com/entry/2020/08/27/224213)
[ESP32のプログラム書込みを安定させる](https://qiita.com/h_nari/items/b971e615688d69bb3564)
[ESP32+Arduino 手動書き込み](http://systechw.com/blog_develop/blog_dev_20180415_1.html)

## さいごに

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/565043/70527941-6bf9-498b-2312-0e89957eff76.png" width = 100/>
初心者向けの導入方法と思いArduinoIDEの例をまとめましtが、
なんでPlatformIOを使わないんですかと指摘されまして・・・
**たしかに！**って思っています。