- 前提条件
- 必要なコンポーネント
- RaspberryPiへのNode-REDのインストール
- RaspberryPiでNode-REDを起動
- Node-REDインターフェースを理解する
- 回路図
- Node-REDでフローを作成する
- RaspberryPiを使用したNode-REDインターフェースでのプッシュボタン/スイッチの追加
コードを書くのに何日も費やすことなくIoTソリューションの簡単なプロトタイプを作成する方法や、コーディングなしで実用的な高度なプロジェクトを構築する方法があるかどうか疑問に思ったことはありません。はい、これはNode-Redプラットフォームで可能です。IBMによって開発されたNode-REDは、ハードウェアデバイス、API、およびオンラインサービスを新しく興味深い方法で相互に接続するためのオープンソースプログラミングツールです。ワンクリックでランタイムにデプロイできるパレット内の幅広いノードを使用して、「 フロー」 を簡単に結び付けることができるブラウザーベースのエディターを提供します。
Node-REDは、プログラミングコンポーネントを簡素化することを目的として、モノのインターネット(IoT)アプリケーションを構築するための強力なツールです。
これは、ノードと呼ばれるコードブロックを接続してタスクを実行できるようにするビジュアルプログラミングを使用します。今日のチュートリアルでは、Node-REDを使用してラズベリーパイに簡単なプロジェクトをデプロイする方法を検討します。ラズベリーPIノード赤チュートリアルをカバーします。
- RaspberryPiへのNode-REDのインストール。
- Node-REDユーザーインターフェイスの概要
- Node-REDフローの設定方法
- Node-REDでRaspberryPiGPIOピンを制御する方法
- Node-RED入力、出力、およびif-elseのようなスイッチを使用した意思決定の使用方法
前提条件
このチュートリアルは、RaspbianストレッチOSに基づいており、Raspberry Piのセットアップに精通しており、パテなどの端末ソフトウェアを使用してPiにSSH接続する方法を知っていることを前提としています。これに問題がある場合は、このWebサイトに役立つRaspberryPiチュートリアルがたくさんあります。
チュートリアルを簡単に完了するために、ラズベリーパイに接続されたモニターを使用するか、VNCビューアーソフトウェアを使用することをお勧めします。モニターがなく、Piを使い始めたばかりの場合は、このヘッドレスRaspberry Piのセットアップを読んで、このチュートリアルを進めることができます。Node-RedはWebブラウザーから実行され、PiのIPアドレスを介してPiが接続されているPCでアクセスできますが、VNC /モニターエクスペリエンスによってより良いハングアップが得られると思います。
Node-Redがどのように機能するかを示すデモとして、Node-REDを使用してRaspberry PiをプログラムしてGPIOに接続されたLEDを制御し、後でプログラムを変更して、Piに接続された触覚プッシュボタンからLEDを制御できるようにします。 GPIO。
必要なコンポーネント
このプロジェクトをビルドするには、次のコンポーネントが必要です。
- Raspbian StretchPreloadedがプリロードされたSDカードを搭載したRaspberryPi 3
- 100オームの抵抗器(1)
- LED(1)
- ブレッドボード(1)
- オス-メスジャンパー線
- 触覚押しボタン(1)
RaspberryPiへのNode-REDのインストール
Node-RedはRaspbianStretch OSにプリインストールされていますが、最新の機能を利用するには、アップグレードする必要があります。ノードのアップグレード-赤は
- 既存のユーザーをLTS8.xまたは10.xNode.jsおよび最新のNode-REDにアップグレードします
- グローバルにインストールされている既存のノードをユーザー〜/.node-redスペースに移行して、パレットマネージャーで管理できるようにします。ユーザーがインストールした既存のノードは更新されません。これは、ユーザーが手動で行う必要があります(以下を参照)。
- オプションで、完全なRaspbianPiイメージにプリインストールされている追加のノードを(再)インストールします。
ただし、Node-Redをアップグレードするプロセスは、新しいものをインストールするのと似ているため、このチュートリアルでは、他のOSバージョンを使用しているユーザーがフォローできるように、新しいインストールのように扱います。
以下の手順に従って、RaspberryPiにNode-REDをインストール/アップグレードします。
私たちは、アップグレードやパイを更新することにより開始した日付と回避の互換性の問題まであり、それ上のすべてを確実にするために、。これを行うには、ターミナルを開くか、sshを使用して、実行します。
Sudo apt-get update
に続く
sudoapt-アップグレードを取得
これが完了したら、ターミナルで以下のbashスクリプトを実行します。
bash <(curl -sL
bashスクリプトは、次のことを行います
- 追加のPiノードを(再)インストールするかどうかを尋ねます
- / usr / lib / node_modulesにあるグローバルにインストールされた node-red- ノードのリストを保存します
- apt-get既存のノードを削除-赤
- / usr / binおよび/ usr / local / binからnode-redバイナリを削除します
- / usr / lib / node_modulesおよび/ usr / local / lib / node_modulesからnode-redモジュールをすべて削除します
- Node.jsがNode.jsパッケージまたはDebianからインストールされたかどうかを検出します
- v8以降でない場合-必要に応じて削除し、最新のv8またはv10 LTSをインストールします(aptを使用しない)。
- npmキャッシュと.node-gypキャッシュをクリーンアップして、以前のバージョンのコードを削除します
- Node-RED最新バージョンをインストールします
- 以前にグローバルにインストールされたノードをユーザーアカウントで再インストールします
- 必要に応じて、追加のPiノードを再インストールします
- すべてのノードを再構築します-最新のNode.jsバージョンに一致するようにバイナリを再コンパイルします
- node-red-start、node-red-stop、およびnode-red-logコマンドを/ usr / binに追加します
- メニューのショートカットとアイコンを追加する
- システムスクリプトを追加し、ユーザーを設定します
- Piの場合は、CPU温度を追加します-> IoTの例
上記のbashスクリプトは、sudoとして多くのコマンドを実行し、既存のNode.jsとコアNode-REDディレクトリを削除します。スクリプトを実行する前に、このGitHubページでスクリプトの内容をチェックして、Piに既にあるプロジェクトに影響がないことを確認できます。
インストールが完了すると、メニューのプログラミングアプリリストの下にNode-Redアイコンが表示されます。
RaspberryPiでNode-REDを起動
Node-Redは、ラズベリーパイのデスクトップからメニューセクションを介して、ターミナルを介して、またはsshを介して起動できます。
ラズベリーパイのデスクトップで起動するには、ラズベリーアイコンをクリックし、プログラミングにマウスを合わせてNode-RED([メニュー]> [プログラミング]> [NodeRed])をクリックして起動します。
実行することにより、sshまたはターミナルから起動することもできます。
node-red-start
以下のようなウィンドウが表示され、デスクトップにノードの赤い起動が表示されます。
これが表示されたら、 menu-> internetに 移動し、chromiumWebブラウザを起動し ます。Raspberry piはNode-Redを実行するためにインターネットを必要としませんが、インターフェースとしてブラウザーを使用します。
クロムが起動し たら 、アドレスバーに localhost:1880 と入力し、続いてEnterキーを入力します。1880は、Node-Redが通信するように事前設定されているラズベリーパイのポートです。これにより、次の画像に示すようにNode-Redインターフェースが表示されます。
Node-REDインターフェースを理解する
ノードレッドインターフェースを含むフローパネル、ノードパレット、デバッグコンソールと情報コンソール上の画像で強調表示されます。
フローパネルは、ノードは、ノード赤色でフローと呼ばれるプログラムを作成するために一緒に結合されるが、あるノードパレットは、デバイスに関連する特徴ハードウェア、プロトコルおよびソフトウェアの代表であるオブジェクトの備えます。これには、IoT用のMQTTなどのプロトコル、およびラズベリーパイなどのボード用のGPIO出力および入力モードが含まれます。インフォコンソールは、一方で強調表示/選択したオブジェクトに関する情報を提供してデバッグコンソールArduinoシリアルモニターと同じように機能し、フローの実行中にフィードバックを提供できます。デプロイボタンは、フローをターゲットハードウェアにアップロードするために使用されます。メニューボタンには、プロジェクトを最大限に活用するのに役立つさまざまなアップロードタイプが含まれています。Node-Redを起動して実行すると、デモプロジェクトのビルドに進むことができます。
回路図
紹介で述べたように、今日のデモプロジェクトは、Node-REDフローを使用してRaspberryPiのGPIOを制御することです。GPIOの状態の変化を示すために、特定のGPIOピンがオンになるとLEDがオンになるように、またはその逆になるようにLEDをGPIOに接続します。
以下の回路図に示すように、LEDをRaspberryPIに接続します。
また、ブレッドボード、LED、抵抗器、およびいくつかの接続線を使用して、ハードウェア上で同じものを構築します。接続が確立されると、ハードウェアのセットアップは次のようになります。
このプロジェクトは、LEDをリレーやACアプライアンスに置き換えるだけで、簡単にホームオートメーションプロジェクトに変換できます。さまざまなホームオートメーションプロジェクトを実行して、その方法を学びます。
Node-REDでフローを作成する
LEDを接続すると、フローの開発に進むことができます。NodeRedのプログラムは、Arduino IDEがスケッチと呼ぶのと同じように、フローと呼ばれます。フローは、ノードの組み合わせを使用して作成されます。すべて同時に実行できる複数のフローを作成できますが、このチュートリアルでは、LEDをオン/オフにする単一のフローを作成します。
まず、[ノード]パレットの一番下までスクロールすると、最後に向かってrpigpioというラベルの付いた2つのノードがあるラズベリーパイノードセクションが表示されます。これらのノードは、ラズベリーパイのGPIOとの通信に使用されます。ノードの1つは入力用で、もう1つはラズベリーパイのロゴの位置によって区別される出力用です。次の画像に示すように、入力ノードの場合、ロゴはテキストの前にあり、出力ノードの場合、ロゴはテキストの後にあります。
このチュートリアルでは、出力ノードを利用して、インターフェイスのフローセクションにドラッグします。この手順は、 pinMode() コマンドを使用してArduinoの特定のピンを出力として宣言するのと似ています。出力ノードをダブルクリックすると、以下に示すようなポップアップウィンドウが開き、ノードのプロパティを編集できます。
ピンプロパティセクションで、GPIO17(ピン11)を選択します。そして、「にtypeプロパティを設定し、デジタル出力」とカチカチ「初期化端子の状態を?」「ピンの初期レベル」オプションをロー(0)のままにしてチェックボックスをオンにします。ノードに任意の名前を付けて、[完了]ボタンをクリックします。
ノードの名前は、プロパティ設定で入力した名前に自動的に変更されます。たとえば、私はそれをLEDと名付けたので、ノード名も以下に示すようにLEDとして変更されます。
LEDをオン/オフにするには、アクションを駆動するための入力を使用する必要があります。プッシュボタンを使用することもできますが、これを使用して、フローにメッセージを挿入できるNode-REDの機能を紹介したいと思います。これらの機能は、注入ノードと呼ばれます。2つの注入ノードを使用します。1つはLEDをオンにし、もう1つはオフにします。
ノードパレットに移動し、注入ノードをフローにドラッグします。これはパレットの最初のノードであり、矢印が付いています。下の画像では、挿入ノードが強調表示されています。
それをダブルクリックして、そのプロパティを編集します。ペイロードの前にあるドロップダウンをクリックしてデータ型を文字列に変更し、[ペイロード]ボックスに1を入力します。ペイロードボックスの値は、ノードが押されたときにフローに注入される値です。ノード名を「ON」に設定「完了」ボタンを押して保存します。
以下に示すように、ペイロード値を「0」に設定し、その名前を「オフ」に設定して、2番目のノードについて上記を繰り返します。
プロパティ機能では、 繰り返し ドロップダウンを使用して注入を自動化できるため、ボタンが一定の間隔で押されます。これを使用して、まばたき効果を作成できます。以下に示すように、一方のノードの灰色の点をもう一方のノードにドラッグしてフローを作成することにより、ノードを結合します。
これで、最初のノードであるレッドフローが完成しました。
次のステップは、ラズベリーパイにフローをデプロイすることです。赤いデプロイボタンをクリックします。以下に示すように、画面の上部に「正常にデプロイされた」フラッシュが表示されます。
インジェクトノードの後ろにある灰色のボタンをクリックして、各ノードをアクティブにします。
「オン」注入ノードをクリックすると、正常に注入された「オン」が表示され、LEDが点灯します。「オフ」の注入ノードをクリックすると、LEDがオフになります。
それでおしまい。このセットアップの完全な動作は、このページの下部にリンクされているビデオで見つけることができます。
RaspberryPiを使用したNode-REDインターフェースでのプッシュボタン/スイッチの追加
入力要素をフローに接続/追加する方法を説明するために、押しボタンを追加して注入ノードを置き換えることにより、上記のフローをさらに進めます。
以下の回路図に示すように、押しボタンの一方の脚がアースに接続され、もう一方の脚がラズベリーパイのGPIOピン4(ピン11)に接続されるように、押しボタンをラズベリーパイに接続します。
これが完了したら、Node-Redに戻り、ノードをクリックしてキーボードのDeleteキーを押すか、ノードをダブルクリックしてポップアップウィンドウのDeleteキーを押して、前に使用した2つの注入ノードを削除します。それが完了したら、ノードパレットを下にスクロールしてラズベリーパイセクションに移動し、入力ノードを選択します。これは、ノード名の前の左側にラズベリーパイアイコンが付いているものです。
ノードをフローにドラッグし、ダブルクリックしてプロパティを編集します。ピンをGPIO4(ピン11)に設定し、抵抗の前のドロップダウンをプルアップに設定します。これにより、GPIO4がHIGHに「プルアップ」されます。プロパティを設定したら、[完了]ボタンをクリックします。
GPIO4を単にグランドに短絡するのではなく、スイッチが押されたときに論理的な決定を下せるようにするために、スイッチノードを使用します。ノードパレットの関数セクションで検索し、フローにドラッグします。
スイッチノードを使用すると、「if」ステートメントと同様の方法で決定を下すことができます。入力値に応じて異なる出力を持つように設定できます。このチュートリアルでは、2つの出力パスを使用して構成します。msg.payloadプロパティが1に等しい場合(スイッチが押されていない場合)、最初のパスをたどり、他の入力がある場合は2番目のパスをたどります。入力で1以外が観測されます(スイッチが押されます)。パスは「+追加」ボタンを使用して追加されます。ノードをダブルクリックして、上記のように構成します。終了したら、[完了]をクリックします。
[完了]ボタンを押すとすぐに、出力に2つのジャンクションがあるため、2つのパスがスイッチノードの見通しに反映されていることがわかります。
次に、「変更」ノードを取り込む必要があります。変更ノードは、引数ノードの結果に基づいてLEDの状態を設定するために使用されます。
2つの変更ノードを使用します。下の画像に示すように、最初のペイロードは0に設定され、2番目のペイロードは1に設定されます。両方のプロパティを編集した後、[完了]をクリックします。
説明をわかりやすくするために、プルアップ抵抗を使用したことを覚えていますか?したがって、ボタンが押されていない場合、そのピンの出力はHIGH(1)になります。つまり、スイッチノードを通過すると、LEDが「オン」になります。これは、そうではないはずなので、 「変更」ノードを使用して、LOW(0)として設定します。 2番目の「変更」ノードは値を1に設定するために使用され、GPIOピン4のHIGH状態以外が検出されると、押しボタンが押されたことを意味するため、LEDが「オン」になります。次の画像に示すように、変更ノードと残りのノードを接続します。
これで、プロジェクトをデプロイする準備が整いました。接続に目を通し、すべてが正常であることを確認してから、展開ボタンをクリックします。いつものように、成功すると、デプロイ成功ポップアップが表示され、スイッチを使用してLEDを制御できるようになります。
Node-Redを使用すると、コードを気にせずにビルドのプロトタイプを簡単かつ迅速に作成できますが、特にプログラムの柔軟性と制御を必要とする経験豊富な開発者にとっては、実際には最適ではない場合があります。それでも、数分でビルドのプロトタイプを作成できる優れたツールです。
次回まで!