Arduino資料一覧

Node.jsで温度センサーのデータを取得してAmbientでグラフ化する

2017/03/25更新

対応バージョン: Node.js 4.2.6, Johnny-Five 0.10.6

IoTデバイスから収集したデータを蓄積して簡単にグラフ化できるAmbientというWebサービスを使ってArduinoにつないだ温度センサーから取得したデータをグラフ化してみる。非常に簡単なので実装手順を紹介する。

Node.jsを動かす母艦はUbuntu 16.04とする。

Ambient準備

まず以下のチュートリアルに従ってユーザ登録やデータの保存単位であるチャネルを作成する。プログラミング時にチャネルIDとライト(書込)キーが必要になるのでメモしておく。

次にプログラミングを行うが、事前にArduinoと温度センサーの結線を行う。

結線

ここでは温度センサーとしてLM61BIZを使用するので以下の記事を参考にして結線する。

関連資料・記事

ソース

結線が終わったらプログラムを書く。

先のチュートリアルではArduinoスケッチを使う場合の例が示されているのでNode.jsを使うには以下の資料に従って公式のライブラリを導入し、お作法にしたがってコードを書く。

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
:

これでチャネル一覧ページの該当のチャネル名をクリックすれば温度センサーから取得したデータがグラフ化されているのが確認できる。

関連資料・記事

参考サイト