【Raspberry Pi】 コントローラ製作「WebIOPI編」①
コントローラ製作
やや難ありな戦車ですが、兼ねてから考えていた、コントローラを作成しようと思います。
現在は、プログラムに記述したソース通りに動くだけとなっていますが、
スマホ等から操作できるよう改良します。
久々に教本に戻り、WebIOPIというフレームワークを利用してみます。
http://webiopi.trouch.com/
これはブラウザからGPIOピンを操作できるようにするものです。
便利なものなのですが、最終更新から1年ほど経過しています。
そのため、40pinに対応したパッチも展開されています。
https://github.com/doublebind/raspi
READMEにも手順が記載されていますが、
WebIOPIのダウンロード
$wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
解凍
$tar xvzf WebIOPi-0.7.1.tar.gz
$cd WebIOPi-0.7.1
パッチの取得
$wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
パッチの適用 $patch -p1 -i webiopi-pi2bplus.patch
WebIOPIのインストール $sudo ./setup.sh
パッチ適用後にrasbian jessie の環境でサービスを起動するために、下記を行います。
システムディレクトリに移動
$ cd /etc/systemd/system/
サービスのダウンロード
$ sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service
WebIOPIの起動等については下記のとおりです。
起動
$ sudo systemctl start webiopi
停止
$ sudo systemctl stop webiopi
自動起動
$ sudo systemctl enable webiopi
自動起動解除
$ sudo systemctl disable webiopi
デバッグの際にログを確認しながら作業したい場合には、
sudo webiopi -c /etc/webiopi/config -d
とすることで、ログを確認しながら作業できます。
WebIOPIを起動したら、ブラウザから、デフォルトポート番号8000でWebIOPIのトップページが表示されます。
トップページ
GPIO Header
ピンの状態が分かります。
このGPIOのページでは、ピンのIN,OUTの切り替えやON,OFF等が操作でき便利です。
このページのHTMLコンテンツは、初期状態で /usr/share/webiopi/htdocs
配下に配置されています。
WebIOPIの設定ファイルは、 /etc/webiopi/config
に配置されており、
これを編集することでコンテンツのパス等も含めて、 設定を変更することが出来ます。
編集の反映にはWebIOPIの再起動が必要です。
WebIOPIは、javascriptからPythonを実行します。
実行するPythonファイルは、configファイルの [SCRIPT] 内、myscriptで指定します。
ポート番号は[HTTP]内、portで。
HTMLのドキュメントルートは、[HTML]内、doc-root で変更できます。
WebIOPIを利用したアプリケーションの開発の流れは以下のような感じです。
- 操作用のHTMLページを用意する。
- javascriptを用意し、onclick等でイベントを紐づける。
- イベントが呼ばれた時の処理をpythonで記述する。(これを/etc/webiopi/configのmyscriptで指定します。)
- フレームワークのインタフェースを利用し、2のjavascript内で、3のpythonの関数を呼び出す。(コールバック等も設定できる。)
大まかですが、以上の手順で、ブラウザからラズパイを操作します。
これを利用して、戦車を操作するコントローラを作成することにします。
Discussion