Windows でnode-REDを使ってIoT (1) インストール
■Windowsマシンには自由に使えるI/Oがない
現在のPCには、セントロニクス・パラレルのプリンタ・ポートやRS232Cの制御信号を含む非同期シリアル・ポートは外部に出ていません。もともと、PCにはユーザが勝手にON/OFFできるI/Oはありませんでした。古くは、PCでユーザがプリンタ・ポートを勝手にプリンタのインターフェースでなく、単にI/Oとして利用した歴史があります。
しかし、工夫次第で、たくさんのI/Oをプログラミングできる環境を整備できます。
IoTで注目されているnode-REDはプログラムをコーディングせずに、プログラムを作れる環境です。筆者のところでは次の環境で動いています。
|
ラズパイ(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ケーブルは手元にあったのを流用。