
Plotlyを使って、センサー・データを可視化(グラフ化)する方法を解説します。
①開発環境
・Arudino
「ArduinoをJavaScriptで制御する」の手順で、開発環境をセットアップします。
・Raspberry Pi
「Raspberry Pi 2のGPIOをJavaScriptで制御する」の手順で、開発環境をセットアップします。

1.Plotlyのアカウントを作成します。
2.右上の[ユーザ名]をクリックし、[Settings]を選択します。
3.「STREAMING API TOKENS」と[ADD A NEW TOKEN]をクリックし、APIトークンを作成します。
この画面で確認できる「API KEY」を「STREAMING API TOKENS」は、後でプログラム中で使用します。
③「plotly」モジュール(Node.jsモジュール)のインストール
1.コマンドプロンプトまたはターミナルを起動し、作業用のフォルダに移動します。
2.「npm install plotly」と入力します。
④「date-utils」モジュールのインストール
1.コマンドプロンプトまたはターミナルを起動し、作業用フォルダに移動します。
2.「npm install date-utils」と入力します。
⑤回路の配線、プログラムの作成と実行
・Arudino
1.次のように回路を配線します。
必要なモノ(リンク先:Amazon)
LM35D
2.次のJavaScriptコードを入力し、「temp-plotry.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
require('date-utils'); | |
var plotly = require('plotly')('[USER NAME]','[YOUR API KEY]') | |
var token = '[YOUR STREAMING API TOKEN]'; | |
var five = require("johnny-five"); | |
five.Board().on("ready", function() { | |
var temperature = new five.Thermometer({ | |
controller: "LM35", | |
pin: "A0", | |
freq: 10000 | |
}); | |
var initdata = [{x:[], y:[], stream:{token:token, maxpoints: 500}}]; | |
var initlayout = {fileopt : "extend", filename : "Temperature"}; | |
plotly.plot(initdata, initlayout, function (err, msg) { | |
if (err) return console.log(err); | |
console.log(msg); | |
var stream = plotly.stream(token, function (err, res) { | |
console.log(err, res); | |
}); | |
temperature.on("data", function() { | |
console.log(this.celsius + "°C", this.fahrenheit + "°F"); | |
var dt = new Date(); | |
var xaxis = dt.toFormat("YYYY-MM-DD HH24:MI:SS"); | |
var streamObject = JSON.stringify({ x : xaxis, y : this.celsius }); | |
console.log(streamObject); | |
stream.write(streamObject+'\n'); | |
}); | |
}); | |
}); |
3.コマンドプロンプトから、「node temp-plotry.js」と入力します。
・Raspberry Pi
1.次のように回路を配線します。
必要なモノ(リンク先:Amazon)
PCF8591AD/ DA コンバータモジュール
2.次のJavaScriptコードを入力し、「plotry-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
require('date-utils'); | |
var plotly = require('plotly')('[USER NAME]','[YOUR API KEY]') | |
var token = '[YOUR STREAMING API TOKEN]'; | |
var raspi = require('raspi-io'); | |
var five = require('johnny-five'); | |
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 | |
}); | |
var initdata = [{x:[], y:[], stream:{token:token, maxpoints: 500}}]; | |
var initlayout = {fileopt : "extend", filename : "LDR"}; | |
plotly.plot(initdata, initlayout, function (err, msg) { | |
if (err) return console.log(err); | |
console.log(msg); | |
var stream = plotly.stream(token, function (err, res) { | |
console.log(err, res); | |
}); | |
a.on("data", function(){ | |
console.log(this.value); | |
var dt = new Date(); | |
var xaxis = dt.toFormat("YYYY-MM-DD HH24:MI:SS"); | |
var streamObject = JSON.stringify({ x : xaxis, y : this.value }); | |
console.log(streamObject); | |
stream.write(streamObject+'\n'); | |
}); | |
}); | |
}); | |
3.ターミナルから、「sudo node plotry-pi.js」と入力します。
⑥グラフの確認
ブラウザでPlotlyを開き、[Organize](または[ユーザー名]→[My Files])を選択し、目的のグラフ(ファイル)を選択します。
0 件のコメント:
コメントを投稿