ようやく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 関連エントリ-】