2016年1月4日月曜日

Adafruit IO+Arduino+MQTTでIoT‐デバイスの制御

 Adafruit IOのダッシュボードから、Arudinoに接続されたLEDをオン/オフする方法を説明します。通信には、MQTTを使用します。

①Arduinoのセットアップ
1.「ArduinoをJavaScriptで制御する」の手順でArduinoを開発環境をセットアップします。
2.次のように回路を配線します。















②「MQTT.js」のインストール
1.コマンドプロンプトを起動し、作業用フォルダに移動します。
2.「npm install mqtt」と入力します。

③Adafruit の準備
・IO KEYの取得
1.Adafruit IOのアカウントを作成します。
2.アカウントを作成すると、「Welcome Dashboard」が表示されるので、右上の鍵アイコン(Your secret AIO KEY)をクリックし、AIO KEYを確認します。


・Feed(フィード)の作成
 デバイスの制御に使用するFeedを作成します、
1.[MY DASHBOARDS]をクリックします。
2.「Your Feeds」→[CREATE FEED]をクリックします。
3.「NAME」にフィード名(ここでは「LED」とします)を入力し、[CREATE FEED]をクリックします。

・Dashboard(ダッシュボード)の作成
1.「Your Dashboards」→[CREATE DASHBOARD]をクリックします。
2.「DASHBOARD NAME」にダッシュボードの名前を入力し、[CREATE DASHBOARD ]をクリックします。

・blockの作成
1.右上の[+](Create a new block)をクリックします。
2.トグルボタンの[CREATE]をクリックします。


3.「LED」フィードの「CHOOSE」をクリックし、[NEXT STEP>]をクリックします。


4.[CREATE BLOCK]をクリックします。


 「BOTTON ON TEXT」と「BOTTON ON TEXT」は、オン/オフの状態を示す文字列と同時に、送信されるメッセージになります。この場合、オンにしたときには「ON」、オフにしたときは「OFF」という文字列が送信されます。

5.ページをリロードします。


④プログラムの作成と実行
1.次のJavaScriptコードを入力し、「subscriber.js」と名前を付けて作業用フォルダに保存します。

var five = require("johnny-five");
var board = new five.Board();
var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://io.adafruit.com', {
port:1883,
username:'[USER NAME]',
password:'[YOUR AIO KEY]' });
client.on('connect', function () {
// Topic name(トピック名)を「<user name>/feeds/<feed name>」の形式で指定する
var feed = 'Topic name';
client.subscribe(feed);
client.publish(feed,'OFF');
});
board.on("ready", function() {
var led = new five.Led(5);
// メッセージの受信
client.on('message', function (topic, message) {
console.log(message.toString());
if(message.toString() === 'ON'){
led.on();
} else {
led.off();
}
});
});
view raw subscriber.js hosted with ❤ by GitHub
 [USER NAME]には、Adafruit IOのユーザ名を、[YOUR AIO KEY]にはAIO KEYを入力します。
 [Topic name]には、トピック名を「<ユーザー名>/feeds/<フィード名>」の形式で指定します。今回は、「LED」フィードを使用するので、ユーザー名が「taro」なら、「taro/feeds/LED」となります。

2.コマンドプロンプトから、「node subscriber.js」と入力します。

⑤動作の確認
 Adafruit IOのダッシュボードのスイッチを操作し、LEDがオン/オフすることを確認します。

0 件のコメント:

コメントを投稿