esp32-wroomDevkitCをarduino IDEでセットアップからサーボ駆動まで(Windows)

#はじめに
大学の研究室にて比較的新しいマイコンボード "esp32" を渡されたのでその開発環境構築からサーボモータ駆動までとりあえずやってみました。

私はWindows10を使用していますのでWinUser向けです。
#必要なもの
・Arduino IDE

・ESP32-DevKitC wroom-32開発ボード購入は秋月電子通商様です。　　　　　　　　　　　　　　　　　　　　　　
　購入はこちらから。[ESP32-DevKitC wroom-32開発ボード 秋月電子通商](http://akizukidenshi.com/catalog/g/gM-11819/)

・ブレッドボード(片側6本線があるといいと思います。)

・LED

・抵抗　(購入したLEDに合わせたもの)

・ジャンパワイヤ-オスオス三色

・書き込み線(esp32の場合はマイクロUSB_Btypeです。PS4のコントローラの充電器があればそれで構いません)

・SG90
#開発環境の構築
##Arduino IDE編
まずは何といってもArduinoIDEがなければ話が始まらないのでArduinoIDEをインストールしましょう。
こちらからインストールできます。[ArduinoIDE](https://www.arduino.cc/en/Main/Software)
<img width="842" alt="arduinoIDE.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/274423/a1c5c708-27b4-4d4e-6143-4194f7d4f33e.jpeg">
Win10の方はWindows app Requires Win8.1 or 10を選択しましょう。
アプリをインストールしてesp32が使えるようにします。

ArduinoIDEはArduinoで開発するための環境ですのでArduinoIDEでESP32を認識できるようにしなければなりません。

・[Arduino-esp32](https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/boards_manager.md)
上のリンク先から画像のURLをコピーします。
↑リンクが切れていましたので画像の下部に同様のモノを張り付けてあります。
そちらをご利用ください。2021/12/18 追記

<img width="874" alt="2.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/274423/4e5ce35c-2d44-d389-3eed-eedaecb1d1ae.jpeg">

[　 https://dl.espressif.com/dl/package_esp32_index.json 　]
↑リンクが切れていましたので、こちらの緑の部分のみをコピーしてください　2021/12/18 追記

そしてArduinoIDEを開き、画面上のツールバーにあるファイル→環境設定から追加のボードマネージャを開きましょう。
<img width="1128" alt="キャプチャ.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/274423/1ded7a67-e563-8be6-f6f8-969f3ae3b7c2.jpeg">

画像の"追加のボードマネージャのURL"にペーストします。

ArduinoIDE画面のツール→ボード→ボードマネージャの検索バーにesp32と入力します。
<img width="1117" alt="3.JPG" src="https://qiita-image-store.s3.amazonaws.com/0/274423/edf63d01-b9fc-2b50-07d3-8ecbc5eae4f6.jpeg">

esp32 by Espressifl Systemsをインストール。

これで環境構築は完了です。
##ドライバ編
プログラムを書いていきたいところですがこのままではPCがArduinoを認識してくれないことがあります。
つまりせっかく書いたプログラムをesp32に書き込むことができません。
その時はこちらのドライバをインストールしてみてください。

自分のOSにあったファイルを選択し、' VCPをダウンロード 'をクリック。

[Windows10_ドライバ](https://jp.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers)

これでツールからシリアルポートにアクセスできるようになるはずです。

またツール→ボード選択からESP32 Dev Moduleを選択してください。

##追加のライブラリ編
後に解説しますサーボ駆動ですがesp32ではArduinoにもともとあるメソッドであるmyServoなどでサーボモータを駆動することができません。
なので先にライブラリを追加しておきます。
追加するライブラリは下記から。

[Arduino_esp32_add_library](https://github.com/espressif/arduino-esp32)

clone or downloadをクリックしてZIPファイルをダウンロードします。

ArduinoIDEを開いてツール→ボードからZIPファイルをインクルードします。

#ハードウェア
##Lチカ編
サンプル配線
![IMG_4061.JPG](https://qiita-image-store.s3.amazonaws.com/0/274423/a9f2b5b4-1212-9ced-9ced-5fcdbb80ef13.jpeg)
サンプルコード



```C:LED_HIGH_LOW.ino

void setup(){
  pinMode(25,OUTPUT);}

void loop(){
 digitalWrite(25,HIGH);
 delay(500);
 digitalWrite(25,LOW);
 delay(500);
}
```
簡単ですね.
サンプル配線を見ていただければわかると思いますが、せっかくあるピンを半分埋めてしまっているため、ブレッドボードは両側とも6本線のあるものを選ぶと良いでしょう。

##サーボ駆動編
サンプル配線
![IMG_4065.JPG](https://qiita-image-store.s3.amazonaws.com/0/274423/165e9a77-a856-e692-eff3-ee66c106b4ab.jpeg)

サンプルコード



```c:Servomotor.ino
#include "esp32-hal-ledc.h"
const int IN1 = 25;

void setup(){
 ledcSetup(1,60,16);
 ledcAttachPin(IN1,1);
}
void loop(){
 for (int i=500;i<6000;i=i+500){
 ledcWrite(1,i);
 delay(100);
 }
}
```
ledcは本来LEDをPWM値を用いて操作する際にこのコードを使用します。ゆっくり点滅するイルミネーションなど。
それをサーボモータ駆動に代用していますので、興味のある方はこのコードをそのままに、PIN配置をLEDに交換してみてください。
#終わりに
esp32はwifiモジュール及びBluetoothモジュールが標準搭載されています。
にもかかわらず1500円弱という他のマイコンと比べて非常に安価なため、将来様々な場面で使用されることが予想できます。
これを機に触れるようになっておくのもいいかもしれません。

#参考にしたリンク集
[ESP32-DevKitCを使ってみた〜環境構築からタッチセンサによるLチカまで〜](https://qiita.com/suigin/items/dcf704c05e98a00acae8)
[ESP32(ESP-WROOM-32)でLチカ (WindowsでArduino IDE使用)](https://qiita.com/rukihena/items/6a904368700eb1c7d2a3)
[[esp-idf]ESP-WROOM-32で、サーボモータを使ってみる](http://blog.livedoor.jp/sce_info3-craft/archives/9549872.html)
[【ESP32】PWMでモーターを制御する方法](http://rikoubou.hatenablog.com/entry/2017/06/05/172953)
[Arduino core for the ESP32 のインストール方法](https://www.mgo-tec.com/arduino-core-esp32-install)
[ESP-WROOM-32を使ってみる2 -そんな電源で本当に大丈夫か-](http://nemuisan.blog.bai.ne.jp/?eid=220875)