ようやくNode-REDを使ってRaspberryPiのGPIOを操作したいと思います。
これまでやってきたことは、RaspberryPiでなくてもできますが、GPIOの使用に関しては少し特徴的な操作になるかなと思います。
これがやりたかった…
RaspberryPiにインストールしたNode-REDに含まれる特有のノード

RaspberryPiにNode-REDをインストールすると特有のノードも一緒にインストールされます。(バージョンによって入ってない場合もありますが、別途拡張ノードとしてインストールすることはできます)
rpiでノード検索のフィルタすると4つのノードが表示されます。

表示されるのは以下の4つになります。
- rpi-gpio(入力)
- rpi-gpio(出力)
- rpi-mouse(入力)
- rpi-keyboard(入力)
mouseとkeyboardはRaspberryPiのUSBに接続されたマウスやキーボードを入力として扱えるノードとなります。
今回はとりあえずLチカをしたいのでrpi-gpio(出力)を使います。

ノードを選択して、ワークスペースにドロップします。すると名称がPINに変更されます。

次にダブルクリックしてノードのプロパティを開きます。すると、以下の様なGPIOのピン一覧が表示されます。
最近老眼になってしまったので、こういうふうにコーディング時に表示されているととてもわかりやすい、便利です!

今回はGPIO-04 7を使用することにします。ラジオボタンの該当の位置をクリックして選択しておきます。また出力もデジタル出力のままにしておきます。
端子の状態は今回は設定していませんが、端子の状態を初期化にチェックしておいたほうが無難だと思います。
設定が終わったら【完了】ボタンをクリックします。

するとノードはGPIOのPIN設定が反映されて【PIN:7】と表示されます。

ワークスペースは以下のようになっていると思います。あとは実行に必要になるノードを追加していくことになります。

GPIOの入力のノードを使用してもいいのですが、もっと簡単に試すならinjectノードを使用するほうが楽に試すことができます。
ノードからinjectノードを選択し、ワークスペースに2つドロップします。

ワークスペースに2つノードをドロップし、

つづいて、実行結果をGPIO以外でも表示できるようにdebugノードを配置します。

以下のようにGPIOのoutputノード```の下辺りに配置しておきます。

これで必要なノードの配置が終わりました。あとは、これらのノードの端子を接続していきます。以下のように接続します。

あとはそれぞれのノードのプロパティを設定していきます。入力となるinjectノードはGPIOノードに数値の0と1入力するので、

まずペイロードのプルダウンを数値と変更して、

その値に0を入力します。設定が終わったら【完了】ボタンをクリックします。

もう一方のinjectノードは同じように操作し、値は1として設定し、【完了】ボタンをクリックします。

フローを見たときにノードの状態が以下のようになっていればOKです。

これで実行時にinjectノードをクリックすれば設定した数値が入力されるようになります。ここまでできたら【デプロイ】ボタンをクリックします。
これで準備完了です。
実行してみる
デプロイが成功したら、早速動作させてみましょう!

0を出力するinjectノードをクリックすると以下の様に表示されます。するとそれまでGPIOノードの下あたりにある表示がOKだったものが0と表示が変わります。

では、続いて1を出力するinjectノードをクリックすると、以下のように表示され、GPIOの下にある表示が1に変化します。

デバックの表示も同様に表示しています。

ソフト的には動作することがわかったのであとはLEDをRaspberryPiのGPIO7に接続してOKであることを確認します。
RaspberryPiにLEDを接続する
先程のプログラムを動作させるために、回路を以下の様に作ってみます。
必要になるものとしては
- 330Ωの抵抗 1本
- LED 1個
- ブレッドボード
- ブレッドボード用ジャンパーワイヤ2本
といったところです。これで以下のように組み立ててました。

実際にinjectノードを【1】の方をクリックすると点灯

【0】の方をクリックすると消灯

無事に動作しているようです。 ようやく自分がNode-REDでやりたかったことが達成できました!
injectノードの代わりにrpi-mouseを使用してみる
このまま終わっても良いのですが、もう少し別の機能も試してみたいと思います。
RaspberryPiの関連ノードでrpi-mouseを使用して、これをinjectノードの入力の代わりにしてみましょう。
ノードの一覧からrpi-mouseを選択し、

ワークスペースにドロップして配置します。

自分はこんな風にドロップしてみました。ノードの名称はドロップがされた段階でPi Mouse Leftという名称に変更されて、マウスの左ボタンの押下(1が出力)
と解放(0が出力)に紐付けられます。

ノードをダブルクリックするとその様子も確認できます。

後は、このノードを先程まで使用していたrpi-gpio出力ノードとdebugノードの端子に紐付けます。

後は【デプロイ】ボタンをクリックします。あとは実行をさせてみます。

マウスボタンを押し込むとLEDが点灯し、マウスのボタンから指を離すと消灯します。これでマウスをスイッチのように使用する事ができるようになりました。
おわりに
ようやくNode-REDを使用してLEDの点灯(Lチカ)を行うことができるようになりました。操作などから学んできましたがようやくという感じでしょうか。
ただ、Node-REDはGPIOの割当がGUIベースでわかりやすいのは非常に良い機能だなと思いました。あとは、他の機能などと連携させるとロジックの根幹を
作るにはいいプロダクトかなと思います。今後は拡張ノードも多くでているのでそれらをもう少し調べながら使ってみようと考えています。
次はカメラでしょうか?
【Node-RED 関連エントリ-】