■開発環境の準備
①Raspberry Piのセットアップ
「Raspberry Pi 2のGPIOをJavaScriptで制御する」の手順で開発環境をセットアップします。
②Adafruit IOの準備
1.Adafruit IOのアカウントを作成します。
2.アカウントを作成すると、「Welcome Dashboard」が表示されるので、右上の鍵アイコン(Your secret AIO KEY)をクリックし、AIO KEYを確認します。
③「MQTT.js」(Node.jsのモジュール)のインストール
1.ターミナルを起動し、作業用フォルダに移動します。
2.「npm install mqtt」と入力します。
■センサー・データの収集
①回路の配線
「Raspberry Pi+Johnny-Fiveでアナログデータを計測する」の回路を配線します。
②プログラムの作成と実行
1.次のJavaScriptコードを入力し、「publisher-pi.js」と名前を付けて作業用フォルダに保存します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var raspi = require('raspi-io'); | |
var five = require('johnny-five'); | |
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 () { | |
var board = new five.Board({ | |
io: new raspi() | |
}); | |
board.on("ready", function() { | |
var virtual = new five.Board.Virtual( | |
new five.Expander("PCF8591") | |
); | |
var a = new five.Sensor({ | |
// PCF8591 module YL-40 | |
// A0:LDR(Light Dependent Resistor) | |
// A1:NC | |
// A2 Thermistor | |
// A3:Potentiometer | |
pin:"A0", | |
board:virtual, | |
freq:10000 | |
}); | |
a.on("data", function() { | |
console.log(this.value / 10); | |
// Topic name(トピック名)を「<user name>/feeds/<feed name>」の形式で指定 | |
client.publish('[Topic name]',String(this.value / 10)); | |
}); | |
})() | |
});) |
[Topic name]には、トピック名を「<ユーザー名>/feeds/<フィード名>」の形式で指定します。「Welcome Dashboard」の各ブロックは、「Welcome Feed」フィードに紐づけされているので、ユーザー名が「taro」なら、「taro/feeds/Welcome Feed」になります。
Adafruit IOのFeed(フィード)は、いわゆるデータを管理するオブジェクトです。このFeedを使用して、データの送受信を行います。
2.ターミナルから「sudo node publisher-pi.js」と入力します。
3.Adafruit IOの「Welcome Dashboard」ダッシュボードを開きます。
センサーデータを監視する方法は、「Adafruit IO+IFTTTでセンサー・データを監視・通知する」を参照してください。
■デバイスの制御
①回路の配線
次のように回路を配線します。
②Adafruit の準備
「Adafruit IO+Arduino+MQTTでIoT‐デバイスの制御」の③の手順で、フィード、ダッシュボード、ブロックを作成します。
③プログラムの作成と実行
1.次のJavaScriptコードを入力し、「subscriber-pi.js」と名前を付けて作業用フォルダに保存します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var raspi = require('raspi-io'); | |
var five = require('johnny-five'); | |
var board = new five.Board({ | |
io: new raspi() | |
}); | |
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('P1-7'); | |
// メッセージの受信 | |
client.on('message', function (topic, message) { | |
console.log(message.toString()); | |
if(message.toString() === 'ON'){ | |
led.on(); | |
} else { | |
led.off(); | |
} | |
}); | |
}); |
[Topic name]には、トピック名を「<ユーザー名>/feeds/<フィード名>」の形式で指定します。今回は、「LED」フィードを使用するので、ユーザー名が「taro」なら、「taro/feeds/LED」となります。
2.ターミナルから、「node subscriber.js」と入力します。
④動作の確認
Adafruit IOのダッシュボードのスイッチを操作し、LEDがオン/オフすることを確認ます。
0 件のコメント:
コメントを投稿