サーボモータを動かす(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 のサービスを終了するには、以下のコマンドを実行します。

ダウンロード

サンプルスクリプトファイル