(1)準備
まずは画面左側にあるノードの一覧から、「Tibbo-Pi」カテゴリにある以下のノードをドラッグ&ドロップで配置します。
このノードはTibbo-Piを制御するために必ず必要なノードです。
※Tibbo-Pi P4では、シャットダウンフローに配置済みのため、新規での配置は必要ありません。
Flowエディタの任意の場所に配置したら、右上の「デプロイ」ボタンをクリックします。
これでTibbo-Piを制御するための準備ができました。
※エラーが起きる場合:tp initializeノードは一つだけ必要です。詳細はこちらをお読みください。
ちなみに「Tibbo-Pi」カテゴリのノードは、Tibbo-Pi専用のオリジナルノードです。
GitHubにApache2.0ライセンスでオープンソースとして公開しています。
https://github.com/cw-tpdev/node-red-contrib-tibbo-pi-p3/
(2)チュートリアル(温度センサ)
それでは、温度センサのブロック(Tibbit #29)を使って温度を取得し、Flowエディタの右側にある「デバッグ」タブに値を表示してみましょう。
Tibbitの配置
Tibbo-PiのSLOT1に「Tibbit #00-3」 、CON1に「Tibbit #29」を挿入します。
ノードの配置
Node-REDのFlowエディタに、以下の3つのノードを配置します。
*inputカテゴリに含まれるノード。イベントの起動条件の設定を行うノード。
*Outputカテゴリに含まれるノード。右端のデバッグタブに結果を表示させるノード。
ノードは、左側の一覧からドラッグ&ドロップで配置することができます。
配置すると「inject」ノードは「timestamp」に、「debug」ノードは「msg.payload」に自動的に変わります。
これは、それぞれのノードの初期設定が「日時」や「msg.payload」になっているためです。配置後、ダブルクリックすることで設定を変更することができます。
ノード間はドラッグで接続することができます。
以下のようにノードを配置し、接続してみてください。
次に、Tibbit #29ノードをダブルクリックし、ノードの編集画面を表示させます。
「スロット」のプルダウンから「S01」を指定し、右上の完了ボタンをクリックしてください。
これで「Tibbit #29」のブロックがSLOT1に挿入されていることをノードに設定することができました。
最後に右上のデプロイボタンをクリックします。
これで、温度を取得する準備ができました。
データの取得
「timestamp」ノードの左側、赤枠のボタンをクリックすると、「Tibbit #29」のブロックから温度が取得され、その取得結果が青枠のデバッグタブに値として表示されます。
息を吹きかけるなどすると、温度の値に変化が出るのが確認できると思います。
ここまでのまとめ
このように、
1:任意のTibbitブロックをTibbo-Piに挿入する。
2:Flowエディタに、必要なノードと挿入したTibbitブロックのノードを配置する。
3:TibbitブロックのノードSLOT番号の設定を行う。
4:任意の処理設定を行い、一連の処理(フロー)を作る。
5:デプロイする。
というのが、基本的なプログラミングの流れとなります。
(3)フローの読み込み・書き込み
作成したフロー(一連の処理)は、書き出しや読み込みができます。
上記チュートリアルを、下記の手順で書き出したり読み込んだりすることができます。
書き出し
書き出したいフローを選択します。
Node-REDのメニューより、書き出し→クリップボードをクリックします。
書き出しボタンをクリックします。
以下のようにフローがクリップボードへ書き出されます。
1 |
[{"id":"b802e302.d52b68","type":"inject","z":"f79c229d.089ba8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":240,"y":860,"wires":[["d2d3e100.88dbd"]]},{"id":"d2d3e100.88dbd","type":"Tibbit-#29","z":"f79c229d.089ba8","name":"","tpSlot":"S01","communication":"I2C","connectedStatus":"start","host":"","x":380,"y":920,"wires":[["da64b508.0cf6b8"]]},{"id":"da64b508.0cf6b8","type":"debug","z":"f79c229d.089ba8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":500,"y":980,"wires":[]}] |
読み込み
読み込みたいフローをコピーします。(例として先程書き出したフローをコピーします)
Node-REDのメニューより、読み込み→クリップボードをクリックします。
読み込みボタンをクリックすることで、フローを読み込むことができます。
(4)注意事項
「tp initialize」ノードは、必ず1つだけ配置する必要があります。
tp initializeノードを配置せずに、その他のノードを配置しデプロイすると、デバッグタブに以下のようなエラーが表示されます。
“err: (‘There is no setting: host:localhost slot:S01 comm:I2C’,)”
その場合、デバッグタブに以下のようなエラーが表示されます。
“err: There are multiple tp initialize.”
スロットの設定について
同じスロット番号に対して、別な種類のノードを指定することはできません。
これは設定ミスによるもので、スロットに挿しているTibbitブロックと同じノードを使用しているか確認してください。
その場合、デバッグタブに以下のようなエラーが表示されます。
“err: There is another setting on the same line. host:localhost slot:S01 line:A”
ピンの設定について
一つのスロットにはピンがA,B,C,Dと4つあります。これをラインと言います。
物理的には、Tibbo-PiのSLOTにある6つ(または5つ)のピン穴のうちの4つのピン穴とそれに接続されたブロックのピンの線のことを指しています。
このラインそれぞれに設定を行うことができます。
ただし、当然ですが同じスロットの同じピンに異なる設定を行うことはできません。
その場合、デバッグタブに以下のようなエラーが表示されます。
“err: There is another setting on the same line. host:localhost slot:S01 line:A”
次の例は、主に設定ミスにより起こるエラーですのでご注意ください。
NG例:
ノード「Tibbit #00」を2個配置し、一つ目のノードでは、以下のように通信を「I2C」、スロットを「S01」という設定をし、(ライン設定は固定)
二つ目のノードでは、以下のように通信を「GPIO」、スロットを「S01」、ライン全てに「IN」という設定をしてしまうと、Node-REDのデバッグタブにエラーが表示されます。
これは、スロット「S01」のラインAとBに対し、異なる設定を行なっているためです。
このエラーを解消するためには、ラインAとBに異なる設定が行われないように、二つ目のノードのラインAとBを「未使用」にします。
一つ目のノードで選択したI2C通信は、ラインAとBは専用の固定された設定となるため、ライン設定の変更が可能なGPIO通信のノードのラインAとBを変更します。
OK例:
一つ目のノード
二つ目のノード
上記のような設定はエラーにはなりません。
その他
もし、うまくノードが動作しない場合は、
・Tibbitブロックが正しく挿入されているか
・ノードは正しく配置されているか
・ノードの設定が間違っていないか
・デバッグタブにエラーが出力されていないか
などをご確認ください。
(5)ノード入出力について
・ノードの入力(Inputs)
・ノードの出力(Outputs)
・各ノードの入出力の情報については、Node-REDの情報タブに表示します。