読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

Raspi用カメラに合わせた自前首振りカメラをつくる

python

専用カメラとかいうブルジョワ的な箱が売ってますが、あえて自前で作ってみようかと

実際のところ

必要なもの

今回使ったのは以下の通り

  • RasPi3
  • RasPi公式外箱(黒)
  • RasPi専用カメラ
  • ジャンパ線(オス-メス)×3
  • サーボ:RB-90

微型RCサーボRB90

微型RCサーボRB90

外装

箱の加工

薄い箱なのでピンバイスでも余裕で加工できます。
短辺にRB-90付属の一文字型サーボホーンを取り付けします。
カメラ穴は口径をはかってドリルでゴリゴリ。
好みでスリ鉢状の削りを入れました。
……表面処理は気が向いたらやります。

裏側はカメラのリボンケーブルを引っ張り出す横穴加工。
表面処理は(ry

配線

配線はこんな感じ。
カメラのリボンケーブルとジャンパ線を接続。
RB90はオレンジ、赤、茶の順に信号、電源(5V)、グランドとなっています。
信号線はPWMを使う関係からWiringPiのピン番号に合わせて1番

外箱も加工



スクリプト

wiringpiとpythonの合わせ技でいけます。
いかにPWMの規格を理解していないか白状するようなダメコードですが……動きますから(迫真

import wiringpi
import sys

OUTPUT = 1
PIN_TO_PWM = 1

# 6dgree ~= 1, 45dgree ~= 10, 90degree ~= 15, 135dgree =~=20, 180dgree ~= 30
MAXSIZE = 30
target = int(sys.argv[1])

wiringpi.wiringPiSetup()
wiringpi.pinMode(PIN_TO_PWM,OUTPUT)
wiringpi.softPwmCreate(PIN_TO_PWM,0,MAXSIZE) # Setup PWM using Pin, Initial Value and Range parameters

print(target)

wiringpi.softPwmWrite(PIN_TO_PWM,15) # Change PWM duty cycle
wiringpi.delay(1000)
print("center")

for b in range(15,target):
  wiringpi.softPwmWrite(PIN_TO_PWM,b) # Change PWM duty cycle
  wiringpi.delay(20)
print("coming the place")

コマンドはこんな感じで叩きます。

$ sudo python3 ./servo.py 12

参考もと