どうもこんにちは、ちゃちゃまる(@chachmaru)です。
さて、前回の記事まではIntel Edisonと公式のAPIを使ってお天気情報を取得し、LEDライトの色でお天気を表すということをおこないました。今回は、センサーで自分のいる場所の温度を測ってみたいと思います!
Intel Edisonとは Intelが開発している マイコンボード。Wi-FiモジュールやBluetoothモジュールを最初から搭載している。 |
使うもの
今回使うのは次の3つです。
- Intel Edison
- BMP180 気圧/温度/高度センサ
- Cylon.js
- 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を置き、ジャンプワイヤーを挿しました。
初心者でも簡単にセンサー使って温度を表示できる時代到来…! pic.twitter.com/fqaBHkM5ey— chachamaru (@chachmaru) March 16, 2016
プログラム
今回は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」紹介ページに記載されています。
これで天気だけではなく、温度もスマホなしで確認できるようになりましたね。僕のような初心者でも、短時間でこういったものが作れてとても楽しいです(笑)
次回は集めたデータを視覚化してみたいと思います。それではまた!