サーボモータの配線
モータを動かすには大きな電流が必要なので
サーボモータの電源を Raspberry Pi からとることはできない
このためサーボモータ専用の電池ボックスなどをつかって電源をとることになる
今回は使用するパーツを
秋月電子通商通販
で購入
使用した部品は
そして
ハック ラズベリーパイ Raspberry Pi 電子工作入門キット。
使用する単3電池は100均で購入
配線するときの注意点として
Raspberry Pi の 3.3V と
サーボモータ用の+を接続しないこと
これは、Raspberry PI のほうが電圧が低いため
Raspberry Pi に電圧がかかり
Raspbery Pi が物理的に壊れるため
なお、今回購入したサーボモータは
端子がソケットになっていて
ブレッドボードにさせないので
電子工作入門キットに両方ともオスの
ジャンパケーブルがあるので、
これをつかってブレッドボードに接続する
配線は
Raspberry Pi のGND
サーボモータの -
電池ボックスの ー
が同じ横の列
そして
サーボモータの+
電池ボックスの+
が同じ横の列
Raspberry Pi のGND、つまり右から3つめと
GPIO18 つまり右から6つめ
と同じ縦の列にさす
これで配線は完了
次に、電池ボックスの電源をいれてから
ServoBlaster を起動する
起動は
1 | sudo servod |
実行結果は
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Board revision: 2 Using hardware: PWM Using DMA channel: 14 Idle timeout: Disabled Number of servos: 8 Servo cycle time : 20000us Pulse increment step size: 10us Minimum width value: 50 (500us) Maximum width value: 250 (2500us) Output levels: Normal Using P1 pins: 7,11,12,13,15,16,18,22 Using P5 pins: Servo mapping: 0 on P1-7 GPIO-4 1 on P1-11 GPIO-17 2 on P1-12 GPIO-18 3 on P1-13 GPIO-27 4 on P1-15 GPIO-22 5 on P1-16 GPIO-23 6 on P1-18 GPIO-24 7 on P1-22 GPIO-25 |
となる
これで次にサーボモータを制御する
サーボモータの制御は
仮想デバイスファイルの
/dev/servoblaster
にパルス幅を書き込む
パルス幅の単位はミリ秒を100倍した値になる
もし 1,2ms のパルス幅を出力するなら
値は120になる
指定できる値は、初期値では
50~250 だけど
-min オプションで下限
-max オプションで上限を変えることができる
サーボモータの制御の構文は
1 | echo サーボ番号=パルス幅 > /dev/servoblaster |
となる
サーボ番号は
1 | sudo servod |
を実行したときに
1 2 3 4 5 6 7 8 9 | Servo mapping: 0 on P1-7 GPIO-4 1 on P1-11 GPIO-17 2 on P1-12 GPIO-18 3 on P1-13 GPIO-27 4 on P1-15 GPIO-22 5 on P1-16 GPIO-23 6 on P1-18 GPIO-24 7 on P1-22 GPIO-25 |
の部分でみることができる
今回なら GPIO 18 は2番になっている
これをつかってパルス幅を 1.2ms にするなら
1 | echo 2=120 > /dev/servoblaster |
となる
2回実行してもすでにその角度に動いている後なので
変化しない
簡単な操作なら、スクリプトにすることもできる
Raspberry PiのPWM出力を使ってサーボモーターを動かす!
を参考に角度を動かすなら
1 | vim servo..sh |
でファイルを作成して
1 2 3 4 5 6 7 8 | #!/bin/bash echo 2=150 > /dev/servoblaster sleep 0.5 echo 2=60 > /dev/servoblaster sleep 0.5 echo 2=240 > /dev/servoblaster |
で保存
1 | chmod 755 servo.sh |
で権限を与えて
1 | . /servo .sh |
で実行すると回転を始める
あと ServoBlaster デーモン起動中は
GPIO 4
GPIO 17
GPIO 18
GPIO 27
GPIO 22
GPIO 23
GPIO 24
GPIO 25
は ServoBlaster 専用になる
もし、特定のポートだけServoBlaster にするなら
–p1pins=基盤のピン番号
とする
GPIOポート番号ではないので注意
1 | sudo servod --p1pins=12 |
とすれば
1 2 | Servo mapping: 0 on P1-12 GPIO-18 |
となり18ポートだけ ServoBlaster 対応になる
ServoBlaster 終了は
1 | sudo killall servod |
で終了となる