Raspberry Pi2でサーボを動かす

はじめに

Raspberry Pi2でサーボを動かします

このカメラマウントを動かすので制御するサーボは2つになります 1つを制御する記事は多かったけど2つのサーボを制御する記事があんま見つかりませんでした ちなみにこのカメラマウントレビューにもある通りサーボ付属のホーンが使えず少し加工が必要です 大した手間じゃないですが若干面倒

必要なもの

  • Raspberry Pi2
  • SG90*2
  • カメラマウント

作業

組み立て

カメラマウントは説明書もないっぽいので適当にググって先人の知恵をお借りして頑張って組み立てます

配線

この辺とかが実際のRaspberryPi2の画像とかあって見やすいです

GPIOの配置はこんな感じ
https://www.raspberrypi.org/documentation/usage/gpio/README.md

サーボ側のデータは秋月電子で公開されてるPDFを読む

  • SG90 9 g Micro Servo
    2ページ目に線の説明がある 実物だと色が見づらいけど束ねられてる線の真ん中が赤色

ここを参考にすると下記の通り

  • オレンジ
    PWM
  • レッド
    Vcc(+)
  • ブラウン
    Ground(-)

やることとしては5VとGNDに繋いでPWMをクロック違うところに繋ぐだけ
GPIO図のPWM0とかPWM1とかがクロックが違うのでうっかりPWM0とPWM0に繋ぐと2つのサーボが同じ挙動して焦る(実際にやった)
実際の配置はこんな感じ

  • サーボ1
    オレンジ → PIN32
    レッド → PIN2
    ブラウン → PIN30
  • サーボ2
    オレンジ → PIN33
    レッド → PIN4
    ブラウン → PIN34

ジャンパワイヤで直接繋いだのでGNDとVccを1個ずつポート使ってます

環境構築

といってもWiringPi2-Pythonを入れるだけです

1$ pip install git+https://github.com/Gadgetoid/WiringPi2-Python

テスト

この辺を参考にコードを書く
GPIOへのアクセスにrootがいる ので実行時は

1$ sudo python gpiotest.py

とかする

 1import wiringpi2
 2
 3PWM_PIN = 12  #or 13
 4value = 50
 5
 6wiringpi2.wiringPiSetupGpio()
 7wiringpi2.pinMode(PWM_PIN, wiringpi2.GPIO.PWM_OUTPUT)
 8wiringpi2.pwmSetMode(wiringpi2.GPIO.PWM_MODE_MS)
 9wiringpi2.pwmSetClock(400)
10wiringpi2.pwmWrite(PWM_PIN, value)

で1個サーボが動けばおっけー
PWM_PIN変数は12と13で違うクロックが出力出来るので2つ制御するときは12と13に繋ぐ
GPIO番号が図と違うのでGPIO番号を見る時は違う図をググって参照しました

ApacheでWebから監視カメラもどき作ったらroot権必要でモメたので不要な方法を見つけました