IoTモノ語り
Bluetoothものがたり & IoT研究会リポート
Eddystoneもあるよ!!
前回のコラムで紹介した「Tapiness」、利用してみましたか?
仕組みを知って利用すると、いつものドリンクも少し味わいが違って感じるのではないでしょうか(笑)
さて、話しは代わって、
“iBeacon”で検索をかけると、”Eddystone”というワードが目に留まることがあります。身近で見かけることは、現時点では少ないかも知れませんが、BLEビーコンについて語るならば、このEddtystoneも外せない!! ということで、今回は、そのEddystoneについて触れたいと思います。
Eddystoneは、Google社が規格し、2015年に発表したBLEビーコン仕様です。 前身は Physical Web といって、後述するURLを送信するフレームのベースとなる規格です。
先行しているiBeaconと差別化を図るため?に、オープンソースとなっています ※1。
GitHub から入手することが可能です。
また、1種のパケットフォーマットのみサポートしているiBeaconに対し、4種のパケットフォーマット(以下フレーム)を定義しています。
4つのフレームタイプ
Eddystone-UID
ペイロードとして16byteのUnique IDを送出します。
Namespace(10bytes)とInstance(6bytes)で構成されています。
iBeaconと同等な役割を担いますが、書式が異なるため、両者間に互換性はありません。
図1. Eddystone-UIDフレーム 書式
Eddystone-URL
ペイロードとして最大17バイト長のURLを送出することが可能です。
URLを送出することで、専用アプリを作成することなくWEBサイトへ誘導することができます。ここが、専用アプリを必要とするiBeconとの差別化ポイントです。ただ、不特定のURLビーコンに反応することになるため、煩わしさが発生する場合があります。
図2. Eddystone-URLフレーム 書式
URL Scheme部とEncodeedURL部は、情報量をコンパクトにするために工夫がなされています。仔細は、Eddystone-URLの仕様書(https://github.com/google/eddystone/tree/master/eddystone-url)に譲ります。
Eddystone-TLM ※2
TLMは、Telemetoryを意味します。
ペイロードとして、ビーコン発振器のバッテリ電圧、温度、アドバタイズ回数、起動時間を送出します。
ビーコンを識別するIDフィールドが定義されていないので、他のフレームと併行して送出する必要があります。
図3. Eddystone-TLMフレーム 書式
Eddystone-EID
EIDはEphemeral(短時間な) IDの略。
AES 128Bitにて暗号化されたEID送信することで、特定の利用者のみが受信出来る様にしています。
他のフレームより後発の仕様でもあります。
図3. Eddystone-TLMフレーム 書式
暗号化キーや更新時間を管理するサーバが別途必要となります。
興味がある方は、仕様書(https://github.com/google/eddystone/blob/master/eddystone-eid/eid-computation.md)を覗いてみてください。
触れてみよう
何事も見聞してみることが大切! ということで、Eddystone 4タイプのフレームをシミュレーションできるAndroidアプリ「BeaconSimulator」を使ってみました。
アプリ起動後、[SIMULATOR]タブが選択されていることを確認後、画面右下にある+ボタンをタップすると、サポートされているフレームタイプが表示されます。(図5 )
EddyStone-UID/ EddyStone-URL/ EddyStone-TLM/ Eddystone-EIDの4つが確認できますね。
図5. Beacon Simulator フレームタイプ選択
今回は、eddystone-URLの利用例を示します。
図6右の画面にて、eddystone-URLのアイコンをタップすると編集画面に遷移します。
[Eddystone URL]フィールドに、送信したいURLの登録し、画面右上にある[レ]をタップすると編集が確定します(鉛筆アイコンに変化)。その後、トップ画面に戻り、送信したいフレームのスライダーを右にスライドさせれば所望のビーコンが発せられます。
図6. Beacon Simulator 編集画面 と ビーコン送信設定
発せられたビーコンを、別のスマートフォン上のアプリ「BLE Scanner」で捕らえたものが図7となります。画面上の[OPEN URL]をタップすると、受信したURL” https://goo.gl/gUg7n8”のサイトにジャンプします。
図7. Eddystone URL 補足画面
PSoC BLEでも
以上、スマートフォンアプリでの検証ですが、もちろん、IoT研究会で活用しているPSoC BLE Pioneer Kitを使って、Eddystone BLEビーコン送受信機を実現することができます。残念ながら今回はここまでとなりますが、どこかのタイミングで紹介したいと思います。
※1 当初は、マルチプラットフォームも差別化ポイントとしていました。コラム「BLEビーコンを紐解く2」にて紹介しました様に、今では、iBeaconも仕様は公開されています。
※2 Eddystone-EISの登場により、Eddystone-TLMのTLM情報の暗号化対応版も策定されています。詳しくは、https://github.com/google/eddystone/blob/master/eddystone-tlm/tlm-encrypted.mdをご覧ください。
IoT研究会レポート
ここからはIoT研究会のレポートをお届けします。
担当は、真瀬さんです。
今回はBLE「ブロードキャスト型」のフォロー実習とBLE「コネクション型」の座学のワークショップが開催されました。
1. Workshop:BLEブロードキャスター型のフォロー実習
ブロードキャスト型の代表例としてBeacon(ビーコン)があり、PSoC BLE Pioneer Kit上で実現しました。受信側スマートフォンでの動作確認を行いました。
◆回路図
PSoC CreatorでBLEコンポーネントを配置。送信状態を示すLEDと制御用のポートも付け加えました。
◆ピンアサイン
PO_LED_G(緑)とPO_LED_B(青)のピンアサインは下図です。
◆コンフィギュレーション設定
GAP設定などを行います。UUIDを設定しますがスマホアプリを利用する際に重要な鍵となります。
◆ユーザーソースコード
BLEの状態変化で発生するイベント処理、アドバタイズメントパケットの送信・停止制御処理などを実装します。
◆ビルド・ロード
ビルドが正常終了しますと実行イメージが生成されますので、PSoC BLEデバイスにロードします。
◆PSoC側(ビーコン)の動作確認
BLEのイベントが発生したらLED(緑)を点灯、ペイロード更新の関数が呼ばれたらLED(青)を点灯します。
◆スマートフォンでの動作確認
無償BLE-Beaconアプリを利用します。下図はAndroidの例ですがノコギリ歯が表示されることが確認できます。
2. Workshop:BLEコネクション型の座学
次回実習でコネクション型を使うため、今回は予備知識の座学でした。
[A] コネクション型は接続相手のみと通信を行う形態
マスタにあたるデバイスを「セントラル(Centarl)」と呼び、スレーブにあたるデバイスを「ペリフェラル(Peripheral)」と呼ぶ。
[B] スター型のネットワークトポロジー(接続形態)
セントラルが中心となり、そこに複数のペリフェラルが接続するスター型のネットワークトポロジーとなる。
BLEは2.4GHz帯ISMバンドを利用して通信を行う。幅2MHzのチャネルを40本定義し、3本のアドバタイジングチャネルと37本のデータチャネルに分割して通信している。
[C]接続までに使う通信方式、接続後に使う通信方式、そして、プロファイル
■接続までに使う通信方式
アドバタイジング状態のペリフェラルは、アドバタイジングチャネルを利用して、アドバタイジングパケットを送信する。そして、スキャニング状態のセントラルはパケットの受信を待機し、イニシエーティング状態では接続可能な相手に参加要請を送信し接続状態に移行する。接続までに利用するプロファイルは GAP。
■接続後に使う通信方式
接続状態では、セントラルとペリフェラルは、データチャネルを利用してパケット交換を行う。セントラル主導でやり取りする。 接続後に利用するプロファイルは GATT。
■プロファイル
サービスの提供・利用できるかを定義するもの。Bluetooth 4.0で「ATT」(アトリビュート )が導入され、ATTの組み合わせで特定のサービスを記述する体系を「GATT」と呼ぶ。標準プロファイルが用意されている。
最後に
今回のIoT研究会のレポートは真瀬が担当しました。IT業界では、JavaなどのWebシステムのPG/SE/PMを担当し、その後、携帯電話・スマートフォンアプリのプロジェクトに関わり、直近ではインフラ部門に参加しました。現今、ビックデータ、AIの時代ですので、IoT研究会で勉強させて頂いています。次回BLEコネクション型の実習が楽しみです。
飯田 幸孝
ソフトウエアエンジニア。名古屋出身。
計測機器開発メーカ、JAVA VMプロバイダの2社を経て2007年独立。
組込機器用F/W開発に多く従事。2015年より新人技術者育成にも講師として関わる。
モノづくりが好きと宇宙から地球を眺めてみたいという思いが高じて、2009年より宇宙エレベータ開発に手弁当にて加わる。その実現に今後の人生を掛ける。
宇宙エレベータ開発のご縁で静岡大学の衛星プロジェクトStars-Cに参画。2016年秋、担当ユニットが、自身の分身として、一足先に宇宙に行き地球を眺める。