なごるふ

UnityとかArduinoとか気になったことを

【Arduino】ESP32でLEGO互換サーボのGeekservo9Gを動かしてみる

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);
}

youtu.be

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);
}

youtu.be

Geekservo 9g 360°サーボは1.5msより大きいすると正転、小さくすると逆転して回り続けるようです。

サーボと言いつつDCモーターのような使い方ができ、正転と逆転を1つの線で制御できるので、配線が少なく済むのが嬉しいです。

さいごに

ESP32Servoのおかげであっさり動かすことができました。

次はLEGOと組み合わせてラジコンのようなものを作ってみたいと思います。

参考

【電子工作とレゴ】カラフルレゴモータ + 電子回路 = 最強 - YouTube