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