RaspberryPiのLチカ

ゲートウエイに使うRasberryPiのI/Oポートに対し、Node-REDの機能使ってLEDを点滅させる方法を紹介します。

RaspberryPiにインストールされているNode-REDには、I/Oピンを制御するノードが標準実装されていますので、この機能を使います。

 

(1)まず、I/Oピンに接続するLED+抵抗の回路を作成します。こちらの記事を参考にしてください。

 

 

 

回路図
装着した状態

(2)以下に示す事例を参考にNode-REDのフローを作成します。

・ノードの準備

Node-REDの画面左側のパレットでRaspberry Pi のノードが利用できる状態になっていることを確認してください。LEDを扱うには、「rpi – gpio out」ノードを使用します。

LEDの操作をするために、ここでは「inject」ノードを使用します。同じように、ノードが利用できる状態になっていることを確認してください。

injectノード2つと、rpi-gpio outノード1つを、左のように並べます。最初はノードの名称は左のようになっています。


次に、2つのinjectノードの出力(右側の端子)から、rpi – gpio outのーどの入力(左側の端子)にマウスでワイヤを接続します。

 

次に、injectノードのプロパティを編集していきます。

 

(1)まず、上側のinjectノードをダブルクリックしてプロパティ編集画面を開きます。

リストのmsg.payloadの右側のボックスのプルダウンメニューから「数値」を選んで、「1」を設定します。正しく設定できると左の図のようになります。

設定できたら「完了」を押します。

(2)同じように、下側のinjectノードも同様にプロパティ編集画面を開き、「数値」で「0」を設定します。

こちらも設定できたら「完了」を押します。

次に、rpi-gpio outノードのプロパティを設定します。

rpi – gpio outノードをダブルクリックしてプロパティ編集画面を開きます。

ここでは11番ピン(GPIO17)に接続された赤色LEDを使用しますので、「端子」のリストから「GPIO17 – 11」のボタンにマークを入れます。

下部のBCM GPIOには「17」がセットされます。
更に、以下の設定を行います。

・出力形式を「デジタル出力」に
・「端子の状態を初期化」をONに
・「端子の初期化レベル-High(1)」を選択

以上が設定できたら「完了」を押します。

ここまで進めていると、各ノードの表示は下記のようになっているはずです。

ここまで出来たら画面右上の「デプロイ」ボタンを押して、作成したフローの処理を開始します。

「1」の表示のinjectノードの左側のボタンをクリックすると、「数値」の「1」がrpi – gpio outノードに送られ、Raspberry piのピン11(GPIO17)の状態が「High」になります。このときLEDには電流が流れないので「消灯」します。

「0」」の表示のinjectノードの左側のボタンをクリックすると、「数値」の「0」がrpi – gpio outノードに送られ、Raspberry piのピン11(GPIO17)の状態が「Low」になります。するとLEDに電流が流れ始めるので「点灯」します。

0と1のinjectノードを操作して、LEDのON/OFFができることを確認してください。

 

(3)次に、LEDを点滅させるフローを作ってみましょう。

「機能」にある「trigger」ノードを使用します。

さきほど作成したフローを元に、「1」のinjectノードと「PIN:11」のrpi – gpio outノードの間に、triggerノードを入れて下記のようにワイヤーを接続します。(「0」のinjectノードは使用しません)

それではinjectノードのプロパティを変更していきましょう。

ウインドウ下部の繰り返し設定を修正します。

・「Node-RED起動の0.1秒後、以下を行う」をON
・繰り返しを「指定した時間間隔」に設定
・時間間隔を「0.5」秒に設定


injectノードに「繰り返しマーク」が付いているのが分かります。triggerノードはデフォルトで250msが設定されているので、このままデプロイしてみましょう。

これで赤色LEDが点滅しているのを見ることができると思います。
フローの動作としては、injectノードが0.5秒ごとに「1」を出力し続けますが、その次に挿入されたtriggerノードが「1」を受け取ったあと、250ms経過後に「1」を「0」に変化させて出力しますので、結果としてRaspberry Piに接続したLEDはONとOFFを繰り返すことになります。

更に、押しボタンを使ったケースについては別の記事を参照してください。