FindMeプロファイルの概要

実践編第3弾は、GATTプロファイルを利用したアプリケーションを紹介します。

GATTプロファイルは、本連載第5回「ギャップ(GAP)やガット(GATT)が命」の表1にあるように、標準プロファイルがBluetooth SIGによっていくつか定義されています。今回は、その中でも、PSoC BLE Pioneer kitのみ、かつ比較的容易に実現できる Find Me Profile(FMP)に焦点をあてます。

実行環境のご提供

本稿で紹介する実行環境を以下のリンクからダウンロードいただけます。ぜひ、こちらも参照しながら、解説をご覧ください。

なお、サンプルアプリケーションは、利用する環境によっては動作しない場合があります。お問合せへの対応は難しいため、大変恐縮ですが、動作しない場合は、周囲の経験者などに支援してもらってください。こちらの条件にご同意のうえ、ダウンロードをお願いいたします。

>> 実行環境ダウンロード (要 IT Search+会員登録)

FMPの仕様書は、Bluetooth SIGより入手(PDFダウンロード)できます。詳細はそちらを見ていただくこととし、ここでは、概要のみ説明します。

FMPは、音や光などのアラートを発することで、探しものがここにあるよと知らせる「Find Me Target」(以下、Targetロール)と、探しものをみつける際、手元で操作する「Find Me Locator」(以下、Locatorロール)の2つで構成されます(図1)。

図1 : Find Me プロファイル構成図

Targetロールは、サービスとして「Immediate Alert Service」を1つ持ちます。そして、Immediate Alert Serviceが持つキャラクタリスティック「Alert Level Characteristic」に、定義されている値「No Alert(0)/Mild Alert(1)/High Alert(2)」を、BLEコネクション型通信を介してLocatorから書き込むことで、FMPとしての役割を実現します。

サービスとキャラクタリスティックの関係については、本連載第5回も参考にしてください。

いざ実装

では、実装に入りましょう。

実は、図1のような構成で、TargetロールをPSoC BLE+ベースボード(以下、ベースボード)、 Locatorロールをスマートフォンに担わせる場合、サンプル実装やスマフォ用アプリが用意されているので、いとも簡単に実現できます。

Code example版Find Me Profileの実装手順を簡単に紹介します。

新規プロジェクトの作成手順において、[Target hardware]を適切に設定した後、[Select project template]ダイアログにて、[Code example]を選択。続く[Select a code example]ダイアログにて[BLE_FindMe]を選択。そして、 [Workspace name]/[Project name]等を適切に設定し、[Finish]ボタンを押下することで、目的とするプロジェクトが生成されます。

最後に、ビルド & ダウンロードを行うことで、PSoC BLEデバイスがTargetロールとなります(図2)。

図2 : PSoC Creator 画面 (左からProject Template選択時・Sample Code選択時・Project作成完成後)

スマフォ側は、アプリ「CySmart」をインストールします。Android版はGoole Play Storeから、iOS版はApp Storeから入手可能です。

図3 : CySmart アプリ画面

PSoC BLEベースボード上のLEDが緑色にある状態(必要に応じてリセットボタン押下)にて、アプリ「CySmart」を起動します。Targetが見つかると図3左画面のように[Find Me Target]が表示されます(表示されない場合は、画面ボトム方向にフリックします)。

画面上の[Find Me Target]近傍をタップ。その後、画面を水平方向にフリックして、図3中央画面にあるように[Find Me]アイコンを表示させます。タップ後、画面上方に、Alertレベルを選択できるドロップダウンリストが現れますので、所望の値を選択します。

図4は、LocatorであるCySmartアプリ上で、[High Alert]を選択した際のTarget上の様子です。LEDが青色点灯します。

図4 : Find Me Target 上のLED(青色)点灯

手応えがないので、もうふたひねり

Code example版Find Me Profileの実装手順は以上です。ですが、これでは、本コラムで紹介する意味が薄いですね。で、ふたひねりします……。

Locatorとして、PSoC BLE Pioneer Kitに含まれていて、これまでこの連載で触れてこなかった「CySmart USB dongle」(以下、ドングル)を使います(図5)。

図5 : CySmart USB dongle

また、ドングルとベースボードの両方に LocatorロールとTargetロールを実装します。つまり、ドングル/ベースボードの双方から、他方の機器をFind Meできるようにします。

GATTプロファイルを利用する場合、コネクション型接続となりますので、Centralデバイスが必要です(本連載第4回)。

今回は、ドングルとベースボードのどちらにも2つのロールを搭載しますので、どちらを選択しても良いのですが、便宜上ドングル側をCentralとします。ここまでを、見える化しますと図6となります。

図6 : 双方向 Find Me 構成図

ドングル(Central)側の実装

では、あらためて実装に入りましょう。ドングル側からはじめます。

なお、誌面の関係で、ポイントのみの紹介となります。PSoC Creator操作手順の詳細は過去記事をご覧ください。

ドングル上にもBLEデバイスが搭載されていますが、デバイスタイプが異なりPSoCではなくPRoCとなります。PRoCは、利用できるコンポーネントがPSoCと比べて限定的ではありますが、FMPを実現するには遜色ありません。

PSoC Creatorとの操作上の違いとしては、プロジェクト作成の際、ターゲットデバイスとして[PRoC BLE]を選択する必要があります(図7)。

図7 : Central側デバイス選択ダイアログ

ターゲットデバイスがPRoCの場合、プロジェクトテンプレートの選択肢として [Empty schematic]が表示されません。今回の実装では不要となるコンポーネントも回路図上には表示されてしまいますが、[Pre-populated schematic]を選択することにします(図8)。

図8 : プロジェクトテンプレート選択ダイアログ

続く、ワークスペース名、プロジェクト名等を適宜設定した後、自動生成されたプロジェクトが図9となります。ワークスペース名として「WorkspaceFindMe」、プロジェクト名として「BLE_My_FindMe_Central」と指定しています。

図9 : Central側 プロジェクト外観

グレーアウトされたコンポーネントは、画面上表示はされていますが、コンポーネント用のソースは生成されません。一部のコンポーネントは、ディフォルトで有効状態になっていますが、対象となるコンポーネントにマウスフォーカスした後、右クリックで表示されるポップアップメニューにで[disable]を選択すれば、対象コンポーネントを無効化(グレーアウト)できます(図10)。

図10 : コンポーネントの無効化

また、図9は、実際のCySmart USB dongle ※1に合わせてLEDやSW(Button SW)の構成を修正しています。

※1 ドングルの回路図はCypressのWebサイトから入手可能です。アーカイブファイル「 CY5670 Design Files (Schematic, Layout, Gerber, BOM).zip」の中に含まれています。

なお、SWは、抵抗が付加されることなく、入力ポートに接続されているので、コンフィグレーションにて、プルアップ処理を有効にしておく必要があります(図11)。

図11 : SW用入力ポートのコンフィグレーション

そして、ピンアサインは、図12のようになります。LEDとSWのピンアサインが適切であることが、最低条件です。

図12 : Central側 ピンアサイン

続いて、BLEのコンフィグレーション設定を行います。

まずは、[General]タブ。ここでは、プロファイルを適切に設定することが大切です。

今回は、[Profile]として「Find Me」、[Profile Role]として「Find Me locator(GATT Client)」、[GAP role]として「Central」を選択します。 [Name]も「BLE」に変更しています。(図13)

図13 : Central側 BLE Generalタブ

次に、[Profile]タブ。Server Role配下に、追加サービスとして[Immediate Alert]を追加(図14)。

また、名称を[Server]から[Find Me Target]に変更しています(図15)。

図14 : Immediate Alert サービスの追加

図15 : Central側 BLE Profileタブ 変更後

最後に、[GAP Settings]タブ。

今回の実装では、利用しないので、ディフォルトのままでもいいのですが、将来のために設定しておきます。「My FindMe Central」としています(図16)。

図16 : Central側 BLE GAP Settingタブ

その他のコンフィグレーションは、ディフォルトのままでOKです。

以上でドングル側の実装は完了です。続いてベースボード側の実装に入りますが、長くなってしまったので、次回にご紹介したいと思います。

著者紹介

飯田 幸孝 (IIDA Yukitaka)
- アイアイディーエー 代表 / PE-BANK 東京本社所属プロエンジニア

計測機器開発メーカ、JAVA VMプロバイダの2社を経て、2007年独立。組込機器用ファームウェア開発に多く従事。2015年より新人技術者育成にも講師として関わる。PE-BANKでは、IoT研究会を主宰。

モノづくり好きと宇宙から地球を眺めてみたいという思いが高じて、2009年より宇宙エレベータ開発に、手弁当にて参画。 制御プログラムを担当。一般社団法人宇宙エレベータ協会主催「宇宙エレベータチャレンジ2013」にて、世界最長記録1100mを達成。

宇宙エレベータ開発のご縁で静岡大学の衛星プロジェクトStars-Cに参画。2016年12月、担当ユニットが一足先に宇宙に行き、地球を眺める。

[PR]提供:ホワイトペーパー