19: Intel Edison上でセンサーから取得した値をログ出力してみる【mraa編】
よく訓練されたアップル信者、都元です。さてアドベントカレンダーかもしれない2014もあと残すところ7日。昨日のエントリーはこちらです。そろそろセンサーのお出ましです。
GROVE System
ここからは、EdisonのGPIOにセンサーを繋いで値を取得していきたいと思います。GROVEは、Seeeduino社によるArduino用の様々なセンサー及びアクチュエーターのシリーズを指します。弊社にGROVE - スターターキット V3【ELB00100M】があるので、こちらを使います。
このなかで、放置しておいて時系列で値を観察して楽しそうなセンサーは3つ。(タッチセンサーとかは放置時系列で見ても面白く無い)
- 温度センサー
- 光センサー
- 音センサー
これらをEdisonに接続します。EdisonのArduino互換端子に付いているのは、GROVEの「ベースシールド」と呼びます。そこから、A0, A1, A2端子にそれぞれ、温度・光・音のセンサーを接続しました。
mraaを利用した値の取得
続いて、XDKの中で下記のようなコードを記述します。
- アプリ名はTriSensとしました。
- mraaをインポートし、バージョン表示。
- A0〜A2端子をそれぞれ定義します。
- 温度センサーの出力をセルシウス度(摂氏)に変換する関数を定義します。B値ってのがよくわかりませんでしたが、拾ってきた値を…。他のセンサーも何かしらの単位に変換できればよかったのですが、よくわからなかったので生の値を扱うことにしました。
- 以上、道具立てが揃ったので、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秒に一度、瞬間しか取っていないのがいけないのでしょうか。まだ使い方をきちんと調べてみる余地がありそうです。
明日のエントリーはこちらです。