Node-REDをRaspberry PにインストールしてLEDとセンサーを動かす

Node-REDとは、ノードと呼ばれる部品を接続していくことで、視覚的にプログラミングできるツールです。HTTPやメール、クラウド、SNSと連携できる機能もあり、IoTデバイスの開発にも適しています。本記事ではRaspberry Pi(ラズパイ)へNode-REDのインストールし、LEDやセンサーを動かす方法を実例を使って解説しています。

更新日 : 2020年9月3日

Node-REDとは

Node-REDとは、ノードと呼ばれる部品を接続していくことで、視覚的にプログラミングできるツールです。ブラウザーで操作するので場所や環境を選ばず、実行もボタン1つでできます。プログラミング入門や素早い開発に最適です。

HTTPやメール、クラウド、SNSサービスと連携できるノードもあらかじめ用意されてるので、IoTデバイスの開発にも適しています。Raspberry PiではGPIO端子にアクセスすることでセンサーやハードウェアの制御も可能です。

例えば、HTTP経由でリモートでRaspberry Piをコントロールしたり、センサーの測定値をクラウドやSNSに投稿するような応用が考えられます。

Node-REDのインストール

本記事は、Raspberry Pi OS version 2020/5/28での手順となります。

Node-REDをインストールするには、以下のコマンドを実行します。なお、左上メニューの「プログラミング」内にNode-REDがあれば既にインストール済みです。

sudo apt install nodered

Node-REDの起動

Node-REDを起動するには、左上メニューの「プログラミング -> Node-RED」をクリックします。

すると、ターミナルが開いてNode-REDが起動します。最初の方で表示されるアドレスにブラウザーでアクセスすることで操作するので、メモしておきます。

次にブラウザーを開いて、先ほど表示されていたアドレスにアクセスします。Node-REDの画面が表示されれば成功です。Raspberry Pi上のブラウザーでも良いですし、同じLANに接続されているPC(パソコン)上のブラウザーからでも接続できます。

GPIOからLEDを点灯、消灯する

使い方の簡単な例として、GPIOに繋がっているLEDを点灯、消灯させるフローを作成してみましょう。LEDを搭載している拡張基板「RPi TPH Monitor」もしくは「RPZ-IR-Sensor」を利用します。

RPiTPH Monitor拡張基板
RPZ-IR-Sensor拡張基板

まず、左のノード一覧(パレット)から、共通グループにある「inject」ノードを2つ真ん中のフロー画面にドラッグ&ドロップします。

次に、左のパレットから、Raspberry Piグループにある「rpi gpio out」ノードを真ん中のフロー画面にドラッグ&ドロップします。

以下のように配置し、1つめのinjectノードをダブルクリックして編集します。

ペイロードの選択肢をクリックして、種類を数値に変更します。

次にペイロードの値に「0」を入力して「完了」をクリックします。

もう一つのinjectノードについても同様の手順で編集し、こちらは「1」を設定します。

最後に、injectノードとrpi gpio outノードを以下のようにドラッグ&ドロップで接続します。これは、0と1の出力をGPIOに接続することを意味しています。0がGPIOのLOW出力(LED消灯)、1がHIGH出力(LED点灯)に対応しています。

次に、rpi gpio outノードをダブルクリックして編集画面を開き、GPIOの番号(どのピンを操作するか)決めます。各製品のLEDが接続されているGPIO番号は以下のとおりですので、いずれか1つを選んで下さい。なお、GPIOXXのXXの部分がGPIO番号です。ピン番号も併記されているので注意して下さい。

GPIOLED
GPIO5
GPIO6
RPiTPH MonitorのGPIO番号
GPIOLED
GPIO17
GPIO18
GPIO22
GPIO27
RPZ-IR-SensorのGPIO番号

今回の例はRPZ-IR-Sensorの白色LEDを使うため、GPIO27を指定しました。わかりやすくするためにノードに名前を付けています。以下が完成したフローです。

では作成したフローを動かしてみます。右上の「デプロイ」をクリックします。

デプロイするとinjectの左のボタンがクリック可能になります。0ノードをクリックするとLEDが消灯、1ノードをクリックするとLEDが点灯すれば成功です!

RPZ-IR-Sensorで動作中の様子

TSL2572センサーから明るさを取得する

次の例として、スイッチを押したらTSL2572センサーから明るさを取得するフローを試してみます。TSL2572センサーを搭載しているのは、拡張基板「RPZ-IR-Sensro Rev2」となります。

なお、「RPi TPH Monitor」および「RPZ-IR-Sensor」に搭載されているBEM280センサーも同様の手順で動かすことができます。センサーのノードをBME280のものに置き換えてください。

まず、TSL2572センサーのノードを利用できるようにパレットに追加します。デプロイの右にあるボタンを展開して、「パレットの管理」をクリックします。

タブから「ノードの追加」をクリックします。次にその下にある検索バーにtsl2572と入力します。するとnode-red-contrib-tsl2572がヒットするので、「ノードを追加」ボタンをクリックします。その後、確認画面で再度「追加」をクリックするとインストールされます。(BME280センサーの場合はBME280で検索してインストールして下さい)

下のように、「rpi gpio in」、「switch」、「tsl2572」(もしくはBME280)、「debug」を順に接続したフローを作成します。各ノードのプロパティは以下で解説します。

rpi gpio in

スイッチとGPIO番号の対応関係は以下のとおりです。

GPIOスイッチ
GPIO22SW1
GPIO23SW2
GPIO24SW3
RPi TPH MonitorのGPIO番号
GPIOスイッチ
GPIO5スイッチ赤
GPIO6スイッチ黒
RPZ-IR-SensorのGPIO番号

また、抵抗は「プルアップ」を選択します。回路上スイッチが押されるとLOWに接続されますが、スイッチが押されない場合はどこにも接続されず入力が決まりません。こういう場合にHIGHにつなぐようにするのがプルアップの設定です。

switch

ルール設定で、「==」を選択し、値は数値の0を設定して下さい。これは0に一致したときだけ次のノードに送信する動作を指定しています。

rpi gpio inはスイッチが押されると0が、離されると1が出力されますが、switchノードにより、0のときだけセンサーから値を取得します。

逆に言えば、switchノードが無いとスイッチを押したときと離した時の両方、センサーから値を取得する動作になります。

tsl2572

tsl2572のプロパティはデフォルトのままで構いませんが、太陽光が当たるなど非常に明るい場合はGainを下げ、非常に暗い場合は逆にGainを上げると良いです。

各ノードのプロパティ設定が終わったら、実際に動かしてみます。「デプロイ」をクリックし、その下のデバッグボタンをクリックします。すると、debugノードに入力されたデータを表示することができます。

スイッチを押した後、デバッグメッセージにセンサーの値が表示されれば成功です!以下の例では明るさが約71ルクスであることが分かります。

まとめ

Node-REDのインストールし、実際にLEDやセンサーを使用する方法は異常です。今回はデバッグメッセージにセンサーの値を表示しましたが、実際には他のノードと組み合わせることで、ファイルに記録したり、サーバーに送信したりといった応用も可能です。

また、今回と同様の手順でBME280センサーから気温、湿度、気圧を取得することも可能です。ぜひ試してみて下さい。

RPZ-IR-Sensor (Raspberry Pi用 温度/湿度/気圧/明るさ/赤外線 ホームIoT拡張ボード)

動作を自由にプログラミング可能な、Raspberry Pi/Zero(ラズパイ)用ホームIoT拡張ボードです。BME280温湿度気圧センサーとTSL2572明るさセンサー、赤外線送受信機能を搭載。IoT赤外線リモコンとして、温度が上がったらエアコンをオンにする、暗くなったら照明を点灯する、スマホ経由でテレビの操作をする、気温の記録、といった使い方が可能です。

RPi TPH Monitor Rev2 (Raspberry Pi用 温度/湿度/気圧/赤外線 ホームIoT拡張ボード)

動作を自由にプログラミング可能な、Raspberry Pi(ラズパイ)用ホームIoT拡張ボードです。BME280温湿度気圧センサーと赤外線送受信機能を搭載。IoT赤外線リモコンとして、温度が上がったらエアコンをオンにする、スマホ経由でテレビの操作をする、気温の記録、といった使い方が可能です。ディスプレイやLEDに情報表示も可能です。

PythonとpigpioでRaspberry Piの赤外線制御 (家電、エアコン、照明、テレビなどを制御するホームIoT)

Pythonとpigpioを使ってRaspberry Piで赤外線の送受信を行う方法について解説しています。サンプルプログラムを用意しているので、簡単に受信、登録、送信動作をさせることができるほか、データ解析も可能です。赤外線を使ってエアコン、照明、テレビなどの家電を制御することが可能になります。