Raspberry Pi 4をブラウザからGPIOを操作してLEDを光らせよう!(webiopi)

Raspberry Pi 4をブラウザからGPIOを操作してLEDを光らせよう!(webiopi)

前にRaspberryPiにOSを入れる方法を書きました。

超簡単!Raspberry pi imager を使って簡単にRaspberry Pi OSを入をいれよう!

今回は「WebIOPi」というサービスを使ってRaspberryPi4をブラウザからGPIOを操作してLEDを光らせたいと思います。
WebIOPIは現在開発が終了しているらしく、RaspberryPi3ではパッチを使って動かしていました。
しかし、RaspberryPi4ではパッチを使っても動かない為、色々探してみるととても良い記事がありましたので
こちらを参考にして進めていきます。

PATHpliotのブログ

この記事がなければ確実に途方に暮れてました。


WebIOPiのインストール

WebIOPiをインストールしていきます。

RaspberryPiのコンソールを開き、任意のフォルダで

wget https://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz

と入力しRaspberry Piのパスワードを入力するとダウンロードが開始します。


「WebIOPi-0.7.1.tar.gz’ へ保存完了」と表示されたらOKです。
ダウンロードしたファイルは圧縮されているので解凍します。

tar xvzf WebIOPi-0.7.1.tar.gz

次にWebIOPiのフォルダに移動します。

cd WebIOPi-0.7.1

パッチを当てる

ダウンロードした「WebIOPi」はRaspberryPI2までの対応でGPIOが24pinまでしかなく、RaspberryPi3以降は、
40pinとなる為、表示させるpinを40pinに増やす修正パッチを当てます。

まず、パッチファイルをダウンロードします。

wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch

次にパッチを当てると完了です。

patch -p1 -i webiopi-pi2bplus.patch

WebIOPiのファイルを編集する

先ほどパッチを当てたが、RaspberryPi4ではまだ動かない為、下記のファイルを編集する。

ファイル場所 WebIOPi-0.7.1/python/native/cpuinfo.c

while(!feof(fp)) {
      fgets(buffer, sizeof(buffer) , fp);
      sscanf(buffer, "Hardware	: %s", hardware);
while(!feof(fp)) {
      fgets(buffer, sizeof(buffer) , fp);
      sscanf(buffer, "Hardware  : %s", hardware);
      if (strcmp(hardware, "BCM2708") == 0)
         rpi_found = 1;
      else if (strcmp(hardware, "BCM2709") == 0)
         rpi_found = 1;
      else if (strcmp(hardware, "BCM2835") == 0)
         rpi_found = 1;
      else if (strcmp(hardware, "BCM2711") == 0) 追加部分
         rpi_found = 1;                          追加部分
      sscanf(buffer, "Revision  : %s", revision);
   }

上記のように2行追加する。

セットアップをする

WebIOPiのフォルダに移動します。

cd WebIOPi-0.7.1

セットアップスクリプトを実行します。

sudo ./setup.sh

Raspberry Piのパスワードを入力し開始します。

「Do you want to access WebIOPi over Internet ? [y/n]」と聞かれるのですが、今回はインターネットには繋げない為、「n」と入力します。


サービスファイルを入れる

WebIOPiをsystemctlコマンドで動かせるようにする為、
設定ファイルをダウンロードします。

まず、下記を入力し移動

cd /etc/systemd/system/

次に設定ファイルをダウンロード
下記を実行するとパスワード入力を求められるので入力。

sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service

これで、WebIOPiの準備は完了です。


systemctlコマンドについて

WebIOPiを動かす為にsystemctlコマンドを使います。

・WebIOPiの起動

sudo systemctl start webiopi

・WebIOPiの停止

sudo systemctl stop webipi

・WebIOPiが起動しているか確認
 (緑の文字でrunningと表示されていたら起動しています)

sudo systemctl status webipi

・WebIOPiを再起動します

sudo systemctl restart webipi

・WebIOPiを自動で起動させたい場合です。

sudo systemctl enable webipi

WebIOPiでLチカをしてみよう

今回はGPIOにLEDをつなげて光らせたいと思います。

・RaspberryPiのコマンドでWebIOPiを起動させます。

sudo systemctl start webiopi

・ブラウザから「http:<RaspberryPiのip>:8000」を開きます。
※ローカル環境で動かしますのでRaspberryPiとパソコンは同じ回線で繋げてください。


・ログインをする為、ユーザー名とパスワードを入力します。

ユーザー名:webiopi
パスワード:raspberry


・ログインするとメニュー画面が表示されます。


・GPIOを操作するには「GPIO Header」をクリックします。
 すると下の画像のページが開きます。


・INとOUTはクリックすると入れ替わります。
 真ん中2列になっている数字をクリックするとONとOFFが入れ替わります。

最後に

いかがだったでしょうか、今回はWebIPiのデフォルト画面でLEDを操作しました。
近々、自作の画面を作成しLEDやモーターを動かしてみたいと思います。