Cylon.jsとセンサーを使って自分の周りの温度を測ってみた

Cylon.jsとセンサーを使って自分の周りの温度を測ってみた

ちゃちゃまる

ちゃちゃまる

どうもこんにちは、ちゃちゃまる(@chachmaru)です。

さて、前回の記事まではIntel Edisonと公式のAPIを使ってお天気情報を取得し、LEDライトの色でお天気を表すということをおこないました。今回は、センサーで自分のいる場所の温度を測ってみたいと思います!

inteledison2 Intel Edisonとは
Intelが開発している マイコンボード。Wi-FiモジュールやBluetoothモジュールを最初から搭載している。

使うもの

今回使うのは次の3つです。

Cylon.jsとは
Cylon.jsとは、デバイスやロボットを簡単に動かせるJavaScriptのフレームワークです。基本構文のようなものが既に決まっているため、すぐに実行確認ができます。

下準備として以下をターミナルで実行してCylon.jsをインストールします。

$ npm install cylon

それでは実際に作っていきましょう。

Cylon.jsとセンサーを使って自分の周りの温度を測ってみる

配線方法

まずは配線から見ていきましょう。BMP180とエジソンを繋げます。

  • BMP180の「VIN」とエジソンの「3.3V」
  • BMP180の「GND」とエジソンの「GND」
  • BMP180の「SCL」とエジソンの「A5」
  • BMP180の「SDA」とエジソンの「A4」

普通はピンヘッダを付けて使うのですが、今回はさっとテストしてみたかったので、以下のようにブレッドボードの上にBMP180を置き、ジャンプワイヤーを挿しました。

プログラム

今回は10分毎にセンサーから気温を取得してコンソールに表示するプログラムを作りました。最終コードは以下の通りです。

var cylon = require('cylon');

cylon.robot({
	connections: {edison:{adaptor:'intel-iot'}},
	devices: {bmp180:{driver:'bmp180'}},
	work: function(my){
		every((10).minute(), function(){
			my.bmp180.getTemperature(function(err, val){
				if(err) {
					console.log(err);
					return;
				}
				console.log('Temp ' + val.temp);
			})
		});
	}
}).start();

1. Cylon.jsを呼び出す

まずはおなじみのrequire()を使ってCylon.jsを呼び出します。

var cylon = require('cylon');

Cylon.jsの基本形はこちらです。

var cylon = require("cylon");

cylon.robot({
		connections: {},

		devices: {},

		work: function(my) {
			every((1).second(), function(){});
		}
}).start();

2. Intel Edisonに繋ぐ

Cylon.js公式ドキュメンテーションにIntel Edisonへの繋ぎ方が書いてあるので、その通りにします。

2-1. cylon-intel-iotをインストールする
$ npm install cylon cylon-intel-iot

mraaも必要なので、まだインストールされていない場合は前回の記事をご覧ください。

2-2. connectionsをIntel Edisonに設定する
connections: {edison:{adaptor:’intel-iot’}},
2-3. devicesをBPM180に設定する
devices: {bmp180:{driver:'bmp180'}},

3. 実行内容を設定する

Cylon.jsでは、どれぐらいの時間毎に何を実行するのかを書くのが基本です。つまり、次のような感じです。

work: function(my) {
	every(どれぐらいの時間, function(){
		実行内容
	});
}

今回は10分毎なので、以下のコードになります。

every((10).minute(), function(){});

次に実際に実行する内容を上のコールバック関数内に書きます。

every((10).minute(), function(){
	my.bmp180.getTemperature(function(err, val){
		if(err) {
		console.log(err);
		return;
		}
		console.log('Temp ' + val.temp);
	})
});

my.bmp180.getTemperature(function(err,val){})が温度を測る命令で、温度の数値はval.temp内に代入されます。

実行すると

[Robot 1] - Starting connections.
[Robot 1] - Starting connection 'edison'.
[Robot 1] - Starting devices.
[Robot 1] - Starting device 'bmp180'.
[Robot 1] - Working.

と表示され、10分毎に

Temp 26.3

などと表示されていくはずです。

終わりに

今回は温度だけを表示させましたが、このセンサーは気圧や高度も測ることができるので、getPressureやgetAltitudeなども試してみるとより詳細な情報を知れます。詳しくはCylon.jsの「BMP180」紹介ページに記載されています。

これで天気だけではなく、温度もスマホなしで確認できるようになりましたね。僕のような初心者でも、短時間でこういったものが作れてとても楽しいです(笑)

次回は集めたデータを視覚化してみたいと思います。それではまた!

この記事のシェア数

ちゃちゃまるです。 見習いデザインエンジニアです。 パソコンと英語が得意です。 世界史が苦手です。 よろしくおねがいします。

このメンバーの記事をもっと読む
Intel Edison | 7 articles