🔖

ESP32 開発ボードのセットアップ,Lチカ と PWM出力

2021/12/09に公開

1. ESP32とは

  • Wi-FiとBluetoothを備えた低コスト・低消費電力なArduino互換機

2. この記事で使うもの

  • ESP32 DevKitC V4 ESP32-WROOM-32D
    • ESP32開発ボードであれば他のバージョン等でも使い方は概ね同じです.
  • PC(Windows, MacどちらでもOK)
  • Arduino IDE >= 1.8
  • Micro USBケーブル
    • ESP32開発ボードとPCの接続に使います
  • その他電子部品
    • LED
    • サーボモーター
    • ブレッドボード
    • ジャンパワイヤ

3. セットアップ

3.1 ブレッドボードについて

ESP32開発ボードは1枚のブレッドボードに差すと,ジャンパワイヤ等を差すスペースがなくなってしまうので,2枚使うと便利です.

3.2 Arduino IDEの設定

基本的に,公式によるArduino-ESP32サポートをインストールする方法に沿って作業します.

※しばしばドキュメントが更新されるので,リンク切れ等に注意してください.

3.2.1 Boards Managerを使用したインストール

ESP32公式のインストール解説ページ にBoards Manager の URL があるのでこれをコピーします.

Arduino IDE を起動し、ファイル環境設定追加のボードマネージャのURL に,先ほどの URL を追記して OK を押します.

Arduino IDEで、ツールボードボードマネージャ に進み,「esp32」で検索してESP32のボードをインストールします。

インストール後、ツールボードメニューからESP32ボードを選択します.選択肢がたくさんありますが,よくわからない場合は ESP32 Dev Module を選べば大抵は大丈夫です.

ESP32とPCをUSBケーブルで繋いだら,ツールシリアルポート から ESP32の繋がっているポートを選択します.

4. Hello World!

良い開発は挨拶から始まります.

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println("Hello World!");
  delay(1000);
}

シリアルモニタで Hello World! が見えれば成功です.

5. ESP32のピン配列

ESP32チップには、複数の機能を備えた48ピンが付属しています。すべてのESP32開発ボードですべてのピンが公開されているわけではなく、一部のピンは使用できません。

例えば,今回使用している DevkitC では,38ピン(片側19ピン×2)を使用することができます.

ESP32 DevkitCのピンに関するより詳しい情報は例えば以下を参照:

6. Lチカ

ESP32のほとんどのピンは多目的であるため,Lチカのためのデジタル出力ピンとしてはGPIOは0, 1, 3, 6~11以外のすべてのピンが使用できます.

例えば GPIO 5 を使う場合,GPIO 5 に LED のアノードを接続し,抵抗を介してGNDへ接続します.

さらに以下のコードを書き込むことでLチカが実行できます:

const int LED_PIN = 5;

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

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(1000);
  digitalWrite(LED_PIN, LOW);
  delay(1000);
}

7. PWM出力

既に述べたようにESP32のほとんどのピンは多目的であり,ピンの大部分は、デジタル入力または出力として使用できます.

ただし,一部のGPIOピンは、起動時またはリセット時に自動的にHIGHになるか、自動的にPWM信号を出力します.これにより予期しない挙動になる場合がありますので,注意が必要です.

具体的には,PWM出力を制御したい場合には GPIO 0,1,3,14,15,34,35,36,39 は使用しないのが無難です.34,35,36,39はデジタル出力に対応しておらず,0,1,3,14,15は特別な用途や初期状態のために用いられます.

7.1 サーボモーターの制御

PWM信号で制御できる部品であればサーボモーター以外でも構いません.

まず,下のようにサーボモーターをESP32開発ボードに接続します:

  • サーボモーターの制御線(オレンジや白など) ⇔ GPIO 13
  • サーボモーターの電源線(赤など) ⇔ 5V
  • サーボモーターのGND線(茶,黒など) ⇔ GND

7.1.1 Servoライブラリのインストール

ServoESP32のリポジトリをダウンロードし,解凍したフォルダをArduinoのライブラリフォルダへ配置します.(Windowsの場合はデフォルトだと C:\Users\(ユーザー名)\Documents\Arduino\libraries です).

インストールはこれだけで完了です.

7.1.2 サンプルプログラム

角度を90度回転させて、元に戻るのを繰り返すプログラムです。

#include <Servo.h>

Servo myservo; //Servoオブジェクトを作成

void setup() {
  myservo.attach(13); //13番ピンにサーボ制御線(オレンジや白など)を接続
}

void loop() {
  myservo.write(90); //90度まで回転 
  delay(1000);
  myservo.write(0); //0度まで回転
  delay(1000);
}

以上です.

8. 参照

Discussion