TWR-30 与 STM32F4 PA UWB 定位工程用户手册

版本:HV2.0
适用工程:BPHero_UWB_STM32F1_STM32F4IMU_Location_SourceCode_HV2.0
适用硬件:蓝点 TWR-30/BP30 基站、STM32F4 PA UWB 标签

1. 系统简介

本工程用于搭建一套基于 DW1000 的 UWB IMU融合定位系统。系统由多个基站和至少一个标签组成:

  • 基站:使用 TWR-30/BP30,工程目录为 STM32F1_UWB
  • 标签:使用 STM32F4 PA UWB,工程目录为 STM32F4_UWB_PA
  • 公共库:DW1000 驱动、TWR 协议、滤波、OLED 等代码在 BP-UWB_LIB

标签依次向多个基站发起双边双向测距,完成一轮后将所有距离打包发送给 0x0001 基站。0x0001 基站通过串口把定位数据转发给 PC 或上位机。

本工程当前默认配置为:

  • 3 个基站,2D 定位。
  • 基站地址:0x00010x00020x0003
  • 标签地址:0x0005
  • UWB 信道:Channel 2。
  • UWB 速率:110 kbps。
  • 串口:USART1,115200,8N1。
  • 标签启用 MPU9250 运动检测,串口数据中带 s/m 运动状态。

1.1 使用场景

本工程与 BP-TWR-30 套件的定位流程一致,都是让标签分别获取与各基站之间的距离,再由 0x0001 基站把定位数据上传到 PC。区别是本工程的标签使用 STM32F4 PA UWB,并额外输出 IMU 运动状态。

二维定位场景

使用 3 个基站和至少 1 个标签。基站 0x00010x00020x0003 放在同一平面,标签依次与三个基站测距。标签完成一轮后将距离汇总给 0x0001 基站,PC 或上位机根据三个距离和基站坐标计算二维位置。

三维定位场景

使用 4 个基站时,第四个基站地址通常配置为 0x0004。至少有一个基站与其他基站存在明显高度差,可用于 3D 定位。

多标签定位场景

多个 STM32F4 PA UWB 标签可以同时参与定位,但每个标签必须使用不同的 SHORT_ADDR。多标签时需要关注发送冲突、刷新率和上位机解析能力,必要时降低 MAX_FREQ_HZ 或增加标签错峰发送时间。

2. 工程目录说明

BPHero_UWB_STM32F1_STM32F4IMU_Location_SourceCode_HV2.0
├─ BP-UWB_LIB
│  ├─ decadriver        DW1000 官方底层驱动
│  ├─ platform          SPI、延时、互斥等平台适配
│  ├─ kalman            距离滤波
│  ├─ OLED              OLED 显示驱动
│  └─ Src               UWB 协议、测距、定位应用层
├─ STM32F1_UWB          TWR-30/BP30 基站工程
└─ STM32F4_UWB_PA       STM32F4 PA UWB 标签工程,含 MPU9250

常用文件:

  • BP-UWB_LIB/Src/bphero_uwb.h:角色、地址、基站数量、PANID、天线延时配置。
  • BP-UWB_LIB/Src/tx_main.c:标签测距轮询、距离汇总、IMU 状态打包。
  • BP-UWB_LIB/Src/rx_main.c:基站测距响应、距离计算、串口转发。
  • BP-UWB_LIB/Src/bphero_uwb.c:DW1000 初始化、信道、速率、发射功率、PANID。
  • STM32F4_UWB_PA/Core/Src/mpu9250:MPU9250 软件 I2C 与运动检测。

3. 工作原理

3.1 TWR 测距流程

标签和每个基站之间使用 P/A/F 三帧完成一次 DS-TWR 测距:

  1. 标签向目标基站发送 P,即 Poll。
  2. 基站收到 P 后立即回复 A,即 Ack/Response。
  3. 标签收到 A 后定时发送 F,即 Final,并携带三个时间戳。
  4. 基站收到 F 后计算 TOF,再换算为距离。

基站在下一次回复 A 时,把上一次测得的距离带回给标签。标签因此可以逐个收集各基站距离。

3.2 距离汇总流程

标签一轮测距完成后,会向 0x0001 基站发送 M 数据包。该数据包内部携带 mri 定位数据。0x0001 基站收到 M 后,不做解析,直接通过 USART1 发送给 PC。

因此 PC 或上位机只需要连接 0x0001 基站的串口。

3.3 MPU9250 运动状态

STM32F4 PA UWB 标签启用 IMU_ENABLE 后,系统会初始化 MPU9250 并开启 Wake-on-Motion 运动检测。

  • MPU9250 触发中断后,PB15/EXTI15_10 置位 isMpu9250_moved = 1
  • 标签下一次发送 mri 汇总帧时,运动状态字段输出 m
  • 如果本轮没有运动中断,运动状态字段输出 s
  • 每次输出一次 m 后,状态会清零,等待下一次运动中断。

4. 硬件连接

4.1 硬件外观参考

TWR-30/BP30 模块正面包含 DW1000、STM32F103、OLED、UWB 天线、USB/串口/SWD 等接口。实际使用时,基站节点通常使用该模块。

TWR-30 外观与接口

STM32F4 PA UWB 模块集成 STM32F4、DW1000、PA 功放、MPU9250 加速度/IMU 传感器、锂电池管理与下载接口。实际使用时,标签节点通常使用该模块。

STM32F4 PA UWB 外观与主要器件

STM32F4 PA UWB 的主要引脚关系如下图,其中 UWB 使用 SPI1,串口使用 USART1,MPU9250 使用软件 I2C 与外部中断。

STM32F4 PA UWB 引脚关系

4.2 基站 TWR-30/BP30

基站使用 STM32F1_UWB 工程。主要接口如下:

功能 引脚/外设 说明
DW1000 SPI SPI1 PA5/SCK,PA6/MISO,PA7/MOSI
DW1000 CS PA4 软件片选
DW1000 IRQ PB0 上升沿外部中断
DW1000 RESET PB4 复位控制
串口 USART1 115200,8N1
OLED PB10/PB12/PB13/PB14/PB15 仅在启用 LCD_ENABLE 时使用

用于上位机时,只需要连接地址为 0x0001 的基站串口。通常连接:

  • 串口工具 RXD 接基站 TX。
  • 串口工具 GND 接基站 GND。
  • 波特率设置为 115200

4.3 STM32F4 PA UWB 标签

标签使用 STM32F4_UWB_PA 工程。主要接口如下:

功能 引脚/外设 说明
DW1000 SPI SPI1 PA5/SCK,PA6/MISO,PA7/MOSI
DW1000 CS PA4 软件片选
DW1000 IRQ PB0 上升沿外部中断
DW1000 RESET PB10 复位控制
UWB PA PB5 功放控制,默认置高
MPU9250 SCL PA8 软件 I2C
MPU9250 SDA PB4 软件 I2C
MPU9250 INT PB15 运动检测中断
串口 USART1 PA9/TX,PA10/RX,115200
LED PB7/PB8 状态指示
Motor PB14 预留,默认置高

标签串口主要用于调试信息,例如 hello dwm1000!init pass!moved!

5. 软件环境

建议使用正版或授权的软件工具:

  • Keil MDK-ARM 5。
  • STM32F1xx 与 STM32F4xx Device Pack。
  • ST-Link 或 J-Link 下载器。
  • 串口助手或上位机软件,波特率 115200

本工程已包含 .uvprojx 工程文件:

  • 基站工程:STM32F1_UWB/MDK-ARM/51UWB_F1.uvprojx
  • 标签工程:STM32F4_UWB_PA/MDK-ARM/STM32F4_UWB.uvprojx

STM32 ST-LINK Utility 是 STMicroelectronics 提供的 STM32 下载和调试工具,主要用于通过 ST-Link 调试器/编程器与 STM32 通信,实现程序下载、芯片读取、擦除和校验等功能。

  1. 在资料包的“Keil以及上位机软件”目录下,解压 STM32 ST-LINK Utility 安装包,打开解压后的 setup 安装文件。

  2. 安装过程中如果出现 Modify 页面,选择 Modify,然后点击 Next

ST-Link Utility 安装向导

  1. 后续页面保持默认选项,点击 Next,按界面提示完成安装。

ST-Link Utility 安装组件

  1. 安装完成后,桌面会出现 STM32 ST-LINK Utility 图标。

ST-Link Utility 桌面图标

ST-Link 驱动用于让 PC 正确识别 ST-Link 下载器,使 Keil、STM32 ST-LINK Utility 等工具能够通过 ST-Link 对 STM32 进行下载、调试、读取芯片信息等操作。如果插入 ST-Link 后电脑无法识别,或下载工具无法连接目标板,优先检查该驱动是否已安装。

在资料包的“Keil以及上位机软件 > STLINK下载器驱动”目录下,解压驱动安装包,打开安装程序,并按界面提示完成安装。安装完成后,重新插拔 ST-Link,在 Windows 设备管理器中确认设备识别正常。

5.2.2 串口驱动安装

串口驱动用于让 PC 识别 USB 转 TTL 串口线,使串口助手能够读取 0x0001 基站输出的定位数据。常见 USB 转 TTL 串口线使用 CH340/CH341 芯片,应安装对应驱动。

在资料包的串口驱动目录下,根据电脑系统和位数选择对应驱动,打开安装程序并按界面提示完成安装。

串口驱动目录示例

驱动安装后,在 Windows 设备管理器中确认出现对应 COM 口,再在串口助手中选择该端口。

5.3 Keil MDK 安装

本工程源码编译需要使用 Keil MDK-ARM 5。打开 Keil MDK 安装程序,建议使用管理员权限运行安装文件,并按界面提示完成安装。

安装完成后,桌面会出现 Keil uVision5 图标。建议使用管理员权限打开 Keil,避免工程目录、Pack 安装或下载配置出现权限问题。

Keil uVision5 图标

如果打开工程时提示缺少芯片包,请在 Keil Pack Installer 或 ST 官网安装 STM32F1xx、STM32F4xx 对应 Device Pack,然后重启 Keil 后重新打开工程。

安装 STM32 芯片包示例

说明:请使用正版授权或合法评估版本。本文档不提供软件破解、绕过授权或未授权使用步骤。

5.4 工程包结构

本工程采用公共库加多平台工程结构,BP-UWB_LIB 为公共代码,STM32F1_UWB 为 TWR-30/BP30 基站工程,STM32F4_UWB_PA 为 STM32F4 PA UWB 标签工程。

工程目录结构

整体结构如下:

工程框架说明

6. 编译与下载

角色和地址配置集中在 BP-UWB_LIB/Src/bphero_uwb.h

下载前请先确认目标硬件和工程匹配:TWR-30/BP30 基站下载 STM32F1_UWB 工程,STM32F4 PA UWB 标签下载 STM32F4_UWB_PA 工程。下载完成后建议在模块背面标注角色和地址,例如 A1/0x0001A2/0x0002A3/0x0003TAG/0x0005

6.1 配置 3 个 TWR-30 基站

编译基站时,只打开 RX_NODE,关闭 TX_NODE

#define RX_NODE
//#define TX_NODE

2D 定位使用 3 个基站:

#define MAX_ANTHOR 3

分别编译并下载 3 次,每次修改基站短地址:

#ifdef RX_NODE
#define SHORT_ADDR 0x0001
#endif
#ifdef RX_NODE
#define SHORT_ADDR 0x0002
#endif
#ifdef RX_NODE
#define SHORT_ADDR 0x0003
#endif

下载到对应的 3 个 TWR-30/BP30 模块。地址为 0x0001 的基站需要连接 PC 串口,用来输出上位机数据。

基站工程文件位于:

STM32F1_UWB/MDK-ARM/51UWB_F1.uvprojx

打开 TWR-30 基站工程

bphero_uwb.h 中配置角色。基站使用 RX_NODE,标签使用 TX_NODE,两者只能打开一个。

基站角色配置示例

在 Keil 中常用按钮如下:编译、全部编译、下载。

Keil 编译下载按钮

6.2 配置 STM32F4 PA UWB 标签

编译标签时,只打开 TX_NODE,关闭 RX_NODE

//#define RX_NODE
#define TX_NODE

标签短地址不要和基站重复,默认是:

#ifdef TX_NODE
#define SHORT_ADDR 0x0005
//#define LCD_ENABLE
#define IMU_ENABLE
#endif

说明:

  • SHORT_ADDR 是标签 ID。当前串口协议只输出低 8 位,建议标签地址使用 0x00050x0006 这类低字节不重复的值。
  • IMU_ENABLE 开启 MPU9250 运动检测。
  • LCD_ENABLE 默认关闭。开启 OLED 会增加显示开销,可能降低定位刷新率。

然后打开并编译:

STM32F4_UWB_PA/MDK-ARM/STM32F4_UWB.uvprojx

打开 STM32F4 PA 标签工程

标签工程中打开 TX_NODE,关闭 RX_NODE。IMU 标签不支持夜景显示, LCD_ENABLE不能打开。

标签角色配置示例

编译成功后,将程序下载到 STM32F4 PA UWB 标签。

6.3 配置 4 基站 3D 定位

如果需要 4 个基站,将:

#define MAX_ANTHOR 4

然后增加第 4 个基站:

#define SHORT_ADDR 0x0004

然后重新编译全部标签和基站HEX。 标签会轮询 0x00010x0004,并在 mri 帧中输出第 4 路距离。

如果不想重新编译,也可以使用已生成的 HEX 下载。打开 ST-Link Utility,连接目标板后选择 Target -> Program & Verify,浏览选择对应 HEX 文件,然后点击 Start

ST-Link 一端通过 SWD 排针连接目标模块,另一端通过 USB 连接电脑。TWR-30/BP30 基站连接时,请使用靠近天线一侧的 ST-Link/SWD 底座,不要接到串口接口。常用连接关系如下:

ST-Link TWR-30/BP30 基站
3.3V 3.3V
SWCLK CLK
SWDIO DIO
GND GND

STM32F4 PA UWB 标签同样通过其下载接口连接 ST-Link,连接前请确认下载接口丝印和工程硬件版本一致。以接口定义为准。

6.4.2 下载 HEX

ST-Link Utility 下载 HEX

工程编译的HEX 路径:

STM32F1_UWB/MDK-ARM/51UWB_F1/51UWB_F1.hex
STM32F4_UWB_PA/MDK-ARM/STM32F4_UWB/STM32F4_UWB.hex

注意:可以直接下载资料包已经编译好的现有 HEX ,地址和角色就是生成 HEX 时的配置。

7. 上电检查

模块程序下载完成后再上电测试。推荐流程如下:

  1. 给 3 个 TWR-30/BP30 基站下载对应地址的基站程序。
  2. 给 STM32F4 PA UWB 标签下载标签程序。
  3. 给所有设备供电,先观察指示灯是否正常。
  4. 先用串口助手分别检查基站和标签初始化信息。
  5. 确认 0x0001 基站能输出定位帧后,再打开定位上位机。

7.1 基站

  1. 下载对应地址的基站程序。
  2. 通过 USB 口或稳定 5V 电源给基站供电。
  3. 连接串口后复位,正常会看到类似:
hello dwm1000!
init pass!

如果 DW1000 初始化失败,串口可能输出:

dwm1000 init fail!

此时优先检查供电、SPI、CS、RESET、IRQ、模块焊接和下载的工程是否匹配硬件。

7.2 标签

  1. 下载标签程序。
  2. 使用标签板支持3.3V供电方式给 STM32F4 PA UWB 标签供电。

7.3 串口助手查看初始化信息

可使用串口助手查看模块初始化信息。串口参数为 115200, 8N1

串口助手目录示例

打开串口助手后选择正确 COM 口,并设置波特率 115200

串口助手参数设置

基站或标签复位后,如果 DW1000 初始化正常,会看到 hello dwm1000!init pass!

串口初始化信息示例

如果使用 USB 转 TTL 串口线查看 0x0001 基站数据,常用连接如下:

串口线 0x0001 基站
RXD TX
GND GND
5V 不连接
TXD 不连接

打开串口助手后点击启动/打开串口。如果没有输出信息,先按模块复位键;仍然没有输出时,检查供电、COM 口、波特率、串口线连接和程序是否已正确下载。

8. 串口输出协议

PC 只需要读取 0x0001 基站的 USART1。串口参数:

115200, 8 data bits, no parity, 1 stop bit

0x0001 基站转发的定位数据为 18 字节。当前代码发送内容如下:

字节序号 字段 说明
0 m 帧头 1
1 r 帧头 2
2 i 帧头 3
3 0x02 协议版本
4 TAG_ID 标签 ID,来自 SHORT_ADDR 低 8 位
5 Frame_L 帧序号低字节
6 Frame_H 帧序号高字节
7 Dis0_L 基站 0x0001 距离低字节
8 Dis0_H 基站 0x0001 距离高字节
9 Dis1_L 基站 0x0002 距离低字节
10 Dis1_H 基站 0x0002 距离高字节
11 Dis2_L 基站 0x0003 距离低字节
12 Dis2_H 基站 0x0003 距离高字节
13 Dis3_L 4 基站时为第 4 路;3 基站时重复第 1 路
14 Dis3_H 4 基站时为第 4 路;3 基站时重复第 1 路
15 s/m s 表示静止,m 表示运动
16 0x0A 换行 LF
17 0x0D 回车 CR

距离单位是厘米,低字节在前,高字节在后。例如:

distance_cm = Dis_L + (Dis_H << 8)

如果某一路距离无效,标签会输出 0xFFFF

注意:当前源码结尾顺序是 \n\r,不是常见的 \r\n。如果上位机按行解析异常,可以兼容两种结尾,或在 tx_main.c 中调整结尾顺序。

串口十六进制显示时,可以看到连续的定位帧。解析时以 m r i 三字节作为帧头。

串口十六进制定位数据示例

提示:定位帧是二进制数据,肉眼直接查看可能不可读。使用串口助手排查时建议打开 HEX 显示,先确认能连续看到 6D 72 69,再交给上位机解析。

9. 基站摆放

9.1 2D 定位 3基站

3 个基站应放在同一水平面,建议高度一致、无遮挡。推荐摆放:

  • 基站 0x0001:坐标 (0, 0)
  • 基站 0x0002:放在 X 轴,例如 (5, 0)
  • 基站 0x0003:放在平面上方,例如 (0, 5)(5, 8)

标签活动区域尽量位于 3 个基站围成的区域内部。不要让标签长期处在三角形外侧,否则几何解算误差会明显变大。

3 基站 2D 定位推荐摆放如下图。基站 0 即地址 0x0001,基站 1 即 0x0002,基站 2 即 0x0003

3 基站 2D 坐标摆放

9.2 3D定位4基站

4 基站可用于 3D 定位。建议基站形成矩形或空间结构:

  • 3D:至少有一个基站与其他基站存在明显高度差。

4 基站或 3D 定位摆放时,需要保证上位机中的坐标、高度与实际测量一致。

4 基站/3D 摆放示意

9.3 摆放注意事项

  • 基站与标签之间尽量保持视距,避免金属、墙体、人体遮挡。
  • 模块之间不要贴得太近,建议至少大于 50 cm;只做近距离初始化排查时也不要小于 20 cm。
  • 基站坐标必须与上位机填写一致。
  • 基站天线朝向和安装高度尽量一致。
  • 多套系统同时工作时,应修改 NET_PANID,避免互相干扰。
  • 3 基站 2D 定位时,标签活动范围建议位于三角形内部,靠近通信边缘或跑到基站包围区域外会明显增大误差。

模块上电和摆放时,应尽量保持天线朝向一致,避免让电源线、金属支架或人体长时间遮挡 UWB 天线。

10. 定位上位机操作

定位测试时,打开定位上位机,选择 0x0001 基站串口,并填写基站坐标。坐标必须与实际摆放一致。

定位上位机程序位置

在上位机中填写基站坐标、距离参数,点击连接后即可显示标签位置。建议先让标签在基站包围区域内缓慢移动,确认轨迹是否稳定。

定位上位机参数配置

操作顺序建议如下:

  1. 先用串口助手确认 0x0001 基站正在上传 mri 定位帧。
  2. 关闭串口助手,避免 COM 口被占用。
  3. 双击打开定位上位机。
  4. 在上位机右上角选择 0x0001 基站对应 COM 口并点击连接。
  5. 按实际测量结果填写基站坐标。
  6. 将标签放在基站包围区域内移动,观察轨迹是否稳定。

如果上位机无法连接串口,优先检查串口助手是否仍占用该 COM 口;如果能连接但不显示标签,回到串口助手确认是否有连续 mri 数据。

11. 定位刷新率

标签定时器周期在 BP-UWB_LIB/Src/tx_main.c 中配置:

#define MAX_FREQ_HZ 2
#define MAX_TX_Node 1

当前含义:

  • MAX_FREQ_HZ = 2:目标定位刷新率约 2 Hz。
  • MAX_ANTHOR = 3:一轮要测 3 个基站。
  • 标签还会额外发送一次 M 汇总帧。

如果要提高刷新率,可适当增大 MAX_FREQ_HZ,但需要同时关注丢包、串口输出、上位机处理速度和多标签冲突。

多标签时,应给不同标签设置不同 SHORT_ADDR。当前代码通过检测干扰后随机微调下一次发送时间,降低冲突概率。

12. 推荐快速使用流程

  1. 打开 BP-UWB_LIB/Src/bphero_uwb.h
  2. 设置 RX_NODE,分别编译下载 3 个基站,地址为 0x00010x00020x0003
  3. 设置 TX_NODE,标签地址设为 0x0005,启用 IMU_ENABLE,编译下载 STM32F4 PA UWB 标签。
  4. 0x0001 基站串口接到 PC,波特率 115200
  5. 按实际坐标摆放 3 个基站。
  6. 给所有设备供电,先看初始化信息是否有 init pass!
  7. 打开上位机或串口助手,确认有 mri 数据输出。
  8. 填写基站坐标,开始定位测试。
  9. 若距离整体偏差稳定,按“14.10 定位误差太大”中的方法进行 RX_ANT_DLY 校准。

13. 源码与文档对应关系

手册内容 源码位置
角色、地址、基站数量、PANID BP-UWB_LIB/Src/bphero_uwb.h
UWB Channel 2、110 kbps BP-UWB_LIB/Src/bphero_uwb.c
标签轮询基站 BP-UWB_LIB/Src/tx_main.c
mri 数据打包 BP-UWB_LIB/Src/tx_main.c
基站距离计算 BP-UWB_LIB/Src/rx_main.c
基站串口转发 BP-UWB_LIB/Src/rx_main.c
MPU9250 初始化 STM32F4_UWB_PA/Core/Src/main.c
MPU9250 运动检测 STM32F4_UWB_PA/Core/Src/mpu9250/MPU9250.c
F4 标签引脚定义 STM32F4_UWB_PA/Core/Inc/main.h
F1 基站引脚定义 STM32F1_UWB/Core/Inc/main.h

14. 常见问题

14.1 串口没有定位数据

检查:

  • PC 是否连接的是 0x0001 基站,而不是标签或其他基站。
  • 串口是否为 USART1,波特率是否为 115200
  • 基站 0x0001 是否正常上电并初始化成功。
  • 标签是否正在运行,且 MAX_ANTHOR 与基站数量一致。
  • NET_PANID 是否所有设备一致。
  • 基站地址是否从 0x0001 连续配置。

14.2 只有初始化信息,没有 mri 数据

可能原因:

  • 标签没有成功和全部基站完成测距。
  • 0x0001 基站没有收到标签发送的 M 汇总帧。
  • 基站坐标太远、遮挡严重或信号弱。
  • 基站地址配置重复。
  • 编译时角色宏配置错误,例如基站工程仍然是 TX_NODE

14.3 距离显示 0xFFFF

表示该路距离无效。常见原因:

  • 对应地址的基站未上电。
  • 基站地址没有配置为期望值。
  • 标签与基站距离太远或遮挡。
  • UWB 信道、PANID 或速率配置不一致。

14.4 运动状态一直是 s

检查:

  • bphero_uwb.h 中是否启用 IMU_ENABLE
  • 标签是否使用 STM32F4 PA UWB 工程。
  • MPU9250 的软件 I2C 引脚 PA8/PB4 是否正常。
  • MPU9250 INT 是否连接到 PB15。
  • 移动幅度是否足够触发 Wake-on-Motion。

14.5 运动状态一直是 m

可能是 MPU9250 中断阈值过低。当前代码中阈值在:

writeByte(MPU9250->I2C_Addr, WOM_THR, 0x01);

位置:STM32F4_UWB_PA/Core/Src/mpu9250/MPU9250.c

可以适当增大阈值,例如 0x040x08,再重新测试。

14.6 多标签定位不稳定

建议:

  • 每个标签使用不同 SHORT_ADDR
  • 适当降低 MAX_FREQ_HZ
  • 增大标签之间的发送错峰时间。
  • 如果上位机自己做多标签滤波,可按需要关闭或调整基站侧 Kalman 滤波。

14.7 模块供电问题

TWR-30/BP30 基站通常通过 USB 口外接 5V 移动电源供电,也可以在下载调试时由 ST-Link 的 3.3V 侧辅助供电。不要使用 USB 转 TTL 串口线的 5V 给模块供电。

STM32F4 PA UWB 标签请按标签板硬件说明使用 USB、锂电池或板载电源接口供电,避免给错误接口接入超过板卡允许范围的电压。供电不足会导致 DW1000 初始化失败、串口无输出或定位帧中距离频繁无效。

14.8 模块摆放和安装问题

模块使用时建议固定、竖直、无遮挡,天线朝向尽量一致。模块晃动、倾斜、贴近金属支架、靠近人体或处在基站通信边缘,都会导致距离跳动和定位误差变大。

  • 定位排查:模块间距建议大于 50 cm,且保持视距。
  • 2D 定位:3 个基站建议构成三角形,坐标与上位机填写一致。
  • 3D 或 4 基站定位:至少一个基站要有明显高度差,并在上位机中填写真实高度。

14.9 指示灯和初始化状态

指示灯可作为快速排查参考。电源指示灯不亮时,先检查供电;UWB 相关指示灯长时间无变化时,结合串口初始化信息判断。

现象 优先检查
没有任何指示灯 供电、电源线、电源开关
串口无输出 程序是否下载、COM 口、波特率、串口线接法
输出 init pass! DW1000 初始化正常
输出 dwm1000 init fail! DW1000、SPI、CS、RESET、IRQ、供电或工程硬件不匹配
标签串口有 moved! MPU9250 运动检测中断正常

14.10 定位误差太大

常见原因:

  • 标签在基站包围区域外或靠近通信边缘。
  • 基站坐标填写与真实测量值不一致。
  • 模块之间有墙体、人体、金属、设备外壳等遮挡。
  • 模块间距太近或安装高度差异没有在上位机中体现。
  • 天线延时没有校准,导致距离存在稳定偏差。

解决方法:

  1. 如果误差随机跳动,优先排查遮挡、供电、摆放、信道干扰和上位机基站坐标。
  2. 如果所有距离整体偏大或偏小,进行天线延时校准,主要调整 RX_ANT_DLY

RX_ANT_DLY 配置位置:

#ifndef RX_ANT_DLY
#define RX_ANT_DLY 32900
#endif

天线延时校准流程:

  1. 将标签和某个基站固定在已知距离,例如 2 m 或 5 m。
  2. 保持视距无遮挡。
  3. 读取稳定后的串口距离。
  4. 如果测量值整体偏大或偏小,微调 RX_ANT_DLY
  5. 重新编译下载,再复测。

当前工程中 TX_ANT_DLY 默认为 0,主要通过 RX_ANT_DLY 修正。

15. 售后保修

质保期限

  • 快递签收起7日内:在质保范围内,包邮保修或更换。
  • 7日至15日:在质保范围内,免费保修,运费买卖双方各自负责。
  • 15日至1年:在质保范围内,免人工维修费,酌情收取配件更换成本费,来回运费买家负责,无法维修的将原样返回给买家。

质保范围

  • 本产品质保及售后只限在中国大陆境内。
  • 由于运输途中造成的产品开箱无法正常使用。
  • 产品本身元器件损坏造成的无法正常工作。
  • 产品设计缺陷造成无法正常使用。

免责范围

包括以下情况但不限于,视可维修情况进行售后,所有费用由买家承担。

  • 未经本公司允许,擅自拆解或维修产品。
  • 未正确按照说明书安装规范操作,例如连接大于5V的电源供电,造成产品损坏。
  • 自然灾害,火灾等不可抗拒的外界力造成的产品损坏。