ターミナルソフトからSSHでRaspberry Piを遠隔操作出来ますが、スマホからコマンド入力は大変ですよね。そんな不便さを解消してくれるのがWebIOPiです。
今回は、WebIOPiを使ってスマホ(Webブラウザ上)からRaspberry Piを遠隔操作して、GPIOを制御する方法について解説していきます。
WebIOPiとは
Webブラウザ上からRaspberry PiのGPIO出力を操作できるツールキットです。Pythonの知識が有れば、自分でGPIO操作するプログラムを作成することも出来ます。また、HTML/Javascriptの知識が有れば、Webブラウザでのユーザーインターフェイスを拡充することも可能です。
WebIOPiのインストール方法
WebIOPiの開発は止まっており、2015年からアップデートはありません。最新のバージョンは0.7.1となっています。新しいRaspberry Piには対応しておらず、修正プログラムを取得する必要があります。
修正プログラムはGitHubより取得出来ます。
リンク先の使用方法に従って、ターミナルで以下のコマンドを順に打つと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
$ sudo ./setup.sh
WebIOPiの環境設定
WebIOPiの環境設定を変更するには、/etc/webiopi/configをテキストエディタで開き、内容を書き換えます。
テキストエディタは何でも良いですが、自分はnanoを愛用しています。ターミナルで次のコマンドを打ち込みましょう。
sudo nano /etc/webiopi/config
configファイルを編集することが出来ます。
ドキュメントルートの変更
ドキュメントルートを変更するには、[HTTP]セクションのdoc-root 部を変更します。
doc-root = /home/pi/WebIOPi-0.7.1/htdocs
パスワード入力の省略化
デフォルトでは、WebIOPiのパスワードを求められます。パスワードを省力したい場合は、[HTTP]セクションのpasswd-file = /etc/webiopi/passwdの頭に#を付けてコメントアウトします。
#passwd-file = /etc/webiopi/passwd
ウェブブラウザからRaspberry PiのGPIOを操作
WebIOPiの起動/停止
WebIOPiを起動するには、ターミナルで以下のコマンドを打ちます。
sudo service webiopi start
停止するには以下の通りです。
sudo service webiopi stop
WebIOPiでGPIO出力の操作
Webブラウザからhttp://<Raspberry PiのIPアドレス>:8000にアクセスします。
パスワードが求められますので
- ユーザー名: webiopi
- パスワード: raspberry
でログイン出来ます。
WebIOPiのメインメニューページが立ち上がります。GPIO出力を操作するには、GPIO Headerをクリックします。
GPIO Headerページが表示されます。
IN/OUTボタンをクリックすると⇔と表示が切り替わります。に切り替えた後、ピン番号をクリックすることによってピン番号の色を黒から黄に変更できます。黒が出力オフ(0V)、黄色が出力ON(+3.3V)です。
まとめ
WebIOPiを使ってスマホ(Webブラウザ上)からRaspberry Piを遠隔操作して、GPIOを制御する方法について解説しました。
行ったことは
- WebIOPiのインストール
- WebIOPiの環境設定
- WebIOPiのメインメニューをWebブラウザで表示し、GPIO出力の制御
です。
ターミナルソフトからコマンドを打たなくても、WebブラウザからGPIOピン番号をクリックするだけでGPIO出力を制御出来ます。WebIOPiを使えばキーボードのないスマホでもRaspberry Piの制御が簡単ですね。
今回は、WebIOPiデフォルトのメインメニューからGPIOを制御しましたが、HTML/CSS、JavaScript、Pythonの知識が有れば、ユーザーインターフェイス拡充やプログラム処理を実行することも可能です。
今後、WebIOPiのプログラミングについて解説したいと思います。