19: Intel Edison上でセンサーから取得した値をログ出力してみる【mraa編】

よく訓練されたアップル信者、都元です。さてアドベントカレンダーかもしれない2014もあと残すところ7日。昨日のエントリーはこちらです。そろそろセンサーのお出ましです。

GROVE System

ここからは、EdisonのGPIOにセンサーを繋いで値を取得していきたいと思います。GROVEは、Seeeduino社によるArduino用の様々なセンサー及びアクチュエーターのシリーズを指します。弊社にGROVE - スターターキット V3【ELB00100M】があるので、こちらを使います。

このなかで、放置しておいて時系列で値を観察して楽しそうなセンサーは3つ。(タッチセンサーとかは放置時系列で見ても面白く無い)

  • 温度センサー
  • 光センサー
  • 音センサー

これらをEdisonに接続します。EdisonのArduino互換端子に付いているのは、GROVEの「ベースシールド」と呼びます。そこから、A0, A1, A2端子にそれぞれ、温度・光・音のセンサーを接続しました。

IMG_4434

mraaを利用した値の取得

続いて、XDKの中で下記のようなコードを記述します。

  1. アプリ名はTriSensとしました。
  2. mraaをインポートし、バージョン表示。
  3. A0A2端子をそれぞれ定義します。
  4. 温度センサーの出力をセルシウス度(摂氏)に変換する関数を定義します。B値ってのがよくわかりませんでしたが、拾ってきた値を…。他のセンサーも何かしらの単位に変換できればよかったのですが、よくわからなかったので生の値を扱うことにしました。
  5. 以上、道具立てが揃ったので、setIntervalで5秒に一度センサーから値を取り出し、ログ出力します。

といった感じです。

結果

TriSens
MRAA Version: v0.5.4-37-g3c4742c
==== Fri Dec 19 2014 00:37:57 GMT+0000 (UTC) ====
tempPin Value: 11.32669740437882
lightPin Value: 451
soundPin Value: 114
==== Fri Dec 19 2014 00:38:02 GMT+0000 (UTC) ====
tempPin Value: 11.590597860365563
lightPin Value: 459
soundPin Value: 105
...

このように値が出力されていました。温度の値がちょっと変な気がします。ここ、そんなに寒くない。。。多分B値の調整が必要なところなのだと思います。

温度センサーを手であたためてみたら、きちんと値は(13くらいに)上がりました。光センサーを手で覆ってみたら、80台まで値が下がりました。

うるさくしてみたら…。音センサーの動きは正直捉えづらかったです。5秒に一度、瞬間しか取っていないのがいけないのでしょうか。まだ使い方をきちんと調べてみる余地がありそうです。

明日のエントリーはこちらです。