[Edison]光センサーを使って明るさの検出[mraa]

2014.12.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

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コネクタとセンサーを接続します。

edison-light

これでハード側の準備は完了です。

光センサーを装着

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くらいでした。

参考サイトなど