Windows でnode-REDを使ってIoT (1) インストール

Windowsマシンには自由に使えるI/Oがない

 現在のPCには、セントロニクス・パラレルのプリンタ・ポートやRS232Cの制御信号を含む非同期シリアル・ポートは外部に出ていません。もともと、PCにはユーザが勝手にON/OFFできるI/Oはありませんでした。古くは、PCでユーザがプリンタ・ポートを勝手にプリンタのインターフェースでなく、単にI/Oとして利用した歴史があります。

 しかし、工夫次第で、たくさんのI/Oをプログラミングできる環境を整備できます。

 IoTで注目されているnode-REDはプログラムをコーディングせずに、プログラムを作れる環境です。筆者のところでは次の環境で動いています。

  • ラズパイ(ARM版)
  • ラズパイ(Intel版)
  • IOT2020(シーメンス。Galileo2)
  • Windows 10


 ラズパイ(ARM版)は40ピンのGPIOが、IOT2020はArduinoと同じI/Oが利用できます。

 ここでは、Windows10が動いているPCにI/Oを付け足します。I/OにはArduinoを利用します。USBポートがあれば、I/Oが利用できるわけです。

node-REDをWindowsにインストール

 2017年2月の時点のインストール方法です。

 node-REDのインストールを説明したページに行きます。

https://nodered.jp/docs/getting-started/installation

 パッケージ版を利用します。

 画面の一番下に、インストーラのリンクがあります。

 右側のバージョンをダウンロードしました。

 ダウンロードしたファイルをダブルクリックしてインストールします。


 node.jsがインストールされました。node-REDではありません。

 管理者としてPoweshellを起動します。

 npmというnode.jsのコマンドを使って、node-redをインストールします。

npm install -g node-red

 ワーニングが出ますが、最後にインストールしたプログラムのtreeが表示されたらOKです。

 node-redを起動します。「yoshidawin」は利用しているユーザ名に変更してください。

PS C:\WINDOWS\system32> node C:\Users\yoshidawin\AppData\Roaming\npm\node_modules\node-red\red.js

 node-REDが動作しているPCに対してWebブラウザでアクセスします。近くにあるWbeブラウザなら、どのマシンでもアクセスできます。プログラム環境がWebブラウザです。URLには、IPアドレスとポート番号1880を入れます。node-REDをインストールしたPCのIPアドレスが192.168.1.1であれば、「http://192.168.1.1:1880」です。

 画面にはテストのために動かしたinjectとdebugノードが見えますが、無視してください。

Arduinoにfirmataをインストール

  Arduino IDEは1.8.1を使います。今回は関係ありませんが、このバージョンからSDライブラリが復活しています。ArduinoとUSBケーブルでつなぎ、COMポートを確認しておきます。

 スケッチの中からStandardFirmataを選び、Arduinoに書き込みます。Arduino UNOを使っています。ArduinoにFirmataがインストールされると、Arduino自体は透過な存在(ブリッジ)になり、USB-シリアルがつながったホストからArduinoのI/Oを制御できます。

I/Oを利用する

 node-REDにfirmataを利用するノード(プログラム・モジュール)を追加します。画面右上にある設定アイコンを押します。プルダウン・メニューが表示されるので、「処理ノードの追加削除」をクリックします。日本語のメニューは0.16.1のバージョンからです。今回インストールされたのは、0.16.2でした。

 画面左に、インストール済みノード一覧が出ます。「処理ノードを追加」タブを押し、「firmata」でノードを検索します。二つ出てきました。上に出ているのをインストールします。インストールは、右下にある「処理ノードを追加」をクリックします。

 完了を押すと、ノードが追加されています。

 同様にもう一つのfirmataノードをインストールします。このノードはArduino専用です。先にインストールしたのは、複数のマイコン・ボードに対応しています。

 そのまま二つあるArduinoノードの下のほう、出力用を真ん中の広いエリアであるパレットにドラッグ(1)して離します。落っこちると名称が「Pin」に変わりますが、これを設定したいので、ダブルクリック(2)します。鉛筆のアイコンをクリック(3)します。

 Arduinoと通信を行うCOMポートを指定します。COM1は無視し、ArduinoがPCにつながっていれば、それ以外の仮想シリアル・ポートが表示されるはずです。ここではCOM11でした。

 純正のArduino UNOは、USBドライバは自動認識されます。数百円で販売されているコンパチブル品はCH340のようにドライバを自分で入れないと動作しない製品があります。ArduinoはTTLレベルの非同期シリアル通信でプログラムの読み書きをします。したがって、接続はCOMポートが使われます。

 Lチカをやりたいので、ディジタルで7番ピンにLEDをつなぐ設定にしました。

 COM11は、Arduino IDEでも確認できます。

 injectとdebugのノードを追加します。

 timestamp(inject)とPin:7のノードも結びます。右上にある「デプロイ」をクリックすると、プログラムが完了します。情報が見たいので、右側の欄のdebugタブを押しておきます。ここには、debugノードから、情報が表示されます。名前のとおり、デバッグに使います。

 デプロイすると、Pin:7のノード・アイコンの下に青色でconnectedと表示されます。そうでないときは、どこかで接続が切れています。

 timestamp(inject)をダブルクリックして、Payloadをnumberを選び、数字の「1」を入れます。node-REDは、メッセージをノード間で伝えていきます。メッセージというのは、Payloadを始め、いろいろなテキストや数値データです。

 完了を押し、デプロイします。1(injectの名前が変わった)のノードの左にあるボタンをクリックします。すると、画面右のdebugに「1」とメッセージの内容が表示されます。

 1(inject)ノードからはArduinoのノードも接続されているので、Arduinoの7番ピンにLEDがつながっていると、点灯します。写真は、抵抗内蔵のLEDです。足の長いほうのアノードを7番に、カソードをGNDにつないでいます。

Lチカに修正

 Lチカは「LEDチカチカ」の省略した言い方です。LチカしかできないのにIoTとは笑止千万という人がいますが、動いてなんぼの世界です。

 triggerノードをドラッグします。配線の上に載せると破線になります。

 そのままドロップします。

 toriggerノードをダブルクリックします。デフォルトのままで、次に進みます。

 1(inject)ノードをダブルクリックして、Repeatをintervalに変更します。1秒はデフォルトのままです。

 この1(inject)ノードは、1秒ごとに、1というメッセージを送るようになります。受け取ったtriggerノードは、1を送った250ms後に0を送ります。送り先はPin:7です。

 その結果、LEDが点滅し、Lチカが完成しました。

購入先。USBケーブルは手元にあったのを流用。

【永久保証付き】Arduino Uno
抵抗内蔵5mm赤色LED(5V用)