LEGOとATOM LiteでDIYリモコンカー 4 (サーボモータを動かしてみる 2/2)
サーボモータ2回目です。の前に、LEGOとの組み合わせを少し書いておきます。今回は使いませんが、このGeekServoとLEGOとの組み合わせて使う際の組み方です。
おそらくこれがこの向きでの一番ミニマムな組み方です。後ろをもう一つ削れると思いますが、その辺はお好みで。
今回、2つのサーボモータの制御についてです。サーボモータに入る、電源(赤)とGND(黒)はブレッドボードでつなげて一本にまとめてATOM Liteにつなげます。茶色の線はつなげずにATOM LiteのGPIOにつなげて別々にコントールします。
プログラムは以下のものです。
#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」を設定してあります。こんな感じで動くと思います。前回の動画、サーボモータの動きがわかりにくかったので、適当にパーツをつけてあります。
ここまではブレッドボードを使っていますが、ハンダでも良い方はATOMITプロトキットがおすすめです。
これ、個人的にとても好きで「たぶんどっかで使うはずよね、きっと」と意味もなくカートに入れてしまいがちなものの一つです。
サーボモータ用の線を出しています。裏側でハンダ付で配線をしています。GPIOは全部引き出しているわけではなく、今回使っている「22」と「33」のみ引き出しています。
ここにATOM Liteがカチッと入ります。
この蓋の部分、とっても取りにくいです。毎回苦戦していますが、少しずつ外すのがうまくなってきた気がします。もし電池とかで動かしたい場合は、5V昇圧のコンバータを入れるのが良いです。ここでは使っていませんが、サイズ的には問題なく入りますので、うまく配線すればたとえば単3電池3本を5V昇圧で動かせると思います。
サーボモータはこんな感じでカチカチくっつけてしまいます。
電源はATOM TailBATを使っています。
さきほどのプログラムは一部修正をします。モータの回る方向が一緒だとこの向きで組んだときに、片方が逆になります。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チカだと思います。