WebIOPiを使ってブラウザからRaspberry PiのGPIOを操作してみる

どうも!大阪オフィスの西村祐二です。

最近、Raspberry Piをよくさわります。

PCやスマホのブラウザからRaspberry Pi を操作してみたいということはよくあると思います。

今回は、WebIOPiというものを使ってブラウザからRaspberry PiのGPIOを操作してみたいと思います。

WebIOPiとは?

Raspberry Piにインストールして実行するとwebサーバを立ててくれて、ブラウザからGPIOの操作や、Raspberry Pi内のPythonプログラムを実行できるようにしてくれます。また内部ではPython3を利用しています。

では、さっそくやっていきましょう!

環境

  • Raspberry Pi
    • Raspberry Pi 3 Model B
    • Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux
  • Python
    • Python 3.5.3

WebIOPiのインストール

ラズパイにログインし、適当なところで作業します。今回は~/work配下で作業を行っています。

  • WebIOPi をダウンロードします。(2018/5/24現在、最新バージョンは 0.7.1 なので、WebIOPi-0.7.1.tar.gz をダウンロードします。)
$ wget https://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
  • ダウンロードしたファイルを解凍し、ディレクトリ移動します。
$ tar xvzf WebIOPi-0.7.1.tar.gz
$ cd WebIOPi-0.7.1
  • ブラウザで表示するGPIOの表示を修正するパッチを適用します。
$ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
$ patch -p1 -i webiopi-pi2bplus.patch
  • セットアップスクリプトを実行します。
$ sudo ./setup.sh

セットアップ画面が「Do you want to access WebIOPi over Internet ? [y/n]」で止まったら、「n」を入力し、エンターキーを押します。(「y」を入力し、エンターキーを押すと、「Weaved IoT Kit」がインストールされます。)

  • WebIOPiサービスをsystemctlで操作できるようにするため設定ファイルをダウンロードします。
$ cd /etc/systemd/system/
$ sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service

WebIOPi サービスのStart、Stop、Status、resatart

startでサービスを起動できます。

$ sudo systemctl start webiopi

stopでサービスを停止できます。

$ sudo systemctl stop webiopi

webサーバが起動してこない場合はstatusで状況を確認できます

$ sudo systemctl statu webiopi

restartでサービスの停止と起動をまとめて実行できます。

$ sudo systemctl restart webiopi

動作確認

  • ブラウザからWebIOPiにアクセスしてみます。

ブラウザからhttp:<ラズパイのIP>:8000にアクセスします。

認証ダイアログが表示されるので、
ユーザー名:webiopi
パスワード:raspberry
でログインすることができます。 ログイン後は、以下のようなページが表示されます。

  • GPIOの操作をしてみます。

「GPIO Header」を選択すると、GPIOピンの状態(OUT/IN)を確認・変更できる画面が表示されます。

ラズパイ側の回路はこんな感じです。いつものようにLEDを配線します。今回はGPIO2(3番ピン)を使用しています。

ブラウザからクリックすると対象のGPIOを制御でき、LEDを点灯や消灯させることができます。

さいごに

いかがだったでしょうか

WebIOPiを使ってブラウザからRaspberry PiのGPIOを操作してみました。

次はRaspberry Pi内にあるPythonプログラムをブラウザから実行してみたいと思います。

だれかの参考になれば幸いです。