[Edison]光センサーを使って明るさの検出[mraa]
Edison kit for Arduinoでは簡単にセンサー類を扱える
Edison kit for ArduinoはArduinoベースなので、Groveの各種モジュールを簡単に接続して使うことができます。 本体にベースシールドを取り付け、そこにセンサーモジュールや 出力用モジュールを接続してプログラムからアクセス可能になります。 今回は光センサーを取り付け、Edison上のJavascriptプログラムからアクセスしてみましょう。
動作環境
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.9.4
- Edisonファームウェア : edison-rel1-maint-weekly_build_16_2014-10-14_14-56-19
- Grove : Grove Starter kit
ここでやっているように、初期セットアップとwifiセットアップは終わらせておいてください。 また、Groveのベースシールドはここを見て装着しておきましょう。
Light sensorを使ってみよう
光センサーを装着
今回はGroveスターターキットについているこの光センサーを使用しました。 ベースシールドのA0コネクタとセンサーを接続します。
これでハード側の準備は完了です。
光センサーを装着
node.jsプログラムで動かすため、まずはmraaライブラリをインストールします。 ここを参考にして mraaをインストールしましょう。(下記コマンド実行でOK)
root@edison:~# echo "src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/mraa-upm.conf root@edison:~# opkg update root@edison:~# opkg install libmraa0
mraaをインストールできたらnodeのREPLを実行して確認してみます。 ちゃんと動いてますね。
root@edison:~# node > var m = require('mraa'); undefined > m.getVersion() 'v0.5.4-29-gf277e7d'
光センサーを読み取るプログラムを作成
プログラムでは、mraaライブラリを読み込んで1秒ごとにA0の値を読み取ってコンソールに出力しています。
//app.js var m = require('mraa'); //A0ピンのセットアップ var pin0 = new m.Aio(0); //1秒毎に光源センサーの値を出力 setInterval(function(){ //A0ピンの値を読み取る var sensorValue = pin0.read(); //コンソールに光源センサーからよみとった値を出力 console.log("A0: " + sensorValue); },1000);
プログラムを実行
nodeコマンドで上記プログラムを実行してみます。 出力される値が光センサーから取得した値です。センサーの場所を変えたり手で隠したりすると、値が増減するのがわかります。
root@edison:~# node app.js A0: 557 A0: 547 A0: 439 ・ ・
まとめ
わずか数行のjavascriptコードで光センサーにアクセスして光度を取得することができました。 このように、mraaライブラリを使うと、簡単にデバイスにアクセスすることができます。 ちなみに、センサーを外(曇り)に出した場合は430〜470くらい、手で隠した場合は150〜160くらい、 昼間の部屋の中(蛍光灯)では730〜760くらいでした。