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()を実施していたので、当然クラウドアップできず、悩んでしまいました。出来たらなんてことなく簡単でした。


投稿者: cova

ザムウ取締役CTO。2010年に香川県三豊市へ移住。フリーランスSEとして活動をはじめる。とある機構にて中小企業の経営支援と、小学校にてICT講習も務める。2022年現在、子育て支援NPO理事、短大専任講師を兼任する。 【主な資格】経営学修士(MBA)修了、国家試験応用情報技術者、国内初の夫婦ITコーディネーター。 その他、2022年4月:2児(4歳・1歳)の父。 #赤ちゃんから学ぶ経営学 を配信。