Raspberry Pi のLチカをインターネット経由で制御する

Rasberry Pi OS がすでに動作している前提で、LEDを接続して点滅させ、ネットワーク経由で制御します。この実験は Raspberry Pi OS (Buster) で確認しました。Bullseye では問題発生して動きませんでしたが、関連情報が出揃えば対策も見つかる可能性があります。

Lチカ

まずLチカを行います。回路は単純なので手抜きで書きますが、この通り。

GPIO 16  →  LED  →  200Ω程度の抵抗  →  GND

抵抗を介してLEDを接続することを忘れないでください。これを忘れると回路が(Raspberry Pi そのものも)壊れてしまう可能性があります。LEDの極性にも気をつけてください。LEDの2本のピンの長いほうが正極です。プログラムのファイル名は led.py としました。

led.py

これをターミナルで実行します。

LEDが点滅したはずです。もし “ModuleNotFoundError: No module named ‘RPi'” というエラーが表示されたら、次のコマンドで RPi をインストールすればエラーは出なくなります。

動作が確認できたら Ctrl+C で終了します。

WebIOPi

WebIOPiというライブラリを使って、LEDのオン・オフをネットワーク経由で制御してみます。

WebIOPiのセットアップ

WebIOPi のページからダウンロードして(wgetコマンド)、解凍し(tarコマンド)、解凍したフォルダに移動してください。wgetコマンドに渡しているURLを見るとわかりますが、2015年以降現在2022年1月まで 0.7.1 が最新なのでコマンドは次のようになります。

このバージョンの WebIOPi にはパッチ(修正プログラム)があるのでそれをダウンロードして適用します。

これで準備が整いましたので WebIOPi をセットアップします。

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

WebIOPi をサービスとして実行するために必要なファイルを、システムフォルダにダウンロードします。

 WebIOPi の開始・終了

WebIOPi を開始したり終了したりするには systemctl コマンドを使います。

起動

停止

状態確認

再起動

WebIOPi のサービスを自動開始(Raspberry Pi 起動時に開始)するには次のようにします。

WebIOPi の自動開始を解除するには次のコマンドを使います。

動作確認

Raspberry Pi のIPアドレスを調べます。次のコマンドでIPアドレスが表示されます。

Raspberry Pi と同じネットワークで接続しているパソコン、スマホ等から上記のIPアドレスのポート8000にアクセスします。

認証画面が表示されるので次のように入力します。

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

次の画面がブラウザ上に表示されますので “GPIO Header” をクリックしてください。

Raspberry Pi のピンヘッダーの図が表示されます。

グレーの白抜き文字は、それぞれのGPIOピンの入力(IN)・出力(OUT)を示します。クリックすると入力/出力の設定が変わります。中央の数字は、それぞれのGPIOピンの状態を示し、黒背景:LOW、オレンジ背景:HIGH です。クリックすると、HIGH/LOWの状態が変わります。

LEDが接続されているのは GPIO16 なのでその表示を探してください。物理ピン番号の36番がそれです。ピンが “OUT” のモードになっていることを確認して、数字の “36” をクリックすると表示がオレンジ/黒と変化するのと同時にLEDもオン/オフするはずです。

ngroks

ngrok を使って、インターネット経由で webiopi にアクセスできるようにしてみましょう。

ngrok | API Gateway, IoT Device Gateway, Secure Tunnels for Containers, Apps & APIs
ngrok is a secure ingress platform that enables developers to add global server load balancing, reverse proxy, firewall,...

(1)ngrokのページにアクセスしてアカウントを作り、ログインします。

(2)自分のアカウントのダッシュボードの Setup & Installation から対応OSのngrokアプリをダウンロードします。ラズパイの場合、Download for Linux(ARM) からダウンロードします。

(3)ファイルを展開したらすぐに実行できます。トークンはダッシュボードの Your Authtoken の画面からコピペします。

(4)次のコマンドでローカルサーバーを公開します。

(5)次のような内容が表示されるので、”Forwarding” に表示されたURLにアクセスできるようになります。ローカルサーバーがトンネルされて、外部インターネットからもアクセス可能です。しかも https までサポートされています。

(6)外部のインターネット(例えばスマホのモバイル通信)から上記に表示されたURLにアクセスすると WebIOPi が表示されます。