DWM3000EVBを用いたUWB位置測位① ~セットアップ編~

## 1. 本記事の目標
+ DWM3000EVBのセットアップを完了する

## 2. 準備物
+ セットアップ用PC (ここでは今回使用したものを記載)
    + Panasonic社 Let's note CF-SV1 (Windows 11)
+ 制御用マイコン
    + Nordic Semiconductor社 nRF52840 DK　2台
        + nRF52840を手軽に動かすためのキット
+ UWB信号受信デバイス
    + Qorvo社 DWM3000EVB 2台
        + DWM3000を手軽に動かすためのキット
+ アクセサリ
    + ケーブル (MicroUSB <-> USB Type-A)　4本
    + USB Type-A ハブ 1つ
+ PC上のソフトウェア (インストール手順も含めて後述します)
    + [Segger Embedded Studio (SES) for ARM V6.20](https://www.segger.com/downloads/embedded-studio/)
        + nRF52840にプログラムを書き込むための統合開発環境
    + [DWM3000 API Software and API Guide](https://www.qorvo.com/products/d/da007992)
        + UWB送受信デバイスをnRF52840で動作させるためのサンプルプログラム
    + [nRF52840のSoftware Development Kit (SDK)](https://www.nordicsemi.com/-/media/Software-and-other-downloads/SDKs/nRF5/Binaries/nRF5SDK160098a08e2.zip)
        + nRF52840でサンプルプログラムを動かすときに必要となるプログラム一式
    + Tera Term
        + 画面を持たないnRF52840に仮想的な画面を用意して動作確認を行う

## 3. Segger Embedded Studio (SES) のインストール
+ [こちらのページ](https://www.segger.com/downloads/embedded-studio/)でバージョンをV6.20と指定してダウンロード
    + これはDWM3000 API Software and API Guideのサンプルプログラムが公開されたタイミングに合わせています
    + 最新版でやるとコンパイルでエラーが発生しました
    + 逆に古すぎても (V5.66) だめでした
     ![how_to_download_SES.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/3cc6595a-0aa8-1c74-4d4e-2849f5377a6f.png)


+ インストーラの手順に従ってインストール
    + ソフトウェア利用規約への同意でI Accept the Agreementを選択しない場合はインストールできません
    + それ以外の項目はデフォルトのままで問題ないのでひたすらNext>で進んでください
    ![how_to_install_SES.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/4e219f6e-34a2-1702-f516-59027a327d25.png)

+ 起動を確認
    + ライセンス利用について毎回起動時に問われます
    ![license_SES.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/0b8ad823-9668-5948-f1aa-cc3708d52e51.png)
    + アカデミック目的であれば特に気にせずAcceptを押してください
    + これからこちらの画面上でマイコンへの書き込みなどを行っていきます
    ![interface_SES.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/3a34965a-c094-a317-4898-e452a7c3e33b.png)


## 4. DWM3000 API Software and API Guide (API) のインストール
+ [こちらのページ](https://www.qorvo.com/products/d/da007992)でダウンロード
    + 上記は直接のダウンロードリンクになります
    + 順を追いたい人は，[DWM3000の公式サイト](https://www.qorvo.com/products/p/DWM3000)からDocuments -> DWM3000 API Software and API Guideをダウンロードしてください
    ![how_to_download_API.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/4ae55d98-1a7a-eec3-6e24-b5949aed0476.png)

+ ダウンロードしたzipファイル (DW3xxx_QM33_XR6.0C.zip) を展開
+ 展開したフォルダ内に潜むzipファイルを展開
    + 展開後の\DW3xxx_XR6.0C_24Feb2022\Release_XR6.0C\Software\Slotted_TWR_Demo_ARM\nRF52840_DK\Sourcesにtwr_demo.zipが入っている
    + このファイルをさらに展開
    + 展開し終えたら展開前のzipファイルは削除してOK
+ 適切な位置にフォルダを移動しておく
    + DW3xxx_QM33_XR6.0Cのパスに"デスクトップ"などといった日本語のパスが入っている人向け
    + 日本語名がパスに含まれていると後ほどビルドエラーを吐く
    + Cドライブ直下に置くなど日本語のパスが混じらない場所にフォルダごと移動しておく

## 5. nRF52840のSoftware Development Kit (SDK) のインストール
+ [DWM3000の公式サイト](https://www.nordicsemi.com/-/media/Software-and-other-downloads/SDKs/nRF5/Binaries/nRF5SDK160098a08e2.zip)からSDKのzipファイルをダウンロード
    + 展開後のルートディレクトリ\DW3xxx_XR6.0C_24Feb2022\Release_XR6.0C\Software\Slotted_TWR_Demo_ARM\nRF52840_DK\Sources\twr_demo\twr_demo\SDKの下に説明書 (readme.md) があり，このREADMEに従ってSDKをAPI内の指定ディレクトリ配下にインストールする必要がある
    + READMEにはSDKインストール元のURLが2つ提示されているが[後者](https://www.nordicsemi.com/-/media/Software-and-other-downloads/SDKs/nRF5/Binaries/nRF5SDK160098a08e2.zip)を選んでダウンロード
    ![how_to_download_SDK.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/65110965-06e7-fac2-5ba1-888aee2b325f.png)

    + 前者を選択するとプロジェクトビルド時にエラーが発生する，原因は不明
+ ダウンロードしたzipファイルを展開
    + 割と重く，我々は5分くらいかかりました
    + 展開されたフォルダを開いてcomponents, config, documentation...などが並んだディレクトリ内の全ファイルをAPIのzipファイルにおける展開後のルートディレクトリ\DW3xxx_XR6.0C_24Feb2022\Release_XR6.0C\Software\Slotted_TWR_Demo_ARM\nRF52840_DK\Sources\twr_demo\twr_demo\SDKに入れる
    ![how_to_install_SDK.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/0ed5e0c7-007b-4dc4-4409-ae76c991e9f7.png)

    + 最終的に以下のようにSDKが配置されていればOK
    
     ![how_to_deploy_SDK.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362010/dc25f869-0697-853e-61b3-46c5d1877ef3.png)

## 6. 受信編はこちら
+ [DWM3000EVBを用いたUWB位置測位② ~PCデモ編~](https://qiita.com/tukurida/items/9ebd68ab97daff315d7e)

## 7. 関連記事
+ [DWM3000EVBを用いたUWB位置測位③ ~iOSデモ編~](https://qiita.com/tukurida/items/4b8fd6bcae04b0c1fb58)
+ [DWM3000EVBを用いたUWB位置測位④ ~AirTag傍受編~](https://qiita.com/tukurida/items/cfc9ded74661956a613b)