DWM3000EVBを用いたUWB位置測位③ ~iOSデモ編~

## 1. 本記事の目標
+ J-Flash Liteを利用してDW3000とiOSアプリ間で通信を行う
+ iOSアプリでDW3000の位置測位を行う
+ ![demo3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/538f0083-0046-5d49-25b3-5257c2752ea3.gif)

## 2. 準備物
+ セットアップ用PC (ここでは今回使用したものを記載)
    + Panasonic社 Let's note CF-SV1 (Windows 11)
+ 制御用マイコン
    + Nordic Semiconductor社 nRF52840 DK 1台
        + nRF52840を手軽に動かすためのキット
+ UWB信号受信デバイス
    + Qorvo社 DWM3000EVB 1台
        + DWM3000を手軽に動かすためのキット
+ アクセサリ
    + ケーブル (MicroUSB <-> USB Type-A) 2本
    + USB Type-A ハブ 1つ
+ PC上のソフトウェア (インストール手順も含めて後述します)
    + J-Flash Lite
        + nRF52840 DKにデモプログラムを書き込む
+ 本実験は電波暗室で実施

## 3. J-LINKソフトのインストール
+ https://www.segger.com/downloads/jlink/
    + 最新のバージョンを選択
    ![スクリーンショット (623)copy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/c0eeec38-aaf8-d8a9-06e4-77abb367a63e.png)
+ 複数のソフトがインストールされるが今回使用するのは"J-Flash Lite"だけ

## 4. iOS用アプリと通信するためのファイルをダウンロード
+ https://www.qorvo.com/products/p/DWM3001CDK#evaluation-tools
    + Qorvo_Nearby_Interaction Software packageをクリック
    ![スクリーンショット (641).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/f2dee34f-8b6b-f162-821f-b7d859e66849.png)
    + 名前やメールアドレスの入力が要求されるので入力
    + 入力したメールアドレスに以下のようなメールが送信される
    ![スクリーンショット (640).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/19c947c6-4c5d-00c3-e2be-53afa7204378.png)
+ one-time download link からzipファイルをダウンロード
    + 以下のようなzipファイルが保存されていればOK
    ![スクリーンショット (642).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/b5ff0672-20d7-7c7f-92b9-9499ac067c00.png)

## 5. iOS用アプリをiPhoneにダウンロード
+ App Storeで"qorvo nearby interaction" と入力して以下のアプリをダウンロード
![IMG_5201.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/610d2a1f-5015-fdbf-bf3e-efed23c7c4a3.jpeg)

## 6. nrf52840に通信用ファイルの書き込み
+ DWM3000EVBをジョイントしたnrf52840をUSBでPCに接続
    + 詳しくは[こちら](https://qiita.com/tukurida/items/9ebd68ab97daff315d7e)
+ J-Flash Liteを起動
+ デバイスの選択で"nrf52840"と入力
![スクリーンショット (633)copy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/e7672b0a-53b4-5d17-cb8c-9bc02d85d0f6.png)
![スクリーンショット (634).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/8d2381aa-19d6-19da-a13d-e2a27aa5a347.png)
+ 'Data File' からhexファイルを選択
    + 4.でダウンロードしたzipファイルにある"nRF52840DK-QANI-FreeRTOS_full_QNI_3_0_0.hex" (Qorvo_Nearby_Interaction_3_1_0.zip\Qorvo_Nearby_Interaction_3_1_0\Software\Accessory\Binaries) を選択
    ![スクリーンショット (66).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/4d1d2ce6-f366-ff5b-69dc-c4210d40e59b.png)
+ 'Program Device'から通信プログラムを書き込みたいnrf52840を選択
![スクリーンショット (67).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/63714908-fc73-8fc0-eace-4dcac7b20ea8.png)
![スクリーンショット (68).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/31e6d8db-3f2f-7899-41b3-a78684fda5e4.png)

## 7. iOSアプリで位置測位
+ 5.でiPhoneにインストールした"Qorvo Nearby Interaction"を起動
+ 6.で書き込んだnrf52840を選択できるようになっているので"connect"をタップ
+ 位置測位開始
    + 矢印で位置が示される
    + distance:距離
    + azimuth: 角度
    + elevation: 高度
![IMG_0011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/ed2ee7ac-ce36-f7a2-73db-5a79d3ed0ef4.png)

## 8. 参考
+ 今回紹介した"J-Flash Lite"は[この記事](https://qiita.com/tukurida/items/9ebd68ab97daff315d7e)で扱っているSES (Segger Embedid Studio) 上でTarget -> Connect, Download に相当する.hexファイルの書き込みを行うことができるファームウェアライターである
+ つまり，上記の記事内で述べたDW3000同士の通信も，一度SES上でデモプロジェクトをビルドし，通信を行うための.hexファイルが生成されれば，J-Flash Liteでnrf52840上に簡単に書き込むことができる.
    + .hexファイルはDW3xxx_QM33_XR6.0C\DW3xxx_XR6.0C_24Feb2022\Release_XR6.0C\Software\Slotted_TWR_Demo_ARM\nRF52840_DK\Sources\twr_demo\twr_demo\NRF_Juniper\twr_demo\Output\Release\Exeに生成されている

## 9. 関連記事
+ [DWM3000EVBを用いたUWB位置測位① ~セットアップ編~](https://qiita.com/tukurida/items/e17481a2f9a9c7532dc1)
+ [DWM3000EVBを用いたUWB位置測位② ~PCデモ編~](https://qiita.com/tukurida/items/9ebd68ab97daff315d7e)
+ [DWM3000EVBを用いたUWB位置測位④ ~AirTag傍受編~](https://qiita.com/tukurida/items/cfc9ded74661956a613b)