LEGOブロックと互換性のあるサーボモーターがあるということで、Geekservo 9g 360°サーボとGeekservo 9g 270°サーボを購入して試してみました。
開発環境
- Mac Book (12.1)
- Arduino IDE (1.8.19)
機材一覧
その他 ブレッドボード、ジャンパワイヤなど
ライブラリ導入
ESP32でサーボモーターを簡単に扱えるライブラリのESP32Servoをインストールします。
Arduino IDEのメニューから、スケッチ > ライブラリをインクルード > ライブラリを管理を選択して、ライブラリマネージャを開き、検索窓にESP32Servoと入力して出てきたライブラリのインストールをします。
Geekservo 9g 270°サーボを動かす
灰色の方のサーボは270度の回転を制御できるサーボモーターです。
周波数50Hzのサイクル時に制御パルス0.5ms-2.5msの範囲で0°-270°の制御ができるようです。
配線は赤が電源、黒がGND、橙がPWM信号になっています。
#include <ESP32Servo.h> #define SERVO_PIN 5 Servo myServo; void setup() { // 270度サーボ myServo.setPeriodHertz(50); // 周波数50Hz指定. myServo.attach(SERVO_PIN, 500, 2500); } void loop() { // 270度サーボ myServo.write(0); // 0° delay(1000); myServo.write(90); // 135° delay(1000); myServo.write(180); // 270° delay(1000); myServo.write(90); // 135° delay(1000); }
ESP32Servoはattachで指定したパルス幅を0-180の範囲で制御できるようです。
Geekservo 9g 270°サーボの場合、2.5msで270°の回転になるため、最大の180を指定すると270°の回転になります。
数値が直感的ではないので注意が必要です。
Geekservo 9g 360°サーボを動かす
黄緑の方のサーボは360度の回転を制御できるサーボモーターです。
周波数50Hzのサイクル時に制御パルス0.5ms-2.5msの範囲で正転と反転の制御ができるようです。
配線は270°と同様に赤が電源、黒がGND、橙がPWM信号になっています。
#include <ESP32Servo.h> #define SERVO_PIN 5 Servo myServo; void setup() { // 360度サーボ myServo.setPeriodHertz(50); // 周波数50Hz指定. myServo.attach(SERVO_PIN, 500, 2500); } void loop() { // 360度サーボ myServo.write(0); // 正転 delay(5000); myServo.write(90); // 停止 delay(1000); myServo.write(180); // 逆転 delay(5000); myServo.write(90); // 停止 delay(1000); }
Geekservo 9g 360°サーボは1.5msより大きいすると正転、小さくすると逆転して回り続けるようです。
サーボと言いつつDCモーターのような使い方ができ、正転と逆転を1つの線で制御できるので、配線が少なく済むのが嬉しいです。
さいごに
ESP32Servoのおかげであっさり動かすことができました。
次はLEGOと組み合わせてラジコンのようなものを作ってみたいと思います。