今回は
M5stickC plusと2つのサーボを使ってラズパイに繋がっているカメラの架台を作成します。
準備
Amazonでぽち。で、終了です。便利な世の中になりました。プラスチックで成型されたSG90サーボ用の2軸台です。説明書等は何もありません。ざっくりと袋に入っているだけです。。参考リンクに先人がいたので写真を見ながら組み立てました。
サーボのアームを削ったりとポン付けではありません。サーボアームは若干の加工が必要です。配線
Pi4bに接続します。サーボSG90は、5VなのでPi4bから給電します。Low Voltageと怒られそうですが。縦サーボと横サーボの制御線は、GPIO23とGPIO24にそれぞれ接続します。
写真のとおりオスメスがそれぞれ両端についている配線部材で接続します。ソフトウエア
お試しはpythonで書いてちゃちゃっと動作の確認をします。参考リンクのコードを参考に、サーボの動きを横方向に15度刻みで-90度から90度まで動かしつつ縦には-30度から30度まで動かします。
戻りは90度からー90度まで動かしつつ30度から-30度に縦方向に振りながら戻ってきます。pythonのサンプルコードは、参考リンクの下に貼っておきます。
動作確認
pythonなので動きを確認しながら確認することができました。コードのとおり動いてます。delayの長さは経験的な感じでしょうか。動作状況は以下の動画のとおりです。
今日のまとめ
サーボSG90を2つ使って2軸台を作成し、pythonサンプルコードにより動作確認をしました。軽いカメラなら載せて動くと予期します。今後は、カメラをこの2軸台に取り付けてOpenCVと連携させることにより物体を追従できるような装置の製作を進めていきたいと思います。
参考リンク
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT) # 横
GPIO.setup(24, GPIO.OUT) # 縦
yoko = GPIO.PWM(23, 50)
tate = GPIO.PWM(24, 50)
yoko.start(0.0)
tate.start(6)
yoko.ChangeDutyCycle(2.5)
time.sleep(1.0)
# 横 -90 -> 90 15度づつ
# 縦 -30 -> 30 15度づつ
for degree in range(-90, 90, 15):
dc = 2.5 + (12.0-2.5)/180*(degree+90)
yoko.ChangeDutyCycle(dc)
time.sleep(0.03)
for kaku in range(-30, 30, 15):
dc_tate = 2.5 + (12.0-2.5)/180*(kaku+90)
tate.ChangeDutyCycle(dc_tate)
time.sleep(0.1)
# 横 90 -> -90 -15度づつ
# 縦 30 -> -30 -15度づつ
for degree in range(90, -90, -15):
dc = 2.5 + (12.0-2.5)/180*(degree+90)
yoko.ChangeDutyCycle(dc)
time.sleep(0.03)
for kaku in range(30, -30, -15):
dc_tate = 2.5 + (12.0-2.5)/180*(kaku+90)
tate.ChangeDutyCycle(dc_tate)
time.sleep(0.1)
GPIO.cleanup() # warning 抑止
0 件のコメント:
コメントを投稿