EXTERNAL HARDWARE

Communicating with an Arduino

Noodlは、IoTソリューションでよく使用される標準化されたプロトコルであるMQTTを使用して外部ハードウェアに接続できます。MQTTは、複数のクライアントがブローカー経由で通信する軽量プロトコルです。

このガイドでは、Noodlを使ってArduino MKR1000に接続されたNeoPixel Ringをコントロールする方法を説明します。また、MQTTと通信できる他のタイプのデバイスを接続する方法のリファレンスとしても使用できます。Noodlのステップは同じです。

Noodlは、Send MessageノードとReceive Messageノードで送受信されるすべてのメッセージにMQTTを使用します。これには、Noodlを実行する複数のデバイス間の通信が含まれ、外部ハードウェアに限定されません。

Creating the Noodl project

新しいプロジェクトを作成するか、完成したプロジェクトをダウンロードしますdownload the finished project。ライブラリーからUi Kitを追加するには、ライブラリー・リストから追加してください。

Noodlのライブラリから3つのスライダを追加し、Send Messageノードを作成します。スライダをStack Layoutに追加し、スライダのMax Valueを255に設定します。Ardunioは、1つの値につき、赤 、緑色および青色を含んだ0(明るさなし)〜255(明るさ最大)の間の3つの値を使用して、NeoPixelの色を設定できます。これらの3つの色を組み合わせると、ほぼすべての色が得られます。

Send Messageノードを選択し、Topicneopixel/colorに設定し、ペイロードにredgreenblueの3つのポートを追加します。Send on Changeを有効にすると、入力が変更されたときにメッセージが送信されます。Rate Limitを有効にし、10メッセージ/秒に設定してください。

Rate Limitが無効の場合、Noodlはスライダを調整するときに毎秒60メッセージを送信します。これが早すぎるために、残りのシステムの処理が追いつかず、遅延が発生します。 10あたりが丁度良さそうですが、もしよければ実験してみてください。

最初のスライダをred、2番目のスライダをgreen、3番目をblueに接続します。

デフォルトでは、Noodlはstring化されたJSONとして暗号化されたペイロードとともにMQTTメッセージを送信します。 red、green、blueが10、20、30に設定されているメッセージは、ペイロードを{"red":10,"green":20,"blue":30}として暗号化します。 CSVもサポートされており、ここまで長くはないため、もう少し効率的です。 以下のようにペイロードを暗号化します: "10,20,30"。 値は、ペイロードがSend Messagenodeに追加された順で送信されます。

次のステップはArduino MKR1000のコードを書くことです。 Noodlのブローカーに接続し、ネオピクセル/カラートピックを購読し、ペイロードを解析し、ネオピクセルリングに色を送信します。

Download the Noodl project

Writing the Arduino code

Ardunioコードは、以下のステップで構成されています:

  1. Wifiに接続する
  2. NoodlのMQTTブローカーに接続する
  3. トピックのネオピクセル/カラーを登録する
  4. 受信メッセージを待つ
  5. ペイロードをJSONとして解析し、その色をNeoPixelリングに送信する

Download the code for the Ardunio

以下のライブラリをインストールする必要があります:

ライブラリのインストール方法については、こちらをご覧ください。

ヒント:コードをアップロードしようとしているときに”No device found”/"No device found"というエラーが表示された場合は、リセットボタンを2回押してもう一度やり直してください。

Message Tracker

Noodlには、MQTTビジュアライゼーションが付属しています。このビジュアライゼーションは、アプリケーションメニューのDebug -> Open Message Trackerからアクセスできます。 接続されているすべてのデバイスと送信されたメッセージを表示します。これにより、Noodlプロジェクトで何が起きているのかをデバッグして理解することができます。