ブロックを積みながら(74) Node-RED、rpi-gpioをDashboard接続

Joseph Halfmoon

前回、ラズパイに接続したIO ExpanderをNode-REDダッシュボードから制御できるようにしました。今回は以前に rpi-gpio in/out ノードを使ってNode-REDのフローから直接操作できるようにしてあった LEDとプッシュスイッチをダッシュボードに接続してみます。でも回路をずるしてるんだ、これが。

※「ブロックを積みながら」投稿順 index はこちら

※Node-REDは Raspberry Pi 3 model B+ (Raspberry Pi OS, 32bit)上で動作させています。

以前、プッシュスイッチをNode-REDで読み取れるようにした回は以下です。

ブロックを積みながら(71) Node-RED、rpi-gpio in ノード

また、青色LEDを点灯/消灯制御できるようにした回は以下です。

ブロックを積みながら(70) Node-RED、rpi-gpio out ノード

どちらもNode-REDと外部ハードの接続確認はしましたが、Node-REDのエディタ画面からの直接操作で、外部のブラウザ画面に表示できるダッシュボードからの操作ではありませんでした。今回はNode-REDダッシュボードにプッシュボタンのステータス表示機能と、LEDの点灯、消灯制御を加えたいと思います。

なお、心が咎めている件を先に書いてしまいます。上記の過去記事では、プッシュスイッチ、LEDとも、GPIO線はフォトカプラを使って「絶縁」した状態で接続していました。今回もフォトカプラを使った回路の先に取り付けられているのは変更していないのですが、前回のIO Expanderと共通の外部電源に接続してしまっています。IO ExpanderとラズパイはGND共通なので、折角の「絶縁」失われてます。そういう接続でも動くし。。。ボードの面積をケチりたかったのよ。いや配線がメンドイだけか。

LEDの点灯、消灯制御

以下は以前のフローです。Injectノードから送られた値をGPIO05に送ってLEDを制御するもの。

RPiOUT_OLD

今回「ダッシュボード化」したフローが以下に。Injectノードの代わりに「Dashboardの」switchノードを置きました(Dashboardでないswitchノードも存在するのでご注意を。)ただ、switchノードのままでは真偽値送信なので、ことさらにchangeノードを直後において、真偽値を数値にすり替えています。こんな感じ。

RPiOUT_NEW

ことさらなchange設定は以下です。

RPiOUT_CHANGE

外部のブラウザからNode-REDダッシュボードをひらき、Raspberry Pi 3のタブへ行くと以下のような表示です。左下の BLUE LEDと書いてあるスイッチをONすれば、青色LEDが点灯、OFFすれば消灯しますです。当たり前か。

DASHBOARD_ON

プッシュスイッチの状態読み取り

以前のフローは以下です。rpi-gpio inノードでGPIO06端子を見張り、スイッチの状態が変化したときだけmsgパケットが後段に流れるようにフィルタをかけてました。ステータス確認はデバッグウインドウです。

RPiIN_OLD

今回は、デバッグウインドウに表示していたステータスをDashboard上のGaugeノードに付け替えただけです。

RPiIN_NEW

gaugeノードの設定は以下に、Levelメータにしてあります。

RPiIN_GAUGE

レベルメータは0と1だけの処理ですが、ボタンを押すと0に向かってレベルが下がるアニメーションが入り、ボタンを離すと1に向かってレベルが上がるアニメーションが入ります。ちょうど人間のボタン操作にマッチした速度?で動いてくれるので、いい感じです。なお、ボタンはプルアップされていて離すと1、押すと0が読めるので表示値は信号線のレベルそのものです。

DASHBOARD_0

ちょっと接続ずるしたけど、ま、ダッシュボードにつながってスッキリした?

ブロックを積みながら(73) Node-RED、Execした結果をDashboardに表示 へ戻る

ブロックを積みながら(75) Node-RED、completeノードで「ちょい足し」 へ進む