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

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

Raspberry Pi OS Version 2021-05-07対応

Raspberry Pi OS Bullseye (2021-10-30)だと、Node-REDからGPIOへうまくアクセスできない問題を確認しております。Buster (2021-05-07)以前の使用を推奨します。

更新日 : 2021年11月26日

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センサーから気温、湿度、気圧を取得することも可能です。ぜひ試してみて下さい。

PythonでRaspberry PiのGPIO、LED、スイッチ制御

Raspberry Pi(ラズパイ)では、GPIOを通じて電気信号を送受信することで、様々なデバイスを制御することができます。本記事では、基本的なLEDとスイッチについて、Pythonプログラムで制御する方法を解説します。LEDにステータスを表示させたり、スイッチが押されたら何らかの動作をさせるなど、自分が好きなように動作をプログラミングすることが可能になります。

BME280センサーとRaspberry Piで気温、湿度、気圧を測定する

Indoor Corgiのセンサー制御ソフトウェア「cgsensor」を利用して、BME280センサーで気温、湿度、気圧を測定する方法を解説します。コマンドラインツールを使って1行もコードを書かずに測定や記録ができるほか、Pythonパッケージを使えばご自身のプログラムから簡単にセンサーを制御できます。

TSL2572センサーとRaspberry Piで明るさ(照度)を測定する

Indoor Corgiのセンサー制御ソフトウェア「cgsensor」を利用して、TSL2572センサーで明るさを測定する方法を解説します。コマンドラインツールを使って1行もコードを書かずに測定ができるほか、Pythonパッケージを使えばご自身のプログラムから簡単にセンサーを制御できます。

SCD41 CO2センサーとRaspberry Piで二酸化炭素濃度を測定する

Indoor Corgiのセンサー制御ソフトウェア「cgsensor」を利用して、SCD41 CO2センサーで二酸化炭素濃度を測定したり、センサーの校正や設定を変更する方法を解説します。コマンドラインツールを使って1行もコードを書かずに測定や記録ができるほか、Pythonパッケージを使えばご自身のプログラムから簡単にセンサーを制御できます。