🤖

【Raspberry Pi】 コントローラ製作「WebIOPI編」①

2022/10/30に公開

コントローラ製作

やや難ありな戦車ですが、兼ねてから考えていた、コントローラを作成しようと思います。

現在は、プログラムに記述したソース通りに動くだけとなっていますが、
スマホ等から操作できるよう改良します。

久々に教本に戻り、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のトップページが表示されます。

トップページ WebIOPI トップ

GPIO Header 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を利用したアプリケーションの開発の流れは以下のような感じです。

  1. 操作用のHTMLページを用意する。
  2. javascriptを用意し、onclick等でイベントを紐づける。
  3. イベントが呼ばれた時の処理をpythonで記述する。(これを/etc/webiopi/configのmyscriptで指定します。)
  4. フレームワークのインタフェースを利用し、2のjavascript内で、3のpythonの関数を呼び出す。(コールバック等も設定できる。)

大まかですが、以上の手順で、ブラウザからラズパイを操作します。

これを利用して、戦車を操作するコントローラを作成することにします。

GitHubで編集を提案

Discussion