Raspberry Pi Node-REDによるタッチGUIの迅速な開発
2023/08/04 |Gechic 編集部
自動制御とモノのインターネット (IoT)技術の盛んな発展に伴い、ヒューマン・マシン・インターフェース(HMI)システムの設計は、直感的で使いやすいタッチパネルによってグラフィカルユーザインタフェースを採用する傾向が強まっています。 従来のボタン、つまみ、レバーなどの制御要素と比べて、タッチパネルを使用して機械の生産プロセスを操作/監視することには以下の利点があります:
- 使いやすい: GUIは直感的で理解しやすいため、初めての方でもすぐに使い始めることができます。
- 更新が簡単:ソフトウェアベースのGUIは、いつでも新しい項目を追加でき、生産ラインの要件に応じて制御機能をいつでも変更することができます。
- 強力なセキュリティ:従来のHMIはキーで制御動作を制御していたが、タッチGUIはソフトウェアでアラームリマインダー、二次入力確認、パスワードロック解除動作を制御でき、機械操作のセキュリティ制御を強化する。
タッチHMIの設計は専門的なテーマですが、Raspberry PiとフリーソフトのNode-REDを使ってタッチパネルのグラフィックインターフェースを設計するのは簡単で、習得も容易だ。Node-REDを使えば、プログラミングの能力をあまり必要とせず、小さなタッチHMIを自宅ですぐに開発することができます。それでは、スマートホームのタッチHMIを開発しましょう!
1. Node-RED のインストール
Node-RED は、Node.js をベースにIBMが開発されたビジュアル プログラミング ソフトウェアです。 ノードアイコンをドラッグ&ドロップすることで処理コードを作成できるため、開発者のプログラム作成負担が大幅に軽減されます。 このソフトウェアは無料で習得が簡単であるため、IoT アプリケーション開発で広く使用されています。
Raspberry Pi OS 32bitsにはNode-REDアプリケーションが内蔵されており、Raspberry Piのメニューを開き、Programmingの中にNode-REDがあります。
異なるバージョンのRaspberry Piオペレーティングシステムを使用している場合は、手動でNode-REDをインストールすることができます。Terminalを開き、以下のコマンドを入力します。(Node-RED インストール手順)
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
インストール後、RPI メニューの Programming フォルダー内に Node-RED があります。
⏺ Node-REDの実行
① Node-REDアイコンをクリックしてNode-REDを実行します。
② Chromiumを実行する ⇨ アドレスバーにローカル IP:1880 を入力します (この例のローカル IP は 192.168.101.251:1880 です) (Node-REDのデフォルトポートは1880です)
🎁 注: RPIのローカルIPを確認する方法
Terminalを実行する ⇨ hostname -I を入力します。
2. Node-RED ノードを追加する
インストールされたNode-REDには基本的なノードしか含まれていません。Raspberry PiのGPIOデバイスを制御するフローを開発したい場合は、より多くのノードをロードする必要があります。
⏺ GUI ダッシュボードのノードの追加:右上隅のメニュー アイコンをクリック ⇨ [manage palette] をクリック ⇨ [install] をクリック ⇨ 検索に「dashboard」を入力 ⇨ [node-red-dashboard] を選択してインストールします。
⏺ RPI gpio ノードの追加:検索に「gpio」を入力 ⇨ [node-red-node-pi-gpio] を選択してインストールします。 (注: Node-RED for Raspberry Piにはこのノードのセットが付属しています。)
⏺ DHT センサーノードを追加:検索に「dht」を入力 ⇨ [node-red-contrib-dht-sensor] を選択してインストールします。 (注:この例では DHT-11 を使用します)
⏺ LED ノードを追加:検索に「ui-led」と入力 ⇨ [node-red-contrib-ui-led] を選択してインストールします。
⏺ Timerノードを追加:Timerノードを追加:検索に「timer」と入力 ⇨ [node-red-contrib-timer] を選択してインストールします。
🎁 注:Node.Redのウェブサイトでは、より多くの有用なノードやフローサンプルを見つけることができます。 https://flows.nodered.org/search?type=node
3. GPIOデバイスのオン/オフ制御
RaspberryPiのGPIOピンに接続されたLEDをON/OFFするために、Node-REDダッシュボードのスイッチボタンを設計することができる。
⏺ ハードウェアの設置
赤色LEDをRaspberry PiのGPIO15ピンとGNDピンに接続します。
⏺ ソフトウェア設定
以下の手順に従って、Node-REDでLEDライトを制御するプロセスを設計してください:
① 左側の列で、ダッシュボード内で 'button' ノードを探し、中央のflow 1ページにドラッグします。
② 'button'ノードをダブルクリックして設定を開きます。 まず新しいダッシュボード グループを追加します。 ラベル名を入力し、ペイロードをnumber=1として送信します。
③ [rpi-gpio out ]ノードをページにドラッグし、その BCM GPIO ピンを設定し、デフォルト値が 0 であることを確認します。2 つのノードを接続します。
④ 手順①を参照して、LED オフのボタンを追加し、PIN 10 に接続します。 さらに、LED ノードをdashboardからページにドラッグし、2 つのボタン ノードに接続します。 LEDノードを設定します。 番号=1を受信した場合は赤色を表示し、番号=0を受信した場合は灰色を表示します。
⑤ ダッシュボードのレイアウトを設計する:右上隅のメニューアイコンをクリック→[dashboard]をクリック→[layout]ボタンをクリックして、ダッシュボードの設計ページを開きます。
右上の[Width]項目でダッシュボードの幅を設定します。ノードを好きな位置までドラッグまたはズームします。 (注意:ノードのサイズがデフォルトの自動の場合、ドラッグ/ズームはできませんので、最初にサイズを設定する必要があります)
⑥ ダッシュボードのレイアウトが完了したら、右上の[Deploy]ボタンをクリックして設定を適用させます。ダッシュボードのボタンをタップするとダッシュボードに移動し、ボタンとLEDライトが表示されます。タッチパネルのLED ON、LED OFFをタップして赤色LEDを点灯/消灯します。
4. GPIO センサーデータの読み取りと表示
Node-RED は GPIO 上のセンサーを読み取り、データをゲージまたはチャートとして表示できます。 温湿度センサー DHT-11 を例として、部屋の温度と湿度を観察/記録するためのダッシュボードを設計します。
⏺ ハードウェアの設置
DHT-11 の電源ピンを RPI の 3.3V ピンに接続します。
DHT-11 のグランド ピンを RPI の GND ピンに接続します。
DHT-11 の信号ピンを RPI の GPIO 04 ピンに接続します。
⏺ ソフトウェア設定
次の図のようにノードをドラッグして接続します。
① Common内の[timestamp]ノードをドラッグし、間隔を3秒ごとに設定します。
② [ rpi-dht22 ] ノードを Raspberry Pi 内にドラッグ&ドロップし、信号ピンを GPIO 04 に設定します。
③ データ関数を設定します。温度は空白のままにし、湿度関数を msg.payload=msg.humidity として設定します。
④ ゲージの表示設定:ラベル、範囲、単位、色の設定。
⑤ チャートの表示設定:xy軸の範囲と単位を設定します。
⑥ [layout]をクリック ⇨ ダッシュボードのレイアウトを調整します。
⑦ [Deploy] をクリックした後、ダッシュボードに移動して温度と湿度のグラフを確認します。
5. GPIO デバイスのタイマーを設定する
タイマー ノードを使用すると、タイマーをすばやく作成できます。 Node-RED ダッシュボードのボタンをクリックしてタイマーを開始し、GPIO デバイスをオンにします。時間が経過すると、GPIO デバイスは自動的にオフになります。
⏺ ハードウェアの設置
青色 LED を Raspberry Pi の GND ピンと GPIO24 ピンに接続します。
⏺ ソフトウェア設定
右図のようなフローを設計します。
① 'button' ノードをドラッグし、そのpayloadをtrueに設定します。
② GPIOデバイスのピンを設定し、初期値が0であることを確認します。
③ GPIOデバイスのピンを設定し、初期値が0であることを確認します。
④ LEDノードの表示色と値を設定します。
⑤ gaugeノードをcompassとして設定し、タイマーの読み取り値をカウントダウンします。
⑥ [layout]ボタンをクリックしてダッシュボードのレイアウトを設計し、[Deploy]をクリックして適用します。
⑦ ボタンをタップして青色の LED とタイマーをオンにし、LED は 60 秒後にオフになります。
6. スライダーでLEDの明るさを調節
スライダー・ノードは制御アイテムで、GPIO電流の入力を制御するために使用できます。LEDライトの明るさを制御するスライダーを設計します。
⏺ ハードウェアの設置
緑色の LED を RPI の GND および GPIO 12 ピンに接続します。
⏺ ソフトウェア設定
右図のようなフローを設計します。
① [timestamp] ノードをドラッグし、payloadを 0 に設定します。
② ノードをドラッグ → ラベルと範囲を0~255に設定します。
③ GPIO 出力ノードのピンを GPIO 12 に設定し、タイプを PWM 出力として選択します。
④ gaugeノードの表示を設定します。
⑤ これらのノードをすべて新しいグループ - スライダーに設定します。[layout]をクリックしてダッシュボードのレイアウトを設計します。
⑥ [Deploy] をクリックした後、スライダーをタップして移動し、緑色 LED の明るさを変更します。
7. まとめ
Node-REDプロセスが開発されたら、Terminalで以下のコマンドを入力し、Raspberry Piが起動時に自動的にNode-REDを実行するように設定します。
sudo systemctl enable nodered.service
起動後、ブラウザを開いてNode-RED ウェブサイトをクリックするだけで、センシングデータを表示し、デバイスのオン/オフをすぐに制御できます。
Node-REDでタッチパネルのグラフィカルユーザインタフェースを開発するのは簡単で楽しいです。プロフェッショナルなタッチGUIダッシュボードを試して、あなたのクリエイティブなプロジェクトに多くのポイントを追加しましょう!