サーボモータの配線
モータを動かすには大きな電流が必要なので
サーボモータの電源を 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 を起動する
起動は
sudo servod
実行結果は
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 オプションで上限を変えることができる
サーボモータの制御の構文は
echo サーボ番号=パルス幅 >/dev/servoblaster
となる
サーボ番号は
sudo servod
を実行したときに
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 にするなら
echo 2=120 > /dev/servoblaster
となる
2回実行してもすでにその角度に動いている後なので
変化しない
簡単な操作なら、スクリプトにすることもできる
Raspberry PiのPWM出力を使ってサーボモーターを動かす!
を参考に角度を動かすなら
vim servo..sh
でファイルを作成して
#!/bin/bash echo 2=150 >/dev/servoblaster sleep 0.5 echo 2=60 >/dev/servoblaster sleep 0.5 echo 2=240 >/dev/servoblaster
で保存
chmod 755 servo.sh
で権限を与えて
./servo.sh
で実行すると回転を始める
あと ServoBlaster デーモン起動中は
GPIO 4
GPIO 17
GPIO 18
GPIO 27
GPIO 22
GPIO 23
GPIO 24
GPIO 25
は ServoBlaster 専用になる
もし、特定のポートだけServoBlaster にするなら
–p1pins=基盤のピン番号
とする
GPIOポート番号ではないので注意
sudo servod --p1pins=12
とすれば
Servo mapping: 0 on P1-12 GPIO-18
となり18ポートだけ ServoBlaster 対応になる
ServoBlaster 終了は
sudo killall servod
で終了となる