サーボモータを動かす(WebIOPi利用)
解説
WebIOPiを利用して、サーボモータを動かす方法についてまとめます。
WebIOPiには、サーボモータを動かすGPIO.pulseAngle関数が用意されているので、これを使用してサーボモータを動かすことができます。
GPIO.pulseAngle関数の実装を確認したところ、以下のような仕様となっています。※1
GPIO.pulseAngle関数 | |
---|---|
サーボホーン 角度 [度] |
パルス幅 [μ秒] |
-90 | 720 |
-45 | 1120 |
0 | 1520 |
45 | 1920 |
90 | 2320 |
使用するサーボモータの仕様とGPIO.pulseAngle関数の仕様が合致している場合には、GPIO.pulseAngle関数を使用するのがよいです。
使用するサーボの仕様とGPIO.pulseAngle関数の仕様が合致していない場合には、GPIO.pulseMicro関数を使用したサーボ制御関数を自作するのがよいです。
今回使用したサーボモータの仕様は以下です。※2
GWSサーボモータの仕様 | |
---|---|
サーボホーン 角度 [度] |
パルス幅 [μ秒] |
Safety zone | 700- 800 |
-90 | 800 |
-45 | 1150 |
0 | 1500 |
45 | 1850 |
90 | 2200 |
Safety zone | 2200- 2300 |
使用するサーボの仕様とGPIO.pulseAngle関数の仕様が合致していないので、GPIO.pulseMicro関数を使用したサーボ制御関数を自作します。
※1
/home/pi/WebIOPi-0.7.1/python/native/gpio.c
のvoid pulseAngle(int gpio, float angle)の実装より。
※2
http://www.gws.com.tw/english/product/servo/sat%20form.htm
サーボモータの駆動には大きな電流を必要とするため、電源は、Raspberry Piの5Vピンからではなく、外部電源から供給します。
部品表
部品名 | 数量 | 商品名 | 参考価格 |
---|---|---|---|
サーボモータ | 1 | GWSサーボ MICRO/2BBMG/JRタイプ | 1,480円 |
電池ケース | 1 | 電池ボックス 単3×4本 横一列タイプBスナ付 バッテリースナップ(電池スナップ・Bスナップ)「縦型」 |
60円:電池ボックス 10円:バッテリースナップ |
Raspberry Pi | 1 | Raspberry Pi 3 Model B | 2,780円 |
ブレッドボード | 1 | EIC-801 | 250円 |
ジャンパーワイヤ | 適量 | ジャンパーコード(オス-オス)セット | 100mm49個 150mm8個 200mm4個 250mm4個 のセット200円 |
ジャンパーワイヤ | 適量 | ジャンパーワイヤ(オス-メス) | 10本300円 |
接続例
WebIOPiのインストール
Raspberry Pi にWebIOPiをインストールしてない場合は、まず、WebIOPiをインストールします。
WebIOPiのインストール
スクリプトファイルの作成
「/home/pi/work/webiopi」フォルダに、「servomotor.py」というファイル名で、以下の内容のスクリプトファイルを作成します。
WebIOPi サービスの設定の変更
WebIOPi のサービスを開始したときに、作成したスクリプトが実行されるように、WebIOPi サービスの設定を変更します。
WebIOPi サービスの設定は、「/etc/webiopi/config」ファイルに記述されています。
以下のコマンドを実行し、「/etc/webiopi/config」ファイルを開きます。
[SCRIPTS] セクションを探し、[SCRIPTS] セクションの「myscript =」に、作成したスクリプトファイルを指定します。
編集し終えたら、
Ctrl + O
で上書き保存し、
Ctrl + X
で nano を終了します。
実行
WebIOPi のサービスを開始します。
2秒ごとに、30度づつ角度が増加。90度になると、-30度づつ角度が増加。-90度になると、30度づつ角度が増加。を繰り返します。
WebIOPi のサービスを終了するには、以下のコマンドを実行します。