LoginSignup
3
4

DWM3000EVBを用いたUWB位置測位② ~PCデモ編~

Last updated at Posted at 2023-05-16

1. 本記事の目標

  • DWM3000EVB間でUWB通信を行う
  • UWB通信の様子をPC上で可視化する
    demo2.gif

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上のソフトウェア (インストール手順も含めて後述します)

  • 本実験は電波暗室で実施

3. ソフトウェアのインストールなどはこちら

4. SES上でのデモプロジェクトのビルド

  • デモプロジェクトを選択

    • File -> Open Solutionからデモプロジェクト (twr_demo_nRF52840.emProject) を選択
    • APIのルートディレクトリ\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の中にある
    • プロジェクトファイルの中にビルドすべきプログラム一式が既に含まれている
      place_project.png
  • デモプロジェクトをビルド

    • これでマイコンに書き込むための実行ファイルが完成する
    • Build -> Build twr_demo_nRF52840
      how_to_build_demo.png

5. デバイスのセットアップ

  • nRF52840 DKの各種スイッチを揃える

    • 下図に従ってセット
    • ①は電源スイッチなので最初はOFFにしておく
    • ②は電源供給スイッチで,真ん中のVDDにしておく
      • それ以外のスイッチだと電力不足で動作が不安定になる
    • ③はDEFAULTにしておく
      • 詳細は不明
        how_to_set_up_nRF52840DK.jpg
  • DWM3000EVBのスイッチを揃える

    • 下図に従ってセット
    • 3V3_Arduinoの方にジャンパを切り替えておく
    • DWM3000EVBのセットアップ
      how_to_set_up_DWM3000EVB.png
  • nRF52840 DKとDWM3000EVBを連結

    • ケーブルでピン同士を半田付けしなくてもOK
    • 下図の通り水平に押し込んでください
      how_to_joint_devices.png
  • 上記手順を2セット分行う

6. デバイスへのデモプログラム書き込み

  • デバイス2台をPCに接続

    • nRF52840のアダプタ (microUSB) とPC (USB Type-A) をデバイスごとに2本のケーブルで接続
    • PC側のUSBポートが不足する場合は別途USBハブを用意してください
  • 各デバイスの電源をONにする

    • nRF52840の電源スイッチをONにする
    • 起動直後にLED4つが一定時間点滅すれば正常起動
  • 各デバイスをSESに接続

    • Target -> Connect J-Link
      • 2台繋いでいるとどちらと接続するか聞かれる
      • デバイス接続は1台ずつしかできないのでまずはどちらかを選択しましょう
    • Target -> Download twr_demo_nRF52840
      • ダウンロード=書き込みの意
        how_to_write_firmware.png

      • nRF52840にプログラムを書き込む

      • 下のステータスバーが黄色の警告のみで赤色のエラーが出なければOK
        build_complete.png

  • 上記手順をもう1台のデバイスでも行う

    • Connect J-Linkでは先ほど選択したものと別のものを選択
    • あとは上記とまったく同様です

7. Tera Termのインストール

  • こちらのページからexeをダウンロード

    • バージョンは最新でOK
      how_to_download_teraterm.png
  • インストーラを用いてインストール

    • 各項目はデフォルトのままインストールを進めてください

8. サンプルプログラムの実行 (Windows)

  • Tera Term1つ目を起動

    • 開くとポートの選択を要求される
    • どのデバイスの仮想画面を作るかに相当
    • USBシリアルデバイス2つのうち1つを選択
      set_up_teraterm_1.png
  • Tera Term2つ目を起動

    • もう一方のUSBシリアルデバイスを選択
  • Tera Term上での動作確認

    • 各ターミナル上で"help"と打ってEnterを押すとコマンド一覧が出てくる
    • 以後コマンドが実行されると"ok"と返答がある
    • 表示が重なることがあっても気にしない
      check_teraterm.png
  • Tera Term1つ目をUWB信号受信側に設定

    • "listener"と入力してEnter
    • listenerは後述のtagが送信するUWBパケットを受信して表示するコマンド
    • コマンドが実行されるとDWM3000EVBのLED2が緑色で点滅
    • 実行を止めるときは"stop"を入力してEnter
  • Tera Term2つ目をUWB信号送信側に設定

    • "tag"と入力してEnter
    • tagはUWBパケットをひたすら送信するコマンド
    • 実行を止めるときは"stop"を入力してEnter
  • 通信が確立されていることを確認して喜ぶ

    • 下図のように通信の様子が出力される (左がlistener,右がtag)
    • 1秒に2回のペースでパケットの受信が確認できる
      check_communication.png

9. サンプルプログラムの実行 (Mac OS)

  • Tera Termの代用としてTerminalを使用

  • Terminal1つ目を起動してdevディレクトリへ移動

    cd ../
    cd ../
    cd dev
    
  • devディレクトリ内で以下のコマンドを入力してTTYを確認

    ls -l tty.*
    
    • Tera Termで選択するUSBシリアルデバイスに相当するものがここに表示される
      check_tty.png
    • 今回はCOM6とCOM9がそれぞれtty.usbmodem0000000000001tty.usbmodem6に対応していた
  • 1つ目のTerminalでscreenコマンドを実行

    screen tty.usbmodem6
    
  • Terminal2つ目を起動して同じくdevディレクトリ内でscreenコマンドを実行

    screen tty.usbmodem0000000000001
    
  • 以降はWindowsと同様に"listener"と"tag"コマンドを入力してパケットの送受信を行う

    • パケットの送受信が確認できた
      check_communication_mac.png

10. 関連記事

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4