目次
ESP32でのサーボモーターの使い方
現在カメに餌を遠隔であげるべく、サーボモーターを使った作品を制作中のwak-techです。
今回は備忘録的ですが、ESP32でのサーボモーターの基本的な使い方を紹介します。
サーボモーターのテスト!
180度回転の設定で、ほぼ正確に動いています。
動力部品を触るのは久々なので楽しい???? pic.twitter.com/VuKNJdMe7N— ????????????-????????????????????電子工作 (@wak_tech) December 9, 2019
今回の材料・環境
- Windows10
- Arduino1.8.7
- ボード:ESP32 ver 1.0.0
- ESP32 Devkit-C
- SG90
サーボモーターとは
角度や速度が指定できるモーターです。その性能は主に以下の点で分けられます。
- 可動範囲
- 精密さ(最小角度)
- トルク
- 重さ
サーボモーターの制御はPWM信号で行います。あるパルス幅のうちの割合で何度にするかが決定されるわけです。
自分で書いてもいいのですが、角度をPWM信号にしてくれるライブラリがありますので、利用してみましょう!
回路
サーボモーターには3つの色付きの線が付いています。
それぞれに以下の役割が付いています。
オレンジ | 赤 | 茶 |
---|---|---|
制御線 | VDD(+) | GND(-) |
今回はESP32の開発ボードを使用するため、以下のような回路にしました。黄色(実際にはオレンジ)の線とESP32のGPIO 13に接続します。
Servoライブラリのインストール
- ESP32-Arduino-Servo-Libraryのページへ行き、緑色のClone or DownloadでzipファイルをDLする
- Arduinoのライブラリフォルダへ展開する。私の環境では以下の場所にライブラリ保存フォルダがありました。
これでインストールは完了です。
サンプルプログラム
非常に簡単な例を紹介します。角度を90度回転させて、元に戻るのを繰り返すプログラムです。
#include <Servo.h>
Servo myservo; //Servoオブジェクトを作成
void setup() {
myservo.attach(13); //13番ピンにサーボ制御線(オレンジ)を接続
}
void loop() {
myservo.write(180); //180度へ回転
delay(1000);
myservo.write(0); //元に戻る
delay(1000);
}
writeメソッドで実行可能なのは0から180度までです。
これで以下のような動きが実現できます。
サーボモーターのテスト!
180度回転の設定で、ほぼ正確に動いています。
動力部品を触るのは久々なので楽しい???? pic.twitter.com/VuKNJdMe7N— ????????????-????????????????????電子工作 (@wak_tech) December 9, 2019
応用
サーボモーターは意外とトルクがあるので、スイッチにそのまま張り付けて電動スイッチにできます。
時間になったら自動で明かりを消す、なんてことも可能です。
回転体として使いたい場合は、360°回転可能なこちらのサーボをお勧めします。
サーボモーターと3Dプリントされた部品を組み合わせて、カメに餌をやる仕組みを作ってみました!
3Dプリントした餌ロールとサーボモーターを合体( ・∀・) pic.twitter.com/DHjDiGmPdy
— ????????????-????????????????????電子工作 (@wak_tech) December 9, 2019
穴が開いているので、遠隔でESP32が操作できればある程度決まった量だけフリフリして出すことができます(たぶん)。
今後の制作にご期待ください。ありがとうございました!
よく考えるなあ????