こんにちは、 iOS エンジニアの伊藤です。

今回は、iOSのUWB機能を検証した記事を書かせていただきます。
 
UWBはU1チップとして、iPhone11シリーズ以降のiPhone、Apple Watch Series 6以降に搭載されています。
AirTagの位置情報が室内でも特定できる様になったり、AirDropの通信を高速にしたりとiPhoneの機能をより便利にしています。

そんなUWBのアクセサリを自社で開発できるようにサードパーティ製用のFrameworkとして、Nearby Interactionが更新されました。
検証用のチップも入手して、 実際に試してみたので結果を残しておきたいと思います。
 


​Nearby Interactionとは


Apple Documentation - Nearby Interaction

UWBアクセサリやiPhone、AppleWatchなどとUWB通信するためのFrameworkです。 iOS15へのアップデートからサードパーティ製での開発が可能となっています。

Bluetooth通信ではセッションを生成するため、特定のCharacteristicにMessageDataを書き込みを行い、設定データを取得します。
取得した設定データを利用し、UWBのDelegateを取得できるセッションを生成します。

swift
コードをコピー

configuration = try NINearbyAccessoryConfiguration(data: configData)

let session = NISession()

session.delegate = self

session.run(configuration)




セッションの生成に成功すると、func session(_ session: NISession, didGenerateShareableConfigurationData shareableConfigurationData: Data, for object: NINearbyObject) のDelegateメソッドがコールされます。

ここで、設定データを利用して生成し保持していたトークンと、Delegateからの取得トークンを比較し、等しいことが確認できると、func session(_ session: NISession, didUpdate nearbyObjects: [NINearbyObject]) から、UWB情報の距離・方向がDelegateで渡される様になります。
この時、Privacy - Nearby Interaction Usage Descriptionが許可されていないと、全てのデータが取得できません。

ちなみに取得できるデータの方は、Frameworkすべて計算してくれており、既に数値になっています。

距離 distance - simd_float3?
方向 direction - Float?


検証内容


Apple認証済みのbeta UWB開発キット(beta UWB development kits)を開発している会社は NXP Semiconductors, Qorvoです。(Apple公式より)

幸運にも、自社に電気設計チームがいますのでお願いして入手しようと思ったら、既に会社に基板がありました。
(本当にありがとうございます。)
Qorvoのbeta UWB開発キットが搭載されている評価ボード、 Type 2AB | UWB Modules | 村田製作所 - MurataType 2ABを利用して検証していきます。


Qorvoのページより、評価ソフトウェアをダウンロードします。

ファイル内にFWファイル、Xcodeプロジェクトのdiffなどが入っています。

幸運にも、自社にFWチームがいますので、FWファイルを基板に書き込んでもらいました。
(本当にありがとうございます。)

iOSプロジェクトについては、Apple公式よりダウンロードを行うことができます。
Apple Documentation - Implementing Spatial Interactions with Third-Party Accessories

ダウンロードしたiOSプロジェクトに、評価ソフトウェアのdiffファイルを適用します。
これでアプリが実動作できる環境が整いました。


実践動画


アプリを起動すると、自動でBLE探索を行い、UWB評価キットとの接続が確立します。

'Run Session'のボタンを押すと、アプリ内の3D矢印が生成され、UWB評価キットの方へ向きを変えることが確認できました。
 


検証の中で以下のテストも行いました。

・バッググラウンドからの復帰時にセッションが自動で貼り直されること。
バックグラウンド中でも動くというわけではない点が残念かもしれませんが、再接続に関しては柔軟に対応できそうです。

・複数のUWBデバイスとの同時接続が行うことができて、データが取得できること。
複数のUWBに接続できるので、より正確な位置を検出できるようになりますね。
データも数値で渡されるため、複数を同時で接続しても処理が大変にならなさそうです。
 


最後に


UWBで近距離探索もできる様になり、Appleの『探す』の機能もMFiの認証を通せば開発できる様になるので、 AirTagを自社で作ることも可能になりますね。

自社のPILEzシリーズや自社製品などに機能を搭載して、もっと色々なことができる様なると思うので、これからも検証を続けていきたいと思っています。
またインパクトがある情報が検証できたら、記事にしていけたらと思います。

ここまでご覧いただきありがとうございました。
 



※今回利用する開発チップはベータ版となり、製品としては活用できないことになっています。​製品版に活用できるものが出てくるのが楽しみですね。
http://www.qorvo.com/products/p/DWM3001CDK#evaluation-tools

Nearby Interaction Beta Evaluation Software
The Nearby Interaction Beta Evaluation Software enables developers to easily evaluate new app experiences based on location, distance and direction relative to a U1-equipped iPhone or Apple Watch.
Compatible with DWM3001CDK
Download and flash binary to DWM3001CDK target
The Qorvo software related to Apple U1 interoperability is solely for your information and evaluation purposes. You shall not use the software related to Apple U1 interoperability to develop or make any device, accessory, software, or other product or service available for distribution to third parties or for sale, lease or license, or otherwise use the Qorvo software related to Apple U1 interoperability directly or indirectly, for any commercial purpose.

SNS SHARE