NefryBT R2とGrove赤外線センサーを使ってクラウド上でグラフ化してみる


NefryBTを手に入れ、初日はArduinoにある超音波センサーで距離を・・・と試してみたのですがD6,D7辺りで繋げてもいまいちできませんでした。
直ぐGroveのセンサーを3つほど買ってみたら、D2に刺すだけで動きました。

サンプルソースは以下。Nobisukeさんの記事を参考にさせてもらいました。

#include <Nefry.h>

void setup()  {
  Nefry.println("Grove IR Distance Interrupter !");
  Nefry.setLed(0,0,0);
  pinMode(D2,INPUT); //D2ポート
}

void loop()  {
    while(1)  {
        Nefry.ndelay(1000);
        if(digitalRead(D2)==LOW)  {
            Nefry.println("Somebody is here.");
            Nefry.setLed(255,255,255);
        }
        else  {
            Nefry.println("Nobody.");
            Nefry.setLed(0,0,0);
        }
    }
}

次にNefryBTをAmbientと連携してみます。NefryBTにはAmbient向けのAPIが提供されています。
まずは、NefryBTをWifi接続するよう管理画面(SSID: NefryBTxxx-xxx, IP:192.168.4.1)へアクセスして今あるWifi環境のSSID/PASSを設定します。
設定後、DHCPで割り当てられたIPがディスプレイへ表示されます。
次にAmbientへユーザ登録して、チャネルを1つ設定。するとチャネルIDとWrite Key,Read Keyがもらえるのでそれの値を使って以下ソースに書き込みます。

#include <Nefry.h>
#include <NefryAmbient.h>
NefryAmbient nefryAmbient;

void setup()  {
  Nefry.println("Grove IR Distance Interrupter !");
  Nefry.setLed(0,0,0);
  pinMode(D2,INPUT); //D2ポート

  //ambientを使えるように初期設定をします。
  bool ret = nefryAmbient.begin(
    xxxx, // AmbientのチャンネルIDを入力
    "xxxxxxxxxxxxxxxx" // AmbientのWrite Key
  ); 
  Nefry.setProgramName("Grove_IR_Sensor");//プログラム名を指定します。
  if(ret == false){
     Nefry.println("Fail of SetupAmbient");    
  }
}

void loop()  {
  bool ret = true;
    while(1)  {
        Nefry.ndelay(1000);
        if(digitalRead(D2)==LOW)  {
            Nefry.println("Somebody is here.");
            Nefry.setLed(255,255,255);
            ret = nefryAmbient.set(1, 1); //field,dataの順にセットします。
            if(ret == false) Nefry.println("Fail of set"); 
            ret = nefryAmbient.send();//ambientにデータを送信します。
            if(ret == false) Nefry.println("Fail of send"); 
        }
        else  {
            Nefry.println("Nobody.");
            Nefry.setLed(0,0,0);
            ret = nefryAmbient.set(1, 0); //field,dataの順にセットします。
            if(ret == false) Nefry.println("Fail of set"); 
            ret = nefryAmbient.send();//ambientにデータを送信します。
            if(ret == false) Nefry.println("Fail of send"); 
        }
    }
}

出来たものがこれです。

1日目はWifi繋がってない状態でNefryAmbient.send()を実施していたので、当然クラウドアップできず、悩んでしまいました。出来たらなんてことなく簡単でした。