一、开发板硬件介绍
1、关于BU03-Kit
BU03-Kit 是一款 UWB 开发板。 该开发板是基于 BU03 (DW3000) 收发模组, 搭载一颗 ST 主控 (STM32F103C8T6) 设计而成的一款测试评估板。 其上的 BU03 模组集成了板载天线, RF 电路, 电源管理。
BU03-Kit 可以用于 双向测距 或 TDOA 定位系统中, 定位精度可达到 10 厘米, 并支持高达 6.8 Mbps 的数据速率。 可广泛应用于物联网(IoT)、 移动设备、 可穿戴电子设备、 智能家居等领域。

2、BU03主要特性 / 性能

采用 SMD-40 插针封装
符合 IEEE 802.15.4-2015 UWB 标准
符合 IEEE802.15.4z(BPRF mode)
支持信道 5、 信道 9
集成简单, 无需 RF 设计
集成 MAC 支持功能
使用 RTLS 的基础架构, 扩展了通信范围
数据速率 850 Kbps, 6.8 Mbps
支持双向测距和 TDOA 和 PDOA 定位方案
提供精确定位和数据传输
定位精度 10 厘米
支持高标签密度
集成 HW AES 256
支持 SPI 接口
模组支持 9 个可配 GPIO
可编程调节发射功率大小
BU03 模组睡眠模式下功耗<1uA
适用于纽扣电池方案
基于 3.3V 的电源, 25° C 的环境温度,功耗表:
模式 |
最小值 |
平均值 |
最大值 |
单位 |
CH5 发射, 速率 0.85Mbps |
- |
17.03 |
- |
mA |
CH5 发射, 速率 6.81Mbps |
- |
15.06 |
- |
mA |
CH9 发射, 速率 0.85Mbps |
- |
24.85 |
- |
mA |
CH9 发射, 速率 6.81Mbps |
- |
22.6 |
- |
mA |
CH5 接收, 速率 0.85Mbps |
- |
39.81 |
- |
mA |
CH5 接收, 速率 6.81Mbps |
- |
40.01 |
- |
mA |
CH9 接收, 速率 0.85Mbps |
- |
49.23 |
- |
mA |
CH9 接收, 速率 6.81Mbps |
- |
48.05 |
- |
mA |
开机瞬间电流 |
- |
174 |
- |
mA |
深度睡眠 deep sleep |
- |
179 |
- |
nA |
管脚功能定义表:
脚序 |
名称 |
功能说明 |
1 |
EXTON |
外部设备启用。在唤醒过程中生效, 并保持活动状态直到设备进入睡 眠模式。 可用于控制设备处于睡眠模式时不需要的外部 DC-DC转换器或其他电路, 以最大限度地减少功耗 |
2 |
WAKEUP |
当生效为激活高状态时, WAKEUP 引脚将 DW3000 从睡眠或 DEEPSLEEP 状态带入操作模式。 如果不使用, 应将其接地 |
3 |
RSTN |
芯片复位管脚, 低电平有效。 可由外部开漏驱动器拉低以重置 DW3000。 不得被外部电源拉高。 生效 RSTn 引脚将完全重置设备, 相当于一次电源循环 |
4 |
IO7 |
GPIO7/SYNC,SYNC 输入引脚用于外部同步。 当不使用 SYNC 输入功 能时, 此引脚可以重新配置为通用 I/O 引脚, 在内部被拉下 |
5 |
VDD |
电源供电, 1.8V~ 3.6V, 外部供电电源输出电流建议在 200mA 以上 |
6 |
VCC |
电源供电, 2.5V~ 3.6V, 外部供电电源输出电流建议在 200mA 以上 |
7 |
VCC |
电源供电, 2.5V~ 3.6V, 外部供电电源输出电流建议在 200mA 以上 |
8 |
GND |
接地 |
9 |
IO6 |
GPIO6/EXTRXE/SPIPHA, 通用 I/O 引脚。 通电时, 它充当 SPIPHA (SPI 相位选择) 引脚, 用于配置 SPI 操作模式。 它可以配置为用作 EXTRXE(外部接收器启用) 。 当 DW3000 处于接收模式时, 此引脚变高。通电后, 引脚将默认为通用 I/O 引脚 |
10 |
IO5 |
GPIO5/EXTTXE/SPIPOL, 通用 I/O 引脚。 上电时,它充当 SPIPOL (SPI 极性选择)引脚, 用于配置 SPI 操作模式。 通电后, 引脚将默认为通用 I/O 引脚。 它可以配置为用作 EXTTXE(外部传输启用) 。 当 DW3000 处于传输模式时, 此引脚变高 |
11 |
IO4 |
GPIO4/EXTPA, 通用 I/O 引脚。 它可以配置为用作 EXTPA(外部功率放大器) 。此引脚可以启用外部功率放大器 |
12 |
IO3 |
GPIO3/TXLED, 通用 I/O 引脚。 它可以配置为用作 TXLED 驱动引脚, 可用于在传输后点亮 LED。 |
13 |
IO2 |
GPIO2/TXLED, 通用 I/O 引脚。 它可以被配置为用作 RXLED 驱动引 脚, 该驱动引脚可以用于在接收模式期间点亮 LED |
14 |
IO1 |
GPIO1/SFDLED, 通用 I/O 引脚。 它可以被配置为用作 SFDLED 驱动 引脚, 当接收器找到 SFD(帧起始分隔符) 时, 该驱动引脚可以用于点亮 LED |
15 |
IO0 |
GPIO0/RXOKLED, 通用 I/O 引脚。 它可以被配置为用作 RXOKLED 驱动引脚, 该驱动引脚可以用于在接收到良好帧时点亮 LED |
16 |
GND |
接地 |
17 |
CSN |
SPICSn, SPI 芯片选择。 SPICSn 上的高到低转换用信号表示新 SPI 事务的开始。 SPICSn 也可以作为唤醒信号, 使 DW3000 脱离 SLEEP 或 DEEPSLEEP 状态 |
18 |
MOSI |
SPI 数据输入 |
19 |
MISO |
SPI 数据输出 |
20 |
CLK |
SPI 时钟输入 |
21 |
NC |
悬空管脚 |
22 |
IRQ |
GPIO8/IRQ,通用 I/O 引脚。 从 DW3000 到主机处理器的中断请求输出。 默认情况下,IRQ 是有效高输出, 但如果需要, 可以配置为低有效。为了在 SLEEP 和 DEEPSLEEP 模式下正确操作,应将其配置为 主动高有效。该引脚将在 SLEEP 和 DEEPSLEEP 状态下浮动, 除非外部拉低(建议 100kΩ ) ,否则可能会在主机上造成虚假中断。 当不使用 IRQ 功能时, 引脚可以重新配置为通用 I/O 线路 |
23 |
NC |
悬空管脚 |
24 |
GND |
接地 |
注:除了 SPICSn 外, 所有 GPIO 引脚都有一个软件可控的内部下拉电阻器, SPICSn 具有上拉功能, 以确保输入引脚未被驱动时的安全操作。内部电阻器的值可随 VDD 电源电压的变化而变化, 范围从 10 kΩ (VDD 为 1.8V) 到 30 kΩ 。
3、按键及指示灯说明 / 引脚示意图 / 原理图
按键及指示灯说明图:

引脚定义示意图:

相关部分原理图:


二、关于BU03模组功能介绍
BU03 是基于 Decawave 的 DW3000 系列芯片设计的超宽带(UWB)模组。
1、关于超宽带(Ultra Wide Band,UWB)
UWB 全名:Ultra Wideband。是一种无线通信技术,即超宽带技术。
在传统通信体制中,数据传输一般都需要使用载波来承载,UWB 则不需要,取而代之的是通过发送和接收具有纳秒甚至亚纳秒级的极窄脉冲来传输数据,一个信息比特可映射为数百个这样的脉冲。
根据傅里叶时频变换规则可知,单周期 UWB 脉冲时域宽度越短,对应的频域带宽就越宽,这种纳秒级时域脉冲信号,往往能产生具有 GHz 量级的频域带宽,因此这种技术也称 UWB 超宽带技术(带宽非常大)。
IEEE802.15.4z是UWB无线通信的代表性标准,其中有使用Impulse Radio的方式,Impulse Radio使用持续时间短的脉冲信号。
主要特征如下:
- 高精度测距和定位
- 安全性高
- 对其他通信干扰弱
- 低功耗

2、UWB(超宽带)定位方法介绍
【详细介绍点此查看】
基于测距的定位技术
(1) TOA(Time of Arrival,到达时间法)
- 原理:通过测量信号从标签(Tag)到基站(Anchor)的传播时间计算距离,需至少 3个基站 进行三角定位。
- 特点:
厘米级精度(±5cm)
要求设备间严格时钟同步
(2) TWR(Two-Way Ranging,双向测距)
- 子类:
- SS-TWR(单边):依赖一端时钟,响应时间固定。
(SS-TWR是一种仅由一方的设备测量往返时间的方法。在这种手法中,设备A向设备B发送信号,设备B收到该信号后,向设备A发送回复信号。设备A测量从发送到接收所花费的时间并计算往返时间。此方法仅使用设备A就能进行测量,但需要两个设备的时钟同步)
- DS-TWR(双边):两次测距抵消时钟偏差,精度更高(±2cm)。
(DS-TWR是一种用两台设备测量往返时间并共享结果的方法。在这种手法中,设备A向设备B发送信号,设备B收到该信号后,向设备A发送回复信号。设备 A和设备B分别测量各自从发送到接收所需要的时间,并使用这些结果计算往返时间。这种方法不需要时钟同步,因此测量更容易,精度更高)
- 特点:无需严格同步,但功耗较高。

(3) TDOA(Time Difference of Arrival,到达时间差法)
- 原理:利用信号到达不同基站的时间差进行双曲线定位。
- 特点:仅需基站间同步,适合大规模部署 同步误差影响精度
基于角度的定位技术
(4) AoA(Angle of Arrival,到达角法)
AoA是一种计算从设备A看到的设备B放置方向的角度的方法。如图所示,UWB无线中通过AoA进行的角度测量的原理。
设备B发射的电波被设备A的多根天线接收,并且根据接收的电波的相位差计算角度。使用这种方法,能通过用2根天线进行的角度测量(2D AoA)进行平面定位,以及通过用3根天线进行的角度测量(3D AoA)进行三维定位。
- 原理:通过天线阵列测量信号入射角度。
- 子类:
- PDOA(Phase Difference of Arrival):基于相位差测角,精度更高(±1°~5°)。
- ADOA(Amplitude Difference of Arrival):基于信号强度差测角,成本低但精度较差。

3、不同定位技术的差异
UWB 与其他定位技术的核心区别:
技术指标 |
UWB |
蓝牙(BLE 5.1+) |
Wi-Fi(RTT) |
RFID |
GPS |
定位精度 |
厘米级(±0.5~10cm) |
米级(1~5m) |
米级(1~3m) |
米级(1~10m) |
米级(5~10m) |
抗干扰能力 |
极强(宽频脉冲信号) |
较弱(2.4GHz频段拥挤) |
较弱(同频干扰多) |
中等(依赖环境) |
弱(室内不可用) |
功耗 |
低(但高于BLE) |
极低 |
高 |
低(被动式RFID更低) |
高 |
实时性 |
微秒级延迟 |
毫秒级 |
毫秒级 |
秒级 |
秒级 |
覆盖范围 |
短距离(<100m) |
中距离(<100m) |
中距离(<150m) |
短距离(<15m) |
全球覆盖 |
多径效应抵抗 |
极强(窄脉冲穿透性强) |
弱 |
中等 |
弱 |
弱 |
典型应用 |
数字钥匙、AR/VR、工业自动化 |
室内导航、资产追踪 |
室内定位 |
仓储管理、门禁 |
户外导航 |
三、功能效果测试
1、快速上手使用测试
UART1
UART1是BU03-Kit上标有TTL丝印字样的type-C接口,主要用来收发AT指令,进行模式配置的UART口,此UART口使用的是CH340的串口驱动。
(1)接入type-C数据线接到电脑上,打开串口调试助手,并且按下复位按键,调试助手打印如图信息所示,即说明复位按键正常;
(2)发送指令AT,返回OK,则说明收发测试成功;

USB
USB口是BU03-Kit上标有USB丝印字样的type-C接口,主要用来打印测距或者其他信息,此USB口使用的是ST的单片机自带的USB驱动,一般电脑不会自动识别安装,所以需要手动安装驱动。

UART2
UART2的端口测试需要借助USB转TTL工具
(USB 口 / UART2 输出相关测距信息,将在后面章节介绍)
USB转TTL |
BU03-Kit |
3V3 |
3V3 |
GND |
GND |
RX |
TX(PA2) |
TX |
RX(PA3) |
流水灯测试
连接TTL口,通过AT指令 “AT+TESTLED=X”
AT+TESTLED=X |
|
描述 |
开始/停止开发板led(流水灯)测试 X:1:开始测试led 0:停止测试led |
响应 |
OK AT指令处理成功 |
|
ERR AT指令处理失败 |
示例 |
发送:AT+TESTLED=1 响应:OK |
2、UWB 功能测试
关于不同测距 / 定位的功能
测距 / 零位、一维定位
使用1个基站多个标签可实现基站于标签的实时测距功能。由于只有1个基站参与标签的测距,所以只有标签的距离没有方向(零位定位,是否在这个区域周边)。在这个系统基础上再增加一个基站就可以通过2个基站的相对位置和标签与基站之间的距离,实现1条线上的定位(一维定位)

二维定位系统
使用3个基站多个标签可实现最小2维定位系统。此系统缺点存在是,当出现某个基站有遮挡、干扰时,因为没有多的基站数据用于冗余计算会影响标签定位效果。使用时要注意基站标签之间要互相可视。 3基站系统,只需其中任意一个模块(基站/标签都可以输出定位数据)通过USB/UART/WIFI/以太网链接电脑上传定位数据即可,其余基站供电(其余基站会通过UWB无线通讯,将定位数据汇总到自身)

使用4个基站多个标签的2维定位系统。此系统优点是,当出现某个基站有遮挡、干扰时,因为有多的基站数据用于冗余计算,所以定位精度会有一定保障不受干扰。使用时要注意基站标签之间要互相可视。 4基站系统,只需其中任意一个模块(基站/标签都可以输出定位数据)通过USB/UART/WIFI/以太网链接电脑上传定位数据即可,其余基站供电(其余基站会通过UWB无线通讯,将定位数据汇总到自身)

三维定位系统
使用6个以上基站多个标签可实现更大面积的2维定位或3维定位。此系统优点是,定位区域更大,当出现多个基站有遮挡、干扰时,因为有多的基站数据用于冗余计算,所以定位精度会有一定保障不受干扰。使用时要注意基站标签之间要互相可视。 6基站系统,只需其中任意一个模块(基站/标签都可以输出定位数据)通过USB/UART/WIFI/以太网链接电脑上传定位数据即可,其余基站供电(其余基站会通过UWB无线通讯,将定位数据汇总到自身)


部分AT指令
【AT指令表详见】
AT+SETUWBMODE=X |
|
描述 |
算法选择(设置完要保存) X: 0: TWR 1:PDOA |
响应 |
OK AT指令处理成功 |
|
ERR AT指令处理失败 |
示例 |
发送:AT+SETUWBMODE=0 响应:OK |
⬜ |
⬜ |
AT+GETUWBMODE |
|
描述 |
查询当前算法 |
响应 |
OK AT指令处理成功 |
|
ERR AT指令处理失败 |
示例 |
发送:AT+GETUWBMODE 响应:twr_pdoa_mode: 0 OK |
⬜ |
⬜ |
AT+SAVE |
|
|
|
描述 |
保存配置 |
响应 |
OK 保存成功 |
|
ERR 保存失败 |
示例 |
发送:AT+SAVE 响应:OK |
⬜ |
⬜ |
AT+SETCFG=X1,X2,X3,1 |
|
描述 |
设置配置信息(配置完执行保存指令) x1: 设 备ID(0~10) **x2:设备角色(**0:标签 1:基站) **x3:设备信道(**0:信道 9 1:信道 5) 1:(设备速率6.8M)(目前只支持6.8M) |
响应 |
OK AT指令处理成功 |
|
ERR AT指令处理失败 |
示例 |
发送:AT+SETCFG=0,1,0,1 响应: setcfg ID:0, Role:1, CH:0, Rate:1 OK |
⬜ |
⬜ |
AT+RESTORE |
|
描述 |
恢复出厂模式 |
响应 |
OK AT指令处理成功 |
|
ERR AT指令处理失败 |
示例 |
发送:AT+RESTORE 响应: OK |
TWR算法测距、定位
上位机下载地址
测距配置是标签和基站之间的距离测算,一块BU03-Kit需配置为标签,另一块配置为基站
(基站的OLED屏幕 / USB口 将实时显示标签和基站的距离)
(1)测试时要保持天线的净空区域(即标签和基站之间不能有阻挡,否则将会造成测试误差过大或者距离严重折损)
(2)基站或者标签测试时不能放置桌面,否则会出现误差较大
(3)上述两点点确认后仍需要提高精度时可以使用矫正指令来提高精度
测距
1、连接TTL口,通过AT指令来配置,一个设置为基站(A设备),另一个设置为标签(B设备)
在A设备上使用 AT+SETUWBMODE=0
AT+SETCFG=0,1,1,1
以及 AT+SAVE

在B设备上使用 AT+SETUWBMODE=0
AT+SETCFG=0,0,1,1
以及 AT+SAVE

2、A设备(基站) OLED屏显示当前与 B设备的距离信息

升高开发板后测得的数据
未矫正前,实测多次 发现误差大约在20cm左右波动

二维定位
采用二维平面的的坐标测试,使用三基站一标签搭建的室内定位需求。
效果:电脑上位机上显示20米区域范围内定位导航,轨迹显示。
(1)连接TTL****端口使用AT指令逐一配置,使用串口调试助手配置时我们需要配置3个基站1个标签
指令配置完毕后三个基站的OLED屏幕上都将显示与0号标签的实时测距信息(多基站同理)
(2)上述角色配置成功以后,并且打开TWR上位机进入如图示界面,此过程需要连接上0号基站的USB口,并且其他基站和标签保持持续上电。
可能会遇到以下情况:
- 上位机软件无法识别USB口,此时需要先关闭软件,再插拔USB口,再次打开上位机操作;
- 测试所找空地要求空旷无遮挡,并且基站需要离地1.5M以上竖直放置,用三脚架固定等;


PDOA算法测距、测角度
PDOA 上位机下载
方式一不能掉电保存(需重新配置),方式二可以保存
测距 / 角度
方式一【PDOA上位机】
1、连接TTL口,通过AT指令来配置,一个设置为基站(A设备),另一个设置为标签(B设备)
在A设备上使用 AT+SETUWBMODE=1
AT+SETCFG=0,1,1,1
以及 AT+SAVE
在B设备上使用 AT+SETUWBMODE=1
AT+SETCFG=0,0,1,1
以及 AT+SAVE
若TTL口出现报错打印,无需理会
2、连接A设备的USB口,并打开PDOA上位机
(1)点击加入标签以后,上位机将识别到标签出现在区域内,随着移动标签,上位机上实时显示标签的角度A和距离D。
(基站的 OLED 屏幕也会显示距离D和角度A)

方式二【AT指令绑定】
1、连接TTL口,通过AT指令来配置,一个设置为基站(A设备),另一个设置为标签(B设备)
在A设备上使用 AT+SETUWBMODE=1
AT+SETCFG=0,1,1,1
以及 AT+SAVE
在B设备上使用 AT+SETUWBMODE=1
AT+SETCFG=0,0,1,1
以及 AT+SAVE
此时继续观察基站TTL口,将会打印出一串标签 ID,需要填写进AT指令进行绑定。

上述指令设置有后我们从基站的TTL口得到了标签 ID,我们将此ID绑定到基站上,使用如下指令
AT+ADDTAG=267F1313,8834,1,64,0
AT+SAVE
267F1313 为标签 ID,其他参数不变默认填写
此时,基站OLED屏幕显示与标签的距离D和角度A

角度范围(-60° ~ 60°)

移动设备定位功能(AirTag)
主要通过包含UWB芯片(BU03模组)、蓝牙芯片主控(NRF52832)、PDOA算法等,以实现与手机(UWB芯片)交互
【手册 / 开发SDK】
目前,支持UWB芯片的相关设备:
手机品牌 |
已经发布具有UWB芯片的手机型号 |
苹果 |
从2019年发布的iPhone11开始,之后全系iPhone手机标配了UWB芯片,目前最新版的为iPhone16 |
三星 |
旗舰机型“Galaxy S”系列从S22系列开始用UWB芯片,目前最新版本为S24系列,其中高配版(S24 Ultra)、中配版(S24+)有UWB,而标配版无UWB。三星的折叠屏手机W23/ W24/ W25有标配版与低配版两个型号,其中标配版都有UWB芯片,而低配版没有;Galaxy Z Fold6也是一款折叠屏手机,其标配版有UWB,而低配版无UWB。 |
谷歌 |
谷歌的手机品牌Pixel在Pixel6开始支持UWB,后续每个版本也都支持,目前最新为Pixel9,不过Pixel手机一般是在高配的“Pro”版本支持UWB。 |
华为 |
2024年最新发布的:Mate XT 非凡大师与Mate 70 RS 非凡大师两款手机中有UWB芯片。2023年华为的Mate 60 Pro据悉也有UWB。 |
小米 |
小米在2021年发布的Mix4加入了UWB芯片,不过后续并没有UWB的机型推出。 |
魅族 |
魅族21PRO、魅族20PRO、魅族 20 INFINITY无界版等 |
蔚来 |
全新 NIO Phone 共3个版本都有UWB |
3、功耗测试
在功耗测试设备有限的情况下,固件为出厂固件,TWR算法下:一个为基站,一个为标签
所测得的大致功耗如下:
标签:318.2mW
基站:487.3mW

四、测距精度矫正 / 串口数据解析
1、串口数据解析
TWR算法
(1) 连接至基站的USB口,在串口助手上,将收到以下的Hex数据格式
字段 |
字节数 |
含义(低位在前) |
head |
6Byte |
固定”CmdM:4” |
len |
1Byte |
<timer-Pos_TagZ>的长度 |
Timer |
4Byte |
标签测距时间 |
Tagid |
2Byte |
标签地址 |
Ancid |
2Byte |
基站地址 |
Seq |
1Byte |
标签测距序列号 |
Mask |
1Byte |
标签测距有效位 |
Rawrange0-7 |
32Byte |
标签测距原始数据(标签-基站 0) 4 字节 标签测距原始数据(标签-基站 1) 4 字节 标签测距原始数据(标签-基站 2) 4 字节 标签测距原始数据(标签-基站 3) 4 字节 标签测距原始数据(标签-基站 4) 4 字节标签测距原始数据(标签-基站 5) 4 字节 标签测距原始数据(标签-基站 6) 4 字节 标签测距原始数据(标签-基站 7) 4 字节 |
Kal man_enable |
1Byte |
是否开启距离滤波标志位 |
Kal manange0-7 |
32Byte |
标签测距滤波数据(标签-基站0)4字节 标签测距滤波数据(标签-基站1)4字节 标签测距滤波数据(标签-基站2)4字节 标签测距滤波数据(标签-基站3)4字节 标签测距滤波数据(标签-基站4)4字节 标签测距滤波数据(标签-基站5)4字节 标签测距滤波数据(标签-基站6)4字节 标签测距滤波数据(标签-基站7)4字节 |
Pos_enable |
1Byte |
是否开启硬件定位标志位,请谨慎开启该功能(非常耗时),建议开启条件 1.标签端开启 2.基站端开启(标签数量不超过 1 个) |
Pos_dimen |
1Btype |
开启硬件定位 定位维度 二维:1 三维:2 |
Pos_Ancmask |
1Byte |
硬件定位 基站有效位 |
Pos_Tag_Res |
1Byte |
标签定位结果 |
Pos_TagX |
4Btye |
标签定位结果 X 轴数据(注:目前定位算法做在上位机上) |
Pos_TagY |
4Byte |
标签定位结果 Y 轴数据 |
Pos_TagZ |
4Byte |
标签定位结果 Z 轴数据 |
Check |
1Byte |
校验位(Xor) |
Foot |
1Byte |
固定”\r\n” |
例帧说明:

(2) 连接至基站的UART2,在串口助手上,将收到以下的数据格式
帧协议格式
字段 |
帧头 |
长度 |
版本 |
数据域 |
校验和 |
帧尾 |
字节数 |
1 |
1 |
1 |
32 |
1 |
1 |
说明 |
0xaa |
从版本开始到帧尾的长度 |
指定通信协议版本 |
标签 - 各基站测距数据 |
从帧头开始,至协议帧尾字节进行累加求和后再进行对256求余 |
0x55 |
数据域协议格式
字节数 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
4 |
说明 |
标 签 - 基 站 0 测距 滤波数据 |
标 签 - 基 站 1 测距 滤波数据 |
标 签 - 基 站 2 测距 滤波数据 |
标 签 - 基 站 3 测 距 滤波数据 |
标 签 - 基 站 4 测距 滤波数据 |
标 签 - 基 站 5 测距 滤波数据 |
标 签 - 基 站 6 测距 滤波数据 |
标 签 - 基 站 7 测 距 滤波数据 |
PDOA算法
USB 口和 UART2 输出协议相同, 且可通过 AT 指令切换 Json 和 hex 两种格式
AT+USER_CMD |
|
描述 |
输出格式选择( 注:仅适用PDOA算法下的基站) 0:Hex协议文本 1:JSON协议文本 |
响应 |
OK AT指令处理成功 |
|
ERR AT指令处理失败 |
示例 |
发送: AT+USER_CMD=0 响应:OK |
JSON 协议文本
JS006C{"TWR": //006c 为长度
{
"a16":"4096", //Tag 地址
"R"':115, //Tag 序列号
"T":0 //Tag 时间
"D":76, //Tag 与 Node 距离值
"P":-123, //Tag 与 Node 相位差
"Xcm":-57, //Tag 的 X 轴坐标
"Ycm":50, //Tag 的 Y 轴坐标
"O":408, //时钟偏移
"V":49152, //Tag 的信息
"X":0, //Tag 的加速度 X 轴信息
"Y":0, //Tag 的加速度 Y 轴信息
"Z":0 //Tag 的加速度 Z 轴信息
}
}
例帧解析
JS006D{"TWR": {"a16":"8834","R":128,"T":1490981,"D":37,"P":56,"Xcm":14,"Ycm":32,"O":0,"V":49152,"X":0,"Y":0,"Z":0}}
关键的值是 Xcm 和 Ycm,用它们来计算角度。
角度的计算公式:
\text{angle} = \arctan\left(\frac{X_{cm}}{Y_{cm}}\right) \times \frac{180}{\pi}
angle = arctan(14/32)×180/𝜋 = arctan(0.4375)×57.2958 ≈ 23.62°

HEX 协议文本
字段 |
字节数 |
含义(低位在前) |
head |
1 Byte |
固定 0x2A |
len |
1 Byte |
<sn-Acc_Z> 的长度 |
sn |
1 Byte |
序号 |
Addr |
2 Byte |
标签地址 |
Angual |
4 Byte |
角度 |
Distance |
4 Byte |
距离 |
usercmd |
2 Byte |
第三方定义数据 typedef struct { uint16_t is_lowbattery:1; // 低电量报警 uint16_t is_alarm:1; // 按键报警 <br> uint16_t reserver:14; // 保留 } user_cmd_t; |
F_Path_Power_Level |
4 Byte |
第一条路径信号强度 |
RX_Level |
4 Byte |
信号强度 |
Acc_X |
2 Byte |
标签 X 轴加速度 |
Acc_Y |
2 Byte |
标签 Y 轴加速度 |
Acc_Z |
2 Byte |
标签 Z 轴加速度 |
Check |
1 Byte |
校验位 (Xor) |
Foot |
1 Byte |
固定 0x23 |
例帧解析
距离:38(Hex) -> 56cm
角度:EFFFFFFF(Hex) -> -17°

2、测距精度矫正
若测距过程中发现偏差过大,那么需要执行相关校准
(1)下载自动计算标定系数的表格Excel【下载地址】
(2)以TWR算法为例,打开Excel,根据OLED屏幕 / USB串口 / 上位机输出的数据,计算系数
在测试环境中已经搭建好设备,利用测量工具(如卷尺或者皮尺)依次按照间隔1米刻度,将标签分别放在刻度上,根据OLED屏幕 / USB串口输出数据 / 上位机 读数,分别填写在表格中,表格中会得出一个系数值,如下图;

(3)使用矫正AT指令
上述的系数我们将使用这条AT指令来矫正,指令中我们将参数进行替换,并且发送保存指令即可,如下图所示(其他参数保持不变,仅改变图示框选参数值)
y=0.9924x-317.68
指令:
AT+SETDEV=10,16336,1,0.018,0.642,0.9924,-317.68,0,0
AT+SAVE
五、使用体验
使用一基站 / 一标签,在默认的AT固件下,很容易上手开发使用,未矫正前,实际距离与测试距离会有误差,但在经过精度矫正后,可以实现不错的距离 / 角度 测量。
当然通过屏幕OLED读数,会因为屏幕尺寸以及数据变化过快,读数起来会相对不易,但可以使用上位机来获取读数,上位机的参数配置、使用起来也很容易。
优化:
1、BU03-Kit的MCU主控,可以换成低功耗的STM32C / L系列,或者具备蓝牙功能(NRF52832)、WIFI / BLE功能的ESP32C / S系列等,可以让后续的二次开发使用,有更多的拓展性。
2、开发板的板载的LED指示灯并非全部都是必须的,过多会增加不必要的消耗, 可以适当缩小开发板尺寸,以及引出锂电池接口,可以用作锂电池供电开发板使用(低功耗)、方便移动携带使用,以及后续的二次DIY开发制作等。