Arduino 資料一覧
2017/03/25更新
対応バージョン: Node.js 4.2.6, Johnny-Five 0.10.6
IoTデバイスから収集したデータを蓄積して簡単にグラフ化できるAmbientというWebサービスを使ってArduinoにつないだ温度センサーから取得したデータをグラフ化してみる。非常に簡単なので実装手順を紹介する。
Node.jsを動かす母艦はUbuntu 16.04とする。
Ambient準備
まず以下のチュートリアルに従ってユーザ登録やデータの保存単位であるチャネルを作成する。プログラミング時にチャネルIDとライト(書込)キーが必要になるのでメモしておく。
チュートリアル (Ambient)
次にプログラミングを行うが、事前にArduinoと温度センサーの結線を行う。
結線
ここでは温度センサーとしてLM61BIZを使用するので以下の記事を参考にして結線する。
関連資料・記事
ソース
結線が終わったらプログラムを書く。
先のチュートリアルではArduinoスケッチを使う場合の例が示されているのでNode.jsを使うには以下の資料に従って公式のライブラリを導入し、お作法にしたがってコードを書く。
node.jsライブラリー ambient-lib (Ambient)
lm61_ambient.js (チャネルIDとライトキーは自身のチャネル情報を記述する)
// // 温度データ格納 -> Ambient // var five = require('johnny-five'); var ambient = require('ambient-lib'); var board = new five.Board(); // チャネル情報設定 var channel_id = <チャネルID>; var write_key = '<ライトキー>'; // Ambient接続 ambient.connect(channel_id, write_key); // // メイン // board.on('ready', function() { var temp = new five.Thermometer({ pin: 'A0', freq: 5000, // Ambientの最短の送信間隔(5秒) toCelsius: function(raw) { var val = ((raw * 5 / 1024) - 0.6) * 100; // 温度計算 return Math.round(val * 10) / 10; // 小数点第2位以下四捨五入 } }); // センサーデータ取得 temp.on('change', function() { data = this.celsius; console.log(data + '°C'); data = {d1: data}; ambient.send(data, function(err, res, body) { if (err) { console.log(err); } }); }); });
実行
% node lm61_ambient.js 1485094276071 Device(s) /dev/ttyACM0 1485094276078 Connected /dev/ttyACM0 >> 24.5°C 24°C 24.5°C 24°C 23.5°C :
これでチャネル一覧ページの該当のチャネル名をクリックすれば温度センサーから取得したデータがグラフ化されているのが確認できる。
関連資料・記事
参考サイト
Arduino (Wikipedia)
Arduino技術情報 (Qiita)
Arduino関連情報 (Device Plus)
Arduino記事一覧 (Think IT)
Node.js技術情報 (Qiita)
Johnny-Five技術情報 (Qiita)
Ambient技術情報 (Qiita)
エレクトロニクス豆知識 (ROHM)