ラベル iBeacon の投稿を表示しています。 すべての投稿を表示
ラベル iBeacon の投稿を表示しています。 すべての投稿を表示

2014年2月13日木曜日


2014年2月の日本アンドロイドの会定例会に参加してきました。

https://www.android-group.jp/event/event28.html

iBeaconとはどんなもので、アンドロイドで実現する場合に注意すべきことは何かなどを、この方面で活躍されている方を招いて勉強するという内容でした。

まず、今度の2/15、16に会津でBLEハッカソンを企画されている、Aka Beacon で有名なGClue の佐々木陽氏が、iBeacon とは、UUID、Major、Minor でビーコンを区別し、Immediate/Near/Far/Unknown などの近さが取得できるものですよ、ということを自作したデバイスを使ってデモを行いながら、非常に軽やかに説明されました。

また、iOSのバックグラウンド処理についても触れて、アプリがバックグラウンドにいてもRegion IN/OUTのイベントを受信でき、15秒間は動作可能ということも述べられていました。結局、もっとバックグラウンド動作を伸ばす方法はあるみたいですが…。

アンドロイドは、各アプリがビーコンを監視する部分を独自でもつため、ビーコンを利用するアプリが立ち上がるほど、電力消費が大きくなるとのこと。対して、iOSは、フレームワーク部分がビーコンの監視を行ってくれているので、ビーコンを使うアプリがたくさんいても省電力になっているとのこと。だから、アンドロイドでもビーコンを扱うサービスを作り、省電力な設計を行う必要があるとおっしゃっていました。

あとは、エコシステム、Appcessoryを中心とする最近のビジネス状況について、BLEデバイスのモジュール化のベンチャーが増えていることなどを説明してくれました。

続いて、Applixで研究開発をされている日向さんがビーコンの電波特性について、非常にわかりやすく解説してくれました。屋内測位をやっていると、電波特性というものに敏感になるもので、なんでこんなに状況によって電波強度がかわるのか深く知りたくなってきます。日向さんの調べたところによると、床や壁などに当たって跳ね返ってくる反射波との干渉により、場所によって電波の強弱が変わってしまうということです。また、電波強度と距離の関係式も、2、3mくらいまでなら大体合っているが、距離が遠くなるに連れて、実際の値とのずれが大きくなってくるとのこと。屋内測位をやったときもFarのビーコンは無視すると非常にうまく行きましたから、納得です。日向さんの考えでは、RSSIからもとめる距離の精度も対数をとった値なら実用に耐えられるのでは、とのこと。

あとのお二人は、iBeaconを使った事例でした。

元頓知ドットさんのおでかけスクラップサービス"tab"は、失敗事例などいくつか紹介しており、非常に参考になりました。

残念ながら、帰阪するため参加できたのはここまででした。

iBeaconでブームとなったBLEの流れですが、アンドロイドでちゃんとしたサービスが展開されるのはまだまだ先なのかなという印象を受けました。

[コラム] 日本アンドロイドの会2月定例会に参加してきました。


2014年2月の日本アンドロイドの会定例会に参加してきました。

https://www.android-group.jp/event/event28.html

iBeaconとはどんなもので、アンドロイドで実現する場合に注意すべきことは何かなどを、この方面で活躍されている方を招いて勉強するという内容でした。

まず、今度の2/15、16に会津でBLEハッカソンを企画されている、Aka Beacon で有名なGClue の佐々木陽氏が、iBeacon とは、UUID、Major、Minor でビーコンを区別し、Immediate/Near/Far/Unknown などの近さが取得できるものですよ、ということを自作したデバイスを使ってデモを行いながら、非常に軽やかに説明されました。

また、iOSのバックグラウンド処理についても触れて、アプリがバックグラウンドにいてもRegion IN/OUTのイベントを受信でき、15秒間は動作可能ということも述べられていました。結局、もっとバックグラウンド動作を伸ばす方法はあるみたいですが…。

アンドロイドは、各アプリがビーコンを監視する部分を独自でもつため、ビーコンを利用するアプリが立ち上がるほど、電力消費が大きくなるとのこと。対して、iOSは、フレームワーク部分がビーコンの監視を行ってくれているので、ビーコンを使うアプリがたくさんいても省電力になっているとのこと。だから、アンドロイドでもビーコンを扱うサービスを作り、省電力な設計を行う必要があるとおっしゃっていました。

あとは、エコシステム、Appcessoryを中心とする最近のビジネス状況について、BLEデバイスのモジュール化のベンチャーが増えていることなどを説明してくれました。

続いて、Applixで研究開発をされている日向さんがビーコンの電波特性について、非常にわかりやすく解説してくれました。屋内測位をやっていると、電波特性というものに敏感になるもので、なんでこんなに状況によって電波強度がかわるのか深く知りたくなってきます。日向さんの調べたところによると、床や壁などに当たって跳ね返ってくる反射波との干渉により、場所によって電波の強弱が変わってしまうということです。また、電波強度と距離の関係式も、2、3mくらいまでなら大体合っているが、距離が遠くなるに連れて、実際の値とのずれが大きくなってくるとのこと。屋内測位をやったときもFarのビーコンは無視すると非常にうまく行きましたから、納得です。日向さんの考えでは、RSSIからもとめる距離の精度も対数をとった値なら実用に耐えられるのでは、とのこと。

あとのお二人は、iBeaconを使った事例でした。

元頓知ドットさんのおでかけスクラップサービス"tab"は、失敗事例などいくつか紹介しており、非常に参考になりました。

残念ながら、帰阪するため参加できたのはここまででした。

iBeaconでブームとなったBLEの流れですが、アンドロイドでちゃんとしたサービスが展開されるのはまだまだ先なのかなという印象を受けました。

2014年1月28日火曜日






本ブログ「屋内測位をやってみました」で、始めた屋内測位ですが、あれからいろいろやってみて、だいぶまともに動くようになってきました。今回はある会議室にビーコンをだいたい3m四方に12個配置しました。使用したビーコンは、Estimote社のものを使っています。このビーコン出力が弱いため、精度を出すには3mという短い間隔で置くしかありませんでした。使用した測位アルゴリズムも、トリラテレーション(Trilateration)ではなく、近辺のビーコン位置にRSSI値をもとにした加重平均をとる方法を採用しました。

では、実際の実験の様子をご覧ください。

iBeaconで屋内測位成功のヒントをつかんだ!






本ブログ「屋内測位をやってみました」で、始めた屋内測位ですが、あれからいろいろやってみて、だいぶまともに動くようになってきました。今回はある会議室にビーコンをだいたい3m四方に12個配置しました。使用したビーコンは、Estimote社のものを使っています。このビーコン出力が弱いため、精度を出すには3mという短い間隔で置くしかありませんでした。使用した測位アルゴリズムも、トリラテレーション(Trilateration)ではなく、近辺のビーコン位置にRSSI値をもとにした加重平均をとる方法を採用しました。

では、実際の実験の様子をご覧ください。

2013年12月21日土曜日




今回は、あまり余所のブログでは取り上げられていない領域識別子(identifier)に注目してみた。

CLBeaconRegionオブジェクトの生成時に指定するidentifier(日本語で言うと、識別子)は、領域の識別子である。これはそのアプリケーション内で自由に決められるものである。

CLBeaconRegionオブジェクトの初期化処理(initWith...)には、次の種類がある。

  • - (id)initWithProximityUUID:(NSUUID *)proximityUUID identifier:(NSString *)identifier;
  • - (id)initWithProximityUUID:(NSUUID *)proximityUUID major:(CLBeaconMajorValue)major identifier:(NSString *)identifier;
  • - (id)initWithProximityUUID:(NSUUID *)proximityUUID major:(CLBeaconMajorValue)major minor:(CLBeaconMinorValue)minor identifier:(NSString *)identifier;

したがって、識別子をつけられる対象は、次のような組み合わせだけである。

組み合わせ

  • proximityUUID
  • proximityUUID、Major
  • proximityUUID、Major、Minor


ここからわかること、および、実際に動かしてわかったことがある:

1. 同じUUIDを持つデバイスが複数あるときに、3階層のグルーピングが可能である

2. 異なる組み合わせには、同じ識別子を付けられない
(実際、同じ識別子で異なるUUIDのCLBeaconRegionオブジェクトを作ろうとすると、後から作ったオブジェクトで上書きされてしまう)

3. 同じ組み合わせに対して、異なる識別子が付けられる

2つ目はあまり意識されていないところだと思うが、重要である。例えば、いろんなメーカーから購入したiBeaconデバイスを寄せ集めて、ひとつの領域を監視したいとする。しかし、そのようなiBeaconデバイスの中には、UUIDが予め決められていて、購入者が変更できないものもあるかもしれない。そうなると、これらのデバイスすべてを、同じ領域を表すためには使えないことになる。(たいていのiBeaconは、購入後もアプリケーションからUUIDが変更できるようになっている。)

この識別子、使い方によっては非常におもしろいことができる。ひとつのiBeaconに近づいたとか離れたとかといった使い方は基本中の基本で、本質的な使い方は、文字通り、領域にはいったかどうかである。例えば、同じUUID、MajorをもつiBeaconが、下図のように輪っかになっている場合は、そのUUIDとMajorの組に対して付けた識別子は、その赤い輪っかの領域を表す領域識別子として使用することができる。

3つ目の性質に着目すれば、同じビーコンでも異なる領域として使用可能なので、次図のように同じビーコンの配置に対して、いくつもの異なる領域が考えられる。(ただし、この場合、異なるビーコンには同じ識別子が使えないので、識別子自体をURLのようなドメイン構造にする工夫が必要となる。図では、aグループ、bグループ、cグループとしている。どのビーコンも2つの領域に属している。)

    


これは、iBeaconを社会インフラとして考えた場合、非常に柔軟に扱えることを意味している。たとえば、ある区域にiBeaconを均等に配置しておき、適切な識別子を与えただけで、あるルートを表す領域が取得でき、iBeaconの電波を拾って道案内を行うなど、低コストなナビゲーションシステムが実現できる。

例えば、次の図のように大阪駅構内にiBeaconを配置しておく、御堂筋北口から中央きっぷ売り場への道順を表す領域(赤枠)や、御堂筋南口から高速バスターミナルまでの道順を表す領域(青枠)など、おなじiBeaconインフラに対して、ことなる領域を定義することが可能となる。




領域の識別子をうまく使うことが、柔軟で低コストなiBeaconサービスを提供するための必須条件であることは間違いないだろう。


[Tips] iBeaconの領域識別子とは?




今回は、あまり余所のブログでは取り上げられていない領域識別子(identifier)に注目してみた。

CLBeaconRegionオブジェクトの生成時に指定するidentifier(日本語で言うと、識別子)は、領域の識別子である。これはそのアプリケーション内で自由に決められるものである。

CLBeaconRegionオブジェクトの初期化処理(initWith...)には、次の種類がある。

  • - (id)initWithProximityUUID:(NSUUID *)proximityUUID identifier:(NSString *)identifier;
  • - (id)initWithProximityUUID:(NSUUID *)proximityUUID major:(CLBeaconMajorValue)major identifier:(NSString *)identifier;
  • - (id)initWithProximityUUID:(NSUUID *)proximityUUID major:(CLBeaconMajorValue)major minor:(CLBeaconMinorValue)minor identifier:(NSString *)identifier;

したがって、識別子をつけられる対象は、次のような組み合わせだけである。

組み合わせ

  • proximityUUID
  • proximityUUID、Major
  • proximityUUID、Major、Minor


ここからわかること、および、実際に動かしてわかったことがある:

1. 同じUUIDを持つデバイスが複数あるときに、3階層のグルーピングが可能である

2. 異なる組み合わせには、同じ識別子を付けられない
(実際、同じ識別子で異なるUUIDのCLBeaconRegionオブジェクトを作ろうとすると、後から作ったオブジェクトで上書きされてしまう)

3. 同じ組み合わせに対して、異なる識別子が付けられる

2つ目はあまり意識されていないところだと思うが、重要である。例えば、いろんなメーカーから購入したiBeaconデバイスを寄せ集めて、ひとつの領域を監視したいとする。しかし、そのようなiBeaconデバイスの中には、UUIDが予め決められていて、購入者が変更できないものもあるかもしれない。そうなると、これらのデバイスすべてを、同じ領域を表すためには使えないことになる。(たいていのiBeaconは、購入後もアプリケーションからUUIDが変更できるようになっている。)

この識別子、使い方によっては非常におもしろいことができる。ひとつのiBeaconに近づいたとか離れたとかといった使い方は基本中の基本で、本質的な使い方は、文字通り、領域にはいったかどうかである。例えば、同じUUID、MajorをもつiBeaconが、下図のように輪っかになっている場合は、そのUUIDとMajorの組に対して付けた識別子は、その赤い輪っかの領域を表す領域識別子として使用することができる。

3つ目の性質に着目すれば、同じビーコンでも異なる領域として使用可能なので、次図のように同じビーコンの配置に対して、いくつもの異なる領域が考えられる。(ただし、この場合、異なるビーコンには同じ識別子が使えないので、識別子自体をURLのようなドメイン構造にする工夫が必要となる。図では、aグループ、bグループ、cグループとしている。どのビーコンも2つの領域に属している。)

    


これは、iBeaconを社会インフラとして考えた場合、非常に柔軟に扱えることを意味している。たとえば、ある区域にiBeaconを均等に配置しておき、適切な識別子を与えただけで、あるルートを表す領域が取得でき、iBeaconの電波を拾って道案内を行うなど、低コストなナビゲーションシステムが実現できる。

例えば、次の図のように大阪駅構内にiBeaconを配置しておく、御堂筋北口から中央きっぷ売り場への道順を表す領域(赤枠)や、御堂筋南口から高速バスターミナルまでの道順を表す領域(青枠)など、おなじiBeaconインフラに対して、ことなる領域を定義することが可能となる。




領域の識別子をうまく使うことが、柔軟で低コストなiBeaconサービスを提供するための必須条件であることは間違いないだろう。


2013年12月19日木曜日


ビーコンって何を考えてるんでしょうね?聞いてみたいと思いませんか?

と、唐突に書き始めてしまいました。開発のやりすぎで頭がおかしくなったのでしょうか? いえ、そうではなくて、今回は、ビーコンの近さに応じて、再生する音の大きさを変えてみようというお話です。でも、それはまるで、ビーコンが「近づいたよ〜」「遠のいたよ〜」と言っているように聞こえるので、結構、たのしいのです。(実際には、電波が強くなったよ〜、ですが。。。)

では、さっそく作って行きます。

1.ボタンを押したら、曲を再生する、というところまでを作ります。xcodeのプロジェクト(BeaconVoiceという名前にしました)を作成し、AVFoundation.frameworkを追加します。また、"sounds"というフォルダを作成し、そこに用意したMP3ファイルをおきます(図参照)。


画面はこんな感じ(図参照)。

しょぼいですね〜。音量と電波受信強度のラベルだけはつけときました。

ソースコードは、こんな感じです。(STARTボタンを押すと、曲が再生されて、もう一度押すと、停止する、という動きにしてます。)

ViewController.m


はい、では、次行きましょう。

2.CoreLocation.frameworkをセットして、ビーコンを受信できるようにします。この辺りは、このブログで何回か紹介してますので、コードだけ載っけます。

ViewController.hのプロパティ

ViewController.mのViewDidLoadの中

ViewController.mの中のLocationManagerのデリゲート処理

はい、できました!

では、実行の様子をお聴きください...。


ああ、残念です。音声がお伝えできない。

音量は、0.0〜1.0までの値です。RSSIの値は、-90〜-58にしています。つまり、この画像では、最大値になっています。iPhoneもビーコンもスクリーンショットを撮った開発環境のPCに接続しているので無理ないですね。では、ちょっとビーコンを遠くへ離してみます。

か、かすかに音が聞こえます。そして、ときどき、ゴハッって感じで音が大きくなります。まるで溺れかけの人のように。おおお、いい感じでビーコンの声が聞こえてますね。

まとめ

もともとビーコンの電波がどれくらい不安定なのか知りたく思い、音で体感できるようにしたかっただけなのですが、なかなかいい感じで確認できることがわかりました。例えるなら、トンネルに入ったときのラジオの音でしょうか?でも、ビーコンに近いときは、安定して聴けます。

応用として、ある範囲では、クラシック、ある範囲では、ジャズなど、特定の範囲でだけ特定の音楽が聴けるとかのサービスができそうですね。

(おわり)

ビーコンの声を聞いてみよう!


ビーコンって何を考えてるんでしょうね?聞いてみたいと思いませんか?

と、唐突に書き始めてしまいました。開発のやりすぎで頭がおかしくなったのでしょうか? いえ、そうではなくて、今回は、ビーコンの近さに応じて、再生する音の大きさを変えてみようというお話です。でも、それはまるで、ビーコンが「近づいたよ〜」「遠のいたよ〜」と言っているように聞こえるので、結構、たのしいのです。(実際には、電波が強くなったよ〜、ですが。。。)

では、さっそく作って行きます。

1.ボタンを押したら、曲を再生する、というところまでを作ります。xcodeのプロジェクト(BeaconVoiceという名前にしました)を作成し、AVFoundation.frameworkを追加します。また、"sounds"というフォルダを作成し、そこに用意したMP3ファイルをおきます(図参照)。


画面はこんな感じ(図参照)。

しょぼいですね〜。音量と電波受信強度のラベルだけはつけときました。

ソースコードは、こんな感じです。(STARTボタンを押すと、曲が再生されて、もう一度押すと、停止する、という動きにしてます。)

ViewController.m


はい、では、次行きましょう。

2.CoreLocation.frameworkをセットして、ビーコンを受信できるようにします。この辺りは、このブログで何回か紹介してますので、コードだけ載っけます。

ViewController.hのプロパティ

ViewController.mのViewDidLoadの中

ViewController.mの中のLocationManagerのデリゲート処理

はい、できました!

では、実行の様子をお聴きください...。


ああ、残念です。音声がお伝えできない。

音量は、0.0〜1.0までの値です。RSSIの値は、-90〜-58にしています。つまり、この画像では、最大値になっています。iPhoneもビーコンもスクリーンショットを撮った開発環境のPCに接続しているので無理ないですね。では、ちょっとビーコンを遠くへ離してみます。

か、かすかに音が聞こえます。そして、ときどき、ゴハッって感じで音が大きくなります。まるで溺れかけの人のように。おおお、いい感じでビーコンの声が聞こえてますね。

まとめ

もともとビーコンの電波がどれくらい不安定なのか知りたく思い、音で体感できるようにしたかっただけなのですが、なかなかいい感じで確認できることがわかりました。例えるなら、トンネルに入ったときのラジオの音でしょうか?でも、ビーコンに近いときは、安定して聴けます。

応用として、ある範囲では、クラシック、ある範囲では、ジャズなど、特定の範囲でだけ特定の音楽が聴けるとかのサービスができそうですね。

(おわり)

2013年12月16日月曜日



はじめに

飛行機を使った移動で一番困るのが到着時の荷物受け取り
いつまで待っても預けた荷物が出てこない、いやとっくの昔に出てしまったかも?、もしかしたらロストバゲット!?
流れるベルトコンベアを眺め続けながら、いつもこのような不安がよぎります・・・
今回はそんな悩みをiBeaconで解決してみたいと思います。

iBeaconで海外渡航を楽しく



はじめに

飛行機を使った移動で一番困るのが到着時の荷物受け取り
いつまで待っても預けた荷物が出てこない、いやとっくの昔に出てしまったかも?、もしかしたらロストバゲット!?
流れるベルトコンベアを眺め続けながら、いつもこのような不安がよぎります・・・
今回はそんな悩みをiBeaconで解決してみたいと思います。

2013年11月4日月曜日

11月2日(土)に、スマベン(=スマートフォン勉強会)関西が開かれました。

http://sumaben.jp/?KansaiSpecial05BLE

今回は、メインスピーカーに上原昭宏氏を迎えて、Bluetooth Low Energyの勉強会をするということで私も参加してきました。

参加者はハードウェアの製造をされる方からソフト開発者、ウェブサービス開発者、マスコミ関係者まで幅広く、マッシュアップが非常に期待される顔ぶれでした。それほどBLE/iBeaconに対する各分野からの関心が高いということでしょう。

[コラム] スマベン関西に参加してきました。

11月2日(土)に、スマベン(=スマートフォン勉強会)関西が開かれました。

http://sumaben.jp/?KansaiSpecial05BLE

今回は、メインスピーカーに上原昭宏氏を迎えて、Bluetooth Low Energyの勉強会をするということで私も参加してきました。

参加者はハードウェアの製造をされる方からソフト開発者、ウェブサービス開発者、マスコミ関係者まで幅広く、マッシュアップが非常に期待される顔ぶれでした。それほどBLE/iBeaconに対する各分野からの関心が高いということでしょう。

2013年10月16日水曜日

iBeaconで使えるビーコンがなんとか3つ揃いましたので、測位を試してみました。


使用したビーコン

  1. iPhone5c(Peripheralとして動作するiPhoneアプリ)
  2. BLE Mini (RedBearLab社)
  3. RaspberryPI(+ Bluz iBeacon)

屋内測位をやってみました

iBeaconで使えるビーコンがなんとか3つ揃いましたので、測位を試してみました。


使用したビーコン

  1. iPhone5c(Peripheralとして動作するiPhoneアプリ)
  2. BLE Mini (RedBearLab社)
  3. RaspberryPI(+ Bluz iBeacon)

Raspberr PIで動作するiBeaconプログラムがGitHubにあったので、動かしてみました。


USBのBluetoothドングルを使用する。

【手順】
・Raspberry PIにRaspbian(Raspberry用Debian)をインストールする。
・bluez、bluez-firmware、libbluetooth-devをインストールする。
# apt-get install bluez bluez-firmware libbluetooth-dev
・bluez-ibeaconのソースコードをチェックアウトする。
 (https://github.com/carsonmcdonald/bluez-ibeacon)

・bluez-ibeaconのbluez-beaconをビルドする。
・bluez-ibeaconのBeaconDemoをXcodeでビルドしてiPhoneにインストールする。




・BeaconDemoに表示されているUUID、Major、Minorでbluez-beaconを実行する。

# ./ibeacon 200 422106B972F04B7794FCA5D69D93F58B 1 1 -59
(第一引数はアドバタイジングパケットの送信インターバル(ms)、UUIDは、ハイフンを取り除いて記述しなくてはならない。)

・BeaconDemo上でステータスがOutdoor→Indoorに切り替わることを確認する。

       ->           


[Tips] RaspberryPIでiBeacon

Raspberr PIで動作するiBeaconプログラムがGitHubにあったので、動かしてみました。


USBのBluetoothドングルを使用する。

【手順】
・Raspberry PIにRaspbian(Raspberry用Debian)をインストールする。
・bluez、bluez-firmware、libbluetooth-devをインストールする。
# apt-get install bluez bluez-firmware libbluetooth-dev
・bluez-ibeaconのソースコードをチェックアウトする。
 (https://github.com/carsonmcdonald/bluez-ibeacon)

・bluez-ibeaconのbluez-beaconをビルドする。
・bluez-ibeaconのBeaconDemoをXcodeでビルドしてiPhoneにインストールする。




・BeaconDemoに表示されているUUID、Major、Minorでbluez-beaconを実行する。

# ./ibeacon 200 422106B972F04B7794FCA5D69D93F58B 1 1 -59
(第一引数はアドバタイジングパケットの送信インターバル(ms)、UUIDは、ハイフンを取り除いて記述しなくてはならない。)

・BeaconDemo上でステータスがOutdoor→Indoorに切り替わることを確認する。

       ->           


2013年10月11日金曜日


iBeacon は、iOSでBLEを利用できるようにしたもの、という認識でしたが、調べてみるといろいろと知っておかないといけないことがあるようです。

例えば、ビーコンを表現したCLBeaconというクラスがCoreLocationフレームワークにありますが、信号を受信できるビーコンは、Apple社のベンダー情報が設定されていないと行けないことがわかりました。どうもAppleとのNDA契約がないと勝手にiBeaconの製品を販売できないことになっているようです。

また、CoreLocationフレームワークは、GPSやネットワークを使った測位全般を扱うフレームワークですが、そこにBLEを使った領域観測の窓口があるのは、アプリ開発者にとって直にBluetoothのプロファイルを扱わなくてもよいというメリットがあります。

調べた内容は、「iBeacon開発」(ダウンロードはこちら)にまとめましたので、ご覧ください。

iBeaconの仕組を調べてみました


iBeacon は、iOSでBLEを利用できるようにしたもの、という認識でしたが、調べてみるといろいろと知っておかないといけないことがあるようです。

例えば、ビーコンを表現したCLBeaconというクラスがCoreLocationフレームワークにありますが、信号を受信できるビーコンは、Apple社のベンダー情報が設定されていないと行けないことがわかりました。どうもAppleとのNDA契約がないと勝手にiBeaconの製品を販売できないことになっているようです。

また、CoreLocationフレームワークは、GPSやネットワークを使った測位全般を扱うフレームワークですが、そこにBLEを使った領域観測の窓口があるのは、アプリ開発者にとって直にBluetoothのプロファイルを扱わなくてもよいというメリットがあります。

調べた内容は、「iBeacon開発」(ダウンロードはこちら)にまとめましたので、ご覧ください。

2013年10月10日木曜日

BLEでどういったことができるのか、現状で手に入るBLEモジュールとそのサンプルプログラムを動かしてみました。今回はRedBearLab社の2つを使用しました。



BLE Shield

Arduino用のシールドです。
2013/10/07現在でArduino Uno、Arduino Mega、Arduino Leonardoの3つに対応しています。
公式サイトで提供されているサンプルスケッチはFirmataプロトコルと呼ばれるArduinoを制御できる汎用プロトコルをBLE経由で使用できるものです。



公式サイトからダウンロードできるファイルは次の3つから構成され、それぞれ次のライセンスが記載されていました。
・BLEライブラリ(MITライセンス)
・BLE用Firmataライブラリ(LGPLライセンス)
・サンプルスケッチ(LGPLライセンス)
比較的扱いやすいライセンスが適用されています。

Arduinoに装着し、サンプルスケッチを書き込めば直ぐに使用できました。iPhone用のサンプルプログラムをAppStoreからダウンロードし、実行します。接続画面からArduinoに接続するとArduinoの操作画面が表示されます。操作画面からはArduinoの各ピンの電圧のON/OFFや値の読み取りが行えます。

サンプルスケッチではBLE経由のFirmataプロトコルの通信のみとなっていますが、内部実装を見たところ、通常のシリアル通信のようなやり取りもできるようになっていますので、自分でプロトコル設計をすれば独自のことも行えそうです。

BLE Mini

UARTインターフェースを持ったBLEモジュールです。
このBLEモジュールにはPINが6本あり、内2本がTX、RXのUARTインターフェースとなっており、標準的なシリアル通信が行うことができます。UARTインターフェースなのでArduinoに限らずRaspberry Pi、BeagleBone、Netduino、RENESAS、PICと幅広いボードで利用可能できそうです。




BLE Shield同様にFirmataプロトコル用のサンプルスケッチが提供されています。
※このサンプルスケッチはArduino Uno用になっており、Arduino Leonardoで動作させるには修正が必要でした。

BLE Miniはファームウェアの書き換えが可能で、後述のiBeaconのように単独での動作も可能になります。公式サイトによるとファームウェアの開発環境についてはまだベータ版ということですが、今後の広がりに期待が持てます。

iBeaconとBLE Mini

BLE MiniにはArduinoのような別のマイコンに接続せず、
単独でiBeaconとなるファームウェアが提供されています。
2013/10/07現在は正式な仕様が公開されておらず、
このファームウェアは試験評価用という位置づけですが、
こちらもiPhone用のサンプルプログラムが公開されており、
どのように動作するかを体験することができます。




非常に汎用的ですので応用すれば自分たちでBLEを用いたハードウェアを創ることもできます。BLEは省電力かつ手軽に使えるということからこれを使ったデバイスが増えていくことが期待されますので、これからもこういったモジュールを追って行きたいと思います。


なお、今回紹介したRedBearLab社のBLEモジュールは技術基準適合は受けておりません。電波暗室や電波障害を起こさない十分に広い敷地・建屋内で実験を行ってください。不用意に電波を発射すると、日本の法律に反する可能性がありますのでご注意ください。

[Tips] BLEモジュールを試してみました

BLEでどういったことができるのか、現状で手に入るBLEモジュールとそのサンプルプログラムを動かしてみました。今回はRedBearLab社の2つを使用しました。



BLE Shield

Arduino用のシールドです。
2013/10/07現在でArduino Uno、Arduino Mega、Arduino Leonardoの3つに対応しています。
公式サイトで提供されているサンプルスケッチはFirmataプロトコルと呼ばれるArduinoを制御できる汎用プロトコルをBLE経由で使用できるものです。



公式サイトからダウンロードできるファイルは次の3つから構成され、それぞれ次のライセンスが記載されていました。
・BLEライブラリ(MITライセンス)
・BLE用Firmataライブラリ(LGPLライセンス)
・サンプルスケッチ(LGPLライセンス)
比較的扱いやすいライセンスが適用されています。

Arduinoに装着し、サンプルスケッチを書き込めば直ぐに使用できました。iPhone用のサンプルプログラムをAppStoreからダウンロードし、実行します。接続画面からArduinoに接続するとArduinoの操作画面が表示されます。操作画面からはArduinoの各ピンの電圧のON/OFFや値の読み取りが行えます。

サンプルスケッチではBLE経由のFirmataプロトコルの通信のみとなっていますが、内部実装を見たところ、通常のシリアル通信のようなやり取りもできるようになっていますので、自分でプロトコル設計をすれば独自のことも行えそうです。

BLE Mini

UARTインターフェースを持ったBLEモジュールです。
このBLEモジュールにはPINが6本あり、内2本がTX、RXのUARTインターフェースとなっており、標準的なシリアル通信が行うことができます。UARTインターフェースなのでArduinoに限らずRaspberry Pi、BeagleBone、Netduino、RENESAS、PICと幅広いボードで利用可能できそうです。




BLE Shield同様にFirmataプロトコル用のサンプルスケッチが提供されています。
※このサンプルスケッチはArduino Uno用になっており、Arduino Leonardoで動作させるには修正が必要でした。

BLE Miniはファームウェアの書き換えが可能で、後述のiBeaconのように単独での動作も可能になります。公式サイトによるとファームウェアの開発環境についてはまだベータ版ということですが、今後の広がりに期待が持てます。

iBeaconとBLE Mini

BLE MiniにはArduinoのような別のマイコンに接続せず、
単独でiBeaconとなるファームウェアが提供されています。
2013/10/07現在は正式な仕様が公開されておらず、
このファームウェアは試験評価用という位置づけですが、
こちらもiPhone用のサンプルプログラムが公開されており、
どのように動作するかを体験することができます。




非常に汎用的ですので応用すれば自分たちでBLEを用いたハードウェアを創ることもできます。BLEは省電力かつ手軽に使えるということからこれを使ったデバイスが増えていくことが期待されますので、これからもこういったモジュールを追って行きたいと思います。


なお、今回紹介したRedBearLab社のBLEモジュールは技術基準適合は受けておりません。電波暗室や電波障害を起こさない十分に広い敷地・建屋内で実験を行ってください。不用意に電波を発射すると、日本の法律に反する可能性がありますのでご注意ください。

2013年10月4日金曜日


最近よく耳にするiBeaconとはなんでしょうか。Appleはまだ明言していないようですが、いろいろなサイトを読むと、Bluetooth 4.0 で導入されたBLE(=Bluetooth Low Energy)をiOSで使えるようにしたものの総称のようです。iOS7から実装されています。

今、流行のiBeaconとは?


最近よく耳にするiBeaconとはなんでしょうか。Appleはまだ明言していないようですが、いろいろなサイトを読むと、Bluetooth 4.0 で導入されたBLE(=Bluetooth Low Energy)をiOSで使えるようにしたものの総称のようです。iOS7から実装されています。

Related Posts Plugin for WordPress, Blogger...