LEGOとATOM LiteでDIYリモコンカー 4 (サーボモータを動かしてみる 2/2)

 サーボモータ2回目です。の前に、LEGOとの組み合わせを少し書いておきます。今回は使いませんが、このGeekServoとLEGOとの組み合わせて使う際の組み方です。

f:id:haseharu:20210730203445j:plain

f:id:haseharu:20210730203524j:plain

f:id:haseharu:20210730203535j:plain

 おそらくこれがこの向きでの一番ミニマムな組み方です。後ろをもう一つ削れると思いますが、その辺はお好みで。

 今回、2つのサーボモータの制御についてです。サーボモータに入る、電源(赤)とGND(黒)はブレッドボードでつなげて一本にまとめてATOM Liteにつなげます。茶色の線はつなげずにATOM LiteのGPIOにつなげて別々にコントールします。

f:id:haseharu:20210730210153j:plain
 
 プログラムは以下のものです。

#include <M5Atom.h>
#include <ESP32Servo.h>

Servo myservo1;
Servo myservo2;

void setup() {
  M5.begin(true, false, false);

  ESP32PWM::allocateTimer(0);
  ESP32PWM::allocateTimer(1);
  ESP32PWM::allocateTimer(2);
  ESP32PWM::allocateTimer(3);
  
  myservo1.setPeriodHertz(50);
  myservo1.attach(22, 500, 2500);

  myservo2.setPeriodHertz(50);
  myservo2.attach(33, 500, 2500);
}

void loop() {
  myservo1.write(120);
  myservo2.write(120);
  delay(1000);
}

 前回のプログラムとほぼ同じです。「Servo」クラスのオブジェクトを2つ作ります。「myservo1」と「myservo2」を作っておいて、「myservo.attach」でGPIOの「22」と「33」を設定してあります。こんな感じで動くと思います。前回の動画、サーボモータの動きがわかりにくかったので、適当にパーツをつけてあります。

youtu.be

 ここまではブレッドボードを使っていますが、ハンダでも良い方はATOMITプロトキットがおすすめです。

www.switch-science.com


f:id:haseharu:20210730212638j:plain

f:id:haseharu:20210730212620j:plain

 これ、個人的にとても好きで「たぶんどっかで使うはずよね、きっと」と意味もなくカートに入れてしまいがちなものの一つです。

f:id:haseharu:20210730212725j:plain

 サーボモータ用の線を出しています。裏側でハンダ付で配線をしています。GPIOは全部引き出しているわけではなく、今回使っている「22」と「33」のみ引き出しています。

f:id:haseharu:20210730212743j:plain

 ここにATOM Liteがカチッと入ります。

f:id:haseharu:20210730213725j:plain

 この蓋の部分、とっても取りにくいです。毎回苦戦していますが、少しずつ外すのがうまくなってきた気がします。もし電池とかで動かしたい場合は、5V昇圧のコンバータを入れるのが良いです。ここでは使っていませんが、サイズ的には問題なく入りますので、うまく配線すればたとえば単3電池3本を5V昇圧で動かせると思います。

akizukidenshi.com

 サーボモータはこんな感じでカチカチくっつけてしまいます。

f:id:haseharu:20210730215337j:plain
f:id:haseharu:20210730215210j:plain
f:id:haseharu:20210731164922j:plain

 電源はATOM TailBATを使っています。

www.switch-science.com

 さきほどのプログラムは一部修正をします。モータの回る方向が一緒だとこの向きで組んだときに、片方が逆になります。90の前後で回転が逆転するので、90を基準に「120(90+30)」「60(90-30)」としました。

void loop() {
  myservo1.write(120);
  myservo2.write(60);
  delay(1000);
}

 ということでここまでで、とにかくまっすぐ進むカーができた感じです。
 
youtu.be

 動画だとやや右にずれていっているのがわかると思います。おそらく個体差だと思いますが、ちょっとモータの回るスピードの調整が必要です。サーボモータ2個をブレッドボード or プロトタイプキット的なもので配線ができました。あとはこれをWifiでなにかのブラウザ的なものからコントロールできればほぼ完成です。

 次回は少し戻りますが、Wifi編ということでIOT的なLチカだと思います。