LoginSignup
0
2

More than 3 years have passed since last update.

【WebIOPi】スマホでサーボモーターを制御!③

Last updated at Posted at 2021-04-03

スマホでサーボモータを制御!

今回は、スマホでサーボモータを制御するシリーズの第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スクリプト作成

まず、全体は以下のようになります。

pyfile.py
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を受け取ります。互いの関係は下の写真を参考にしてください。
webiopi4.png

ここで、webiopiで実行するPython関数には、関数名の上に@webiopi.macroという記述が必須です!

あとは、受け取った値を数値型に変換し、pigpioによりサーボを動作させます。

最後に

次回が最終回です。

WebIOPiを使用してサーバーを起動させます。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2