#スマホでサーボモータを制御!
今回は、スマホでサーボモータを制御するシリーズの第4回目です。
Raspberry Piを用いて簡単にIoTを作成できるライブラリ、WebIOPiを使用し、スマホからサーボモーターを制御します。
今回は、WebIOPiを使用してサーバーを起動します。WebIOPiでのサーバー起動は、非常に簡単に行えます!
これまでの記事は以下を参考にしてください。
1. WebIOPiのインストール
2. HTML/CSSファイルの作成
3. JavaScriptファイルの作成
4. Pythonスクリプトの作成
#スクリプトの登録
これまで作成したHTML
ファイルとPython
ファイルをWebIOPiに登録します。
Raspberry Piのターミナルで以下のコマンドを打ちます。
sudo nano /etc/webiopi/config
すると、nano
というテキストエディタでconfig
ファイルが立ち上がります。
その[SCRIPTS]
と[HTTP]
部分を編集します。
...
[SCRIPTS]
# Load custom scripts syntax :
# name = sourcefile
# each sourcefile may have setup, loop and destroy functions and macros
# myscript = /home/pi/myweb/examples/scripts/macros/script.py
myscript = /home/pi/myproject/pyfile.py # <----ここに、自分のPythonファイルのパスを記述
#------------------------------------------------------------------------#
[HTTP]
# HTTP Server configuration
enabled = true
port = 8000
# File containing sha256(base64("user:password"))
# Use webiopi-passwd command to generate it
passwd-file = /etc/webiopi/passwd
# Change login prompt message
prompt = "WebIOPi"
# Use doc-root to change default HTML and resource files location
doc-root = /home/pi/myweb/examples/scripts/macros # <----ここに自分のHTMLファイルのパスを記述
# Use welcome-file to change the default "Welcome" file
welcome-file = controller.html # <----ここに自分のHTMLファイル名を記述
#------------------------------------------------------------------------#
...
注意点として、doc-rootにはHTMLファイル名
を記述しないことです。
a.htmlというファイルが/home/pi/a/a.html
にあれば、
doc-root = /home/pi/a
welcom-file = a.html
とします。
終了したらテキストエディタを閉じます。nano
の場合は、ctrl+O
→ctrl+X
です。
#サーバー起動
いよいよサーバーの起動です。
Raspberry Piのターミナルで以下のコマンドを実行します。
sudo pigpiod # すでに実行されていればメッセージが表示される。
sudo systemctl start webiopi # webiopiの起動
以下のコマンドを打つと、webiopiがactiveであることが確認できます。
sudo systemctl status webiopi
終了は、以下のコマンドで行います。
sudo systemctl stop webiopi
アクセス
sudo systemctl start webiopi
を行ったのち、WebブラウザでRaspberry PiのIPアドレス:8000
へアクセスすると、作成したWebページが表示されていると思います。
また、スライダを動かすと、サーボモーターが動作すると思います。
デバッグ
WebIOPiをデバッグ実行する場合は、以下のコマンドを打ちます。
sudo webiopi -c /etc/webiopi/config -d
終了は、ctrl+c
→ctrl+z
で終了します。
いきなりctrl+z
で終了したり、正しく終了していない場合、
OSError: [Errno 98] Address already in use
というエラーが表示されます。
その際は、プロセスをkillする必要があります。
ps ax | grep webiopi
でプロセスを確認します。
pi@raspberrypi:~ $ ps ax | grep webiopi
2462 pts/0 T 0:00 sudo webiopi -c /etc/webiopi/config -d
2463 pts/0 T 0:00 /bin/sh /usr/bin/webiopi -c /etc/webiopi/config -d
2464 pts/0 Tl 0:02 python3 -m webiopi -c /etc/webiopi/config -d
この場合、sudo webiopi -c /etc/webiopi/config -d
というプロセス(2462)を強制killします。
強制killは、-9をつけます。
sudo kill -9 2462
そして再度sudo webiopi -c /etc/webiopi/config
を実行します。
#最後に
サーバーを立てるのは、面倒な作業ですが、WebIOPiを利用すると非常に簡単に立てることができます。
今回は、サーボモーターについてでしたが、IoTを作成する上で、他の機器にも応用することができると思います。
WebIOPiを利用して、オリジナルのIoT機器を作成してみてください!