#スマホでサーボモータを制御!
今回は、スマホでサーボモータを制御するシリーズの第3回目です。
Raspberry Piを用いて簡単にIoTを作成できるライブラリ、WebIOPiを使用し、スマホからサーボモーターを制御します。
これまでの記事は以下を参考にしてください。
1. WebIOPiのインストール
2. HTML/CSSファイルの作成
3. JavaScriptファイルの作成
#サーボモーター
サーボモーターを動作させるPythonスクリプトを作成します。
サーボモーターは、パルスの周期に応じて回転します。それぞれの仕様によりますが、制御パルスは1.0ms ~ 2.4msの範囲だと思います。
ちなみに、SG90というサーボモータは、0.5ms~2.4msだそうです。
サーボモーターを動作させるために、pigpio
というライブラリを使用します。
#pigpioインストール
サーボモータを動作させるときに、安定したパルスを生成できるように、pigpioというライブラリを使用します。
Raspberry Piのターミナルで以下のコマンドを打ちます。
sudo apt install pigpio
pigpioを使用する場合は、以下のコマンドで起動(デーモン)します。
sudo pigpiod
#Pythonスクリプト作成
まず、全体は以下のようになります。
import webiopi
import pigpio
webiopi.setDebug() # WebIOPiのデバッグをセット
pi = pigpio.pi()
# サーボモーターへのパルス出力ピンを指定
SV_1 = 12 # SERVO1
SV_2 = 19 # SERVO2
"""以下、サーボ動作"""
# SERVO1
@webiopi.macro
def GET1(val):
value1 = int(val)
pi.set_servo_pulsewidth(SV_1, value1)
webiopi.debug(value1)
# SERVO2
@webiopi.macro
def GET2(val):
value2 = int(val)
pi.set_servo_pulsewidth(SV_2, value2)
webiopi.debug(value2)
WebIOPiでは、デバッグを行う際、webiopi.setDebug()
という記述をします。
そして、webiopi.debug(表示したいパラメータ)
と記述することでデバッグの際、そのパラメータの値を確認することができます。
#webiopi.macro
ところで、JavaScriptで作成したwebiopi.callMacro()
関数を覚えていますか?
webiopi().callMacro('GET1',value1)
この第一引数は、実行したいPython関数、ここではdef GET1(val):
です。
また、JavaScriptより引数val
を受け取ります。互いの関係は下の写真を参考にしてください。
ここで、webiopiで実行するPython関数には、関数名の上に@webiopi.macro
という記述が必須です!
あとは、受け取った値を数値型に変換し、pigpioによりサーボを動作させます。
#最後に
次回が最終回です。
WebIOPiを使用してサーバーを起動させます。