bp-twr-50_用户手册_整理版

UWB技术文档 2026-02-28

新手说明

先分清标签、基站和定位场景

这份 UWB 手册信息很多,建议新手先把角色分清楚:标签是被定位的对象,基站是固定参考点;先做近距离、无遮挡、少量设备测试,再做复杂场地部署。

开始前准备

  • 先看自己手里拿的是标签还是基站,再核对配件、供电方式、串口工具和软件版本。
  • 部署前先确定是单标签演示、二维定位还是带跟随逻辑的应用,不同场景接线和参数重点不一样。

图片怎么看

  • 推荐按“硬件外观 -> 上电检查 -> 软件安装 -> 串口数据 -> 定位拓扑 -> Mixly 示例”这个顺序看,不要直接跳到后面的图形化程序。
  • 这篇里的图片大多已经带图号和图注,遇到看不懂的地方先读图注,再回到正文找对应章节。

容易出错点

  • UWB 对遮挡、金属环境和基站摆放很敏感。基站位置一旦变了,坐标系和精度判断也要跟着重做。
  • 如果串口有数据但坐标漂移大,先排查供电、天线朝向、基站高度、环境遮挡,再去怀疑算法。

完成判定

  • 先在 2 到 5 米无遮挡环境里验证距离和坐标是否基本稳定,再逐步扩大场地。
  • Mixly 或上位机示例能稳定读到标签数据、坐标变化符合移动方向,才说明链路基本打通。
补充提醒:如果设备配套包里还有同版本示例工程、固件或 readme,优先和本文交叉核对;UWB 模块不同批次的固件和配置项可能会有细微差异。

BP-TWR-50 / BP-TWR-30

UWB定位模块用户手册

V1.6


 

目录

摘要

1  产品介绍

1.1  场景介绍

1.2  产品参数

2  硬件介绍(BP-TWR-50)

2.1  外观

2.2  接口说明

2.3  配件清单

3  开箱上电检查

3.1  仅标签上电

3.2  仅基站上电

3.3  基站与标签同时上电

4  安装软件

4.1  安装 STM32 ST-LINK Utility

4.2  安装 STlink V2 驱动

4.3  安装串口驱动

4.4  安装 MDK(Keil)

5  下载测试 HEX

5.1  连接 STlink

5.2  烧录步骤

6  米思齐示例程序

6.1  导入 UWB 自定义库

6.2  代码模块说明

7  自行编译 HEX

7.1  编译步骤

8  代码介绍

8.1  标签与基站的选择

8.2  均值滤波

8.3  中值滤波

 

 


摘要

本手册适用于 BP-TWR-50 / BP-TWR-30 系列 UWB 超宽带定位模块,旨在帮助用户快速了解产品功能、完成硬件安装与软件配置,并掌握各类定位场景的使用方法。

BP-TWR-50/30 是一套基于 UWB(超宽带)技术的高精度室内定位系统,由基站(Anchor)与标签(Tag)组成。系统支持测距、二维定位、三维定位及多标签定位等多种应用场景,定位精度可达 5~10cm,最大通信距离 50m。

本手册主要内容包括:

 产品场景介绍与参数说明

 硬件外观、接口与配件说明

 开箱上电检查流程

 软件安装与 HEX 烧录步骤

 米思齐图形化编程示例

 STM32 源码编译与自定义 HEX

 代码结构详解(标签/基站选择、滤波算法)

 


1  产品介绍

 

1.1  场景介绍

以下所有套件均以"基站0"为主基站,标签实时显示与各基站之间的距离信息,并将数据通过串口传至 PC,由上位机软件计算坐标信息。系统支持以下五种典型应用场景:

 

1.1.1  测距场景

基站0 与标签通过收发信号之间的传播时间计算两者之间的距离(TOF测距),适用于单点距离测量需求。

1-1  测距场景示意图:基站0 与标签通过无线信号往返时间计算距离


图解说明:这张图主要在说明“测距场景示意图:基站0 与标签通过无线信号往返时间计算距离”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

1.1.2  跟随小车场景

基站0 与基站1 分别安装在小车头部的两端,由标签牵引小车行进方向。可设置启动距离阈值:标签距小车超过设定距离时小车启动,小于该距离时停止。行驶过程中采用余弦定理计算基站0 与标签的夹角,据此控制小车转向。

1-2  跟随小车场景示意图:双基站装于小车头部,余弦定理计算角度控制方向


图解说明:这张图主要在说明“跟随小车场景示意图:双基站装于小车头部,余弦定理计算角度控制方向”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

1.1.3  二维定位场景

基站0、基站1、基站2 布置在同一平面内,三个基站同时与标签通信,利用三边测量法计算标签在平面内的坐标(X, Y)。

1-3  二维定位场景示意图:三基站同平面布置,实现标签二维坐标定位


图解说明:这张图主要在说明“二维定位场景示意图:三基站同平面布置,实现标签二维坐标定位”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

1.1.4  三维定位场景

在二维定位基础上增加基站3,将其布置于 Z 轴方向(垂直方向)。四个基站协同工作,可计算标签的三维空间坐标(X, Y, Z)。

1-4  三维定位场景示意图:四基站立体布置,基站3置于Z轴实现三维定位


图解说明:这张图主要在说明“三维定位场景示意图:四基站立体布置,基站3置于Z轴实现三维定位”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

1.1.5  多标签定位场景

多个标签可同时与基站进行通信,二维与三维定位均支持多标签同时工作,最多可支持 6 个标签。

1-5  多标签定位场景示意图:多标签同时与基站通信,支持最多6个标签


图解说明:这张图主要在说明“多标签定位场景示意图:多标签同时与基站通信,支持最多6个标签”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

1.2  产品参数

以下为 BP-TWR-50 / BP-TWR-30 的主要技术规格:

 

参数

说明/值

电源

5V

额定功率

500 mW

工作温度

-20℃ ~ 80℃

工作频率

3Hz ~ 4Hz,最高 40Hz

测距精度

5 cm

二维定位精度

10 cm

Z 轴定位精度

20 cm

通信距离

50 m

标签最大个数

6 个

基站最大个数

4 个

定位代码开发软件

MDK5

定位代码语言

C

上位机语言

C++

 


2  硬件介绍(BP-TWR-50)

 

2.1  外观

基站与标签使用相同的硬件设计。标签带有液晶插座,可插入 LCD 12864 显示屏,实时显示与各基站之间的距离。

2-1  BP-TWR-50 模块外观图:基站与标签硬件一致,标签侧带液晶插座


图解说明:这张图主要在说明“BP-TWR-50 模块外观图:基站与标签硬件一致,标签侧带液晶插座”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

2.2  接口说明

模块提供多种接口,包括电源接口、串口(UART)、SWD 调试接口等,具体接口位置及定义如下图所示。

2-2  BP-TWR-50 模块接口示意图:标注各接口(电源、串口、SWD等)的位置与功能


图解说明:这张图主要在说明“BP-TWR-50 模块接口示意图:标注各接口(电源、串口、SWD等)的位置与功能”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

2.3  配件清单

套件包含以下配件,请核对数量是否与购买链接发货清单一致:

 

2-3  STlink V2 烧录器(颜色随机):用于通过 SWD 接口烧录固件


图解说明:这张图对应“STlink V2 烧录器(颜色随机):用于通过 SWD 接口烧录固件”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

2-4  USB 转串口线:用于模块与电脑之间的串口通信


图解说明:这张图对应“USB 转串口线:用于模块与电脑之间的串口通信”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

2-5  USB 转接头:用于不同 USB 接口的转换连接


图解说明:这张图对应“USB 转接头:用于不同 USB 接口的转换连接”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

2-6  LCD 12864 液晶显示屏:可插入标签液晶插座,用于显示测距信息


图解说明:这张图对应“LCD 12864 液晶显示屏:可插入标签液晶插座,用于显示测距信息”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 


3  开箱上电检查

设备出厂前已预烧录测试 HEX 程序,可通过以下步骤验证模块工作状态是否正常。

⚠ 注意:请使用 5V USB 接口为设备供电,切勿通过串口接口为模块充电。

 

3.1  仅标签上电

仅给标签通电时,标签指示灯状态如下图所示。若无基站在通信范围内,LCD 暂不显示距离数据。

3-1  仅标签上电时的 LED 指示灯状态示意


图解说明:这张图对应“仅标签上电时的 LED 指示灯状态示意”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

3.2  仅基站上电

仅给基站通电时,基站指示灯状态如下图所示。

3-2  仅基站上电时的 LED 指示灯状态示意


图解说明:这张图对应“仅基站上电时的 LED 指示灯状态示意”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

3.3  基站与标签同时上电

基站和标签指示灯外观一样。标签 LCD 显示屏上将显示与各基站的距离,其中 an0 为与基站0的距离,若有多个基站,则依次显示 an1、an2 等。

3-3  基站与标签同时上电时,标签 LCD 显示距离信息(an0=与基站0距离,an1=与基站1距离)


图解说明:这张图对应“基站与标签同时上电时,标签 LCD 显示距离信息(an0=与基站0距离,an1=与基站1距离)”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

⚠ 注意:若显示屏未显示距离信息,请参考第 6.1 节查看串口信息,确认通信是否正常,如有异常请联系客服。


4  安装软件

⚠ 注意:安装软件时,务必关闭所有杀毒软件和系统防火墙,否则安装文件可能被误删!

 

4.1  安装 STM32 ST-LINK Utility

ST-LINK Utility 是 ST 官方提供的固件下载工具,用于将 HEX 文件烧录至 STM32 芯片。

1. "Keil MDK以及其它工具"目录下,解压 STM32 ST-LINK Utility,双击解压后的 setup 文件。

2. 在安装界面选择 "Modify",单击 "Next"。

4-1  ST-LINK Utility 安装界面:选择 Modify 模式进行安装


图解说明:这张图对应“ST-LINK Utility 安装界面:选择 Modify 模式进行安装”这一步。先确认当前点到的是文中对应入口,再继续下一步。
 

3. 按照界面默认设置,单击 "Next",按照提示完成安装。

4-2  ST-LINK Utility 安装过程界面


图解说明:这张图对应“ST-LINK Utility 安装过程界面”这一步。先确认当前点到的是文中对应入口,再继续下一步。
 

4. 安装完成后,桌面将出现如下图所示的程序图标。

4-3  ST-LINK Utility 桌面图标


图解说明:这张图主要在说明“ST-LINK Utility 桌面图标”。如果你的版本界面略有不同,优先找同名按钮或菜单项即可。
 

 

4.2  安装 STlink V2 驱动

使用 STlink V2 烧录器前,需安装其驱动程序,否则 PC 无法识别烧录器设备。

5. 在如下目录中,解压驱动安装包,获取安装文件。

4-4  STlink V2 驱动文件所在目录示意图,红框标注需解压的安装包


图解说明:这张图主要在说明“STlink V2 驱动文件所在目录示意图,红框标注需解压的安装包”。重点确认你选中的确实是目标控制板,不要误改其他 USB 设备的驱动。
 

6. 按照界面提示完成驱动安装。

 

4.3  安装串口驱动

USB 转串口线需安装对应的驱动程序,请根据电脑操作系统的位数(32位/64位)选择正确的驱动进行安装。

4-5  串口驱动安装文件目录,请根据系统位数选择对应驱动版本


图解说明:这张图对应“串口驱动安装文件目录,请根据系统位数选择对应驱动版本”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

4.4  安装 MDK(Keil)

MDK 是 ARM 平台的集成开发环境,用于编写、编译和下载 STM32 代码。

7. 在对应路径下,以管理员权限打开 MDK 安装程序,按照界面提示完成安装。

4-6  MDK 安装程序文件路径,红框标注安装程序文件


图解说明:这张图对应“MDK 安装程序文件路径,红框标注安装程序文件”这一步。先确认当前点到的是文中对应入口,再继续下一步。
 

8. 安装完成后,找到桌面图标,以管理员权限打开 MDK。

4-7  MDK 桌面图标示意,需以管理员权限运行


图解说明:这张图主要在说明“MDK 桌面图标示意,需以管理员权限运行”。如果你的版本界面略有不同,优先找同名按钮或菜单项即可。
 

9. 执行 MDK 破解步骤(License 激活):

  a) 在 MDK 中,单击 File > License Management,复制 CID 内容。

4-8  MDK License Management 界面,复制 CID 字段内容


图解说明:这张图对应“MDK License Management 界面,复制 CID 字段内容”这一步。如果你的版本界面略有不同,优先找同名按钮或菜单项即可。
 

  b) 在对应路径下,以管理员权限打开破解软件。

4-9  MDK 破解工具所在路径示意


图解说明:这张图对应“MDK 破解工具所在路径示意”这一步。先确认当前点到的是文中对应入口,再继续下一步。
 

  c) 在破解软件的 CID 栏中粘贴复制的内容,Target 选择 "ARM",单击 "Generate" 生成密钥。

4-10  MDK 破解软件界面:粘贴CID,选ARM,点Generate生成激活码


图解说明:这张图对应“MDK 破解软件界面:粘贴CID,选ARM,点Generate生成激活码”这一步。先确认当前点到的是文中对应入口,再继续下一步。
 

  d) 将生成的密钥复制到 MDK 的 "New License ID Code" 栏,单击 "Add LIC" 加载 License。


5  下载测试 HEX

出厂前已预烧录测试 HEX,若需重新烧录或烧录其他节点,请按以下步骤操作。

 

5.1  连接 STlink

STlink 线将模块通过 SWD 接口与 PC 相连,接线方式如下:

⚠ 注意:请连接 Stlink 接口,不要连接串口。串口无法为设备供电。

 

参数

说明/值

STlink 引脚

模块引脚

3.3V

3.3V

SWCLK

CLK

GND

GND

SWDIO

DIO

 

5-1  STlink V2 与模块 SWD 接口的连接方式示意图


图解说明:这张图主要在说明“STlink V2 与模块 SWD 接口的连接方式示意图”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

5.2  烧录步骤

10. 打开 STM32 ST-LINK Utility,选择带 "TAG" 字样的测试 HEX 文件,为标签节点烧录固件。

5-2  ST-LINK Utility 中选择 TAG 标签对应的 HEX 文件进行烧录


图解说明:这张图对应“ST-LINK Utility 中选择 TAG 标签对应的 HEX 文件进行烧录”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

11. 待界面提示 "OK" 后,参考第 3 章开箱上电检查,确认节点 LED 和液晶状态正常。

12. 对其他节点重复上述步骤,分别烧录对应的 HEX 文件,并逐一确认状态。


6  米思齐示例程序

米思齐(Mixly)是一款基于图形化积木的编程软件,适合对 C/C++ 不熟悉的用户快速实现跟随与定位功能。本章介绍如何导入 UWB 自定义库并理解各功能模块。

 

6.1  导入 UWB 自定义库

请按以下步骤将随套件附带的 UWB 库文件导入米思齐:

13. 打开米思齐软件(桌面快捷方式如下)。

6-1  米思齐软件桌面图标


图解说明:这张图主要在说明“米思齐软件桌面图标”。如果你的版本界面略有不同,优先找同名按钮或菜单项即可。
 

14. 点击菜单中的"导入库"或相关选项,进入库管理界面。

6-2  米思齐软件主界面,点击对应菜单选项进行库导入


图解说明:这张图主要在说明“米思齐软件主界面,点击对应菜单选项进行库导入”。如果你的版本界面略有不同,优先找同名按钮或菜单项即可。
 

6-3  米思齐库导入菜单界面,选择导入自定义库文件


图解说明:这张图对应“米思齐库导入菜单界面,选择导入自定义库文件”这一步。如果你的版本界面略有不同,优先找同名按钮或菜单项即可。
 

6-4  米思齐文件选择界面,找到附件中的 .mil 格式库文件


图解说明:这张图对应“米思齐文件选择界面,找到附件中的 .mil 格式库文件”这一步。如果你的版本界面略有不同,优先找同名按钮或菜单项即可。
 

15. 选择附件中名为 "UWB解码+跟随+平面坐标计算.mil" 的自定义库文件。

6-5  选中 "UWB解码+跟随+平面坐标计算.mil" 文件后点击确认导入


图解说明:这张图对应“选中 "UWB解码+跟随+平面坐标计算.mil" 文件后点击确认导入”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

16. 在左侧菜单中下滑,确认是否新增了名为 "UWB解码+跟随+平面坐标计算" 的选项,点击展开即可使用。

6-6  导入成功后,左侧菜单出现 "UWB解码+跟随+平面坐标计算" 自定义分类


图解说明:这张图对应“导入成功后,左侧菜单出现 "UWB解码+跟随+平面坐标计算" 自定义分类”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

6.2  代码模块说明

 

6.2.1  初始化部分

初始化模块用于配置串口波特率及相关变量,须放置在程序最开始处。

6-7  米思齐初始化积木块:配置串口波特率,初始化 UWB 相关变量


图解说明:这张图对应“米思齐初始化积木块:配置串口波特率,初始化 UWB 相关变量”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

6.2.2  解码串口数据获取距离

基站0 通过串口向主板输出 16 个字节的数据帧,解码模块自动解析各字节含义,提取与各基站的测量距离。

6-8  解码串口数据积木块:自动解析16字节数据帧,获取各基站距离值


图解说明:这张图对应“解码串口数据积木块:自动解析16字节数据帧,获取各基站距离值”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

数据帧格式说明(共 16 字节):

6-9  串口数据帧字节格式总览,共16字节,各字节含义如下图详述


图解说明:这张图对应“串口数据帧字节格式总览,共16字节,各字节含义如下图详述”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

6-10  串口数据帧各字节详细含义对照表


图解说明:这张图对应“串口数据帧各字节详细含义对照表”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

6.2.3  自动跟随代码示例

跟随功能基于双基站测距,利用三角形中线定理判断标签与装置的距离远近,利用中线与底边的夹角判断标签的方位,从而控制小车的前进方向与速度。

注意:运动指令函数默认为空,需根据实际电机驱动接线情况自行填充对应的控制代码。

6-11  自动跟随积木块(上半部分):判断距离与方向的核心逻辑


图解说明:这张图对应“自动跟随积木块(上半部分):判断距离与方向的核心逻辑”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

6-12  自动跟随积木块(下半部分):运动指令调用(需自行填充)


图解说明:这张图对应“自动跟随积木块(下半部分):运动指令调用(需自行填充)”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

算法原理示意图:

6-13  跟随算法三角形中线定理示意图:用于判断标签与装置的距离远近


图解说明:这张图主要在说明“跟随算法三角形中线定理示意图:用于判断标签与装置的距离远近”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

6-14  跟随算法方位角计算示意图:中线与底边夹角用于判断标签方位


图解说明:这张图主要在说明“跟随算法方位角计算示意图:中线与底边夹角用于判断标签方位”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

6-15  跟随算法代码示例截图(续):完整判断逻辑流程


图解说明:这张图对应“跟随算法代码示例截图(续):完整判断逻辑流程”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

6-16  跟随算法代码示例截图(续):运动指令调用部分


图解说明:这张图对应“跟随算法代码示例截图(续):运动指令调用部分”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

6.2.4  平面坐标计算代码

平面坐标计算模块基于三边测量法(多圆交叉定位)计算标签在二维平面内的 X、Y 坐标。

6-17  平面坐标计算积木块:输入各基站距离,输出标签的 X/Y 坐标值


图解说明:这张图对应“平面坐标计算积木块:输入各基站距离,输出标签的 X/Y 坐标值”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

公式原理(三边测量法):以各基站为圆心,测量距离为半径画圆,三圆交叉点即为标签坐标。

6-18  三边测量法几何原理示意图:三圆交叉确定二维坐标


图解说明:这张图主要在说明“三边测量法几何原理示意图:三圆交叉确定二维坐标”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

6-19  平面坐标计算数学推导过程(坐标方程建立)


图解说明:这张图对应“平面坐标计算数学推导过程(坐标方程建立)”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

6-20  平面坐标计算数学推导过程(联立方程求解步骤)


图解说明:这张图对应“平面坐标计算数学推导过程(联立方程求解步骤)”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

6-21  平面坐标最终计算公式


图解说明:这张图对应“平面坐标最终计算公式”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

6.2.5  多基站供电注意事项

⚠ 注意:当主板同时连接两个以上基站时,主板的 3.3V 输出电流不足以驱动多个基站。建议使用外部稳压模块将电源稳至 5V,通过指定引脚为各基站单独供电,避免出现馈电导致定位不稳定。

6-22  基站供电引脚位置示意图:使用外部 5V 电源通过标注引脚单独为基站供电


图解说明:这张图主要在说明“基站供电引脚位置示意图:使用外部 5V 电源通过标注引脚单独为基站供电”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 


7  自行编译 HEX

若对系统响应速度有更高要求,或需要自定义配置参数,可自行修改源码并重新编译 HEX 文件烧录至模块。

 

7.1  编译步骤

17. 使用前,建议备份"定位源码-STM32"目录。

18. 解压"定位源码-STM32",解压后目录结构如下所示。

7-1  解压后的源码目录结构总览


图解说明:这张图对应“解压后的源码目录结构总览”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

7-2  定位源码根目录文件夹图标


图解说明:这张图主要在说明“定位源码根目录文件夹图标”。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

19.  "Project\ds_twr_init\MDK-ARM" 目录下,使用 MDK 打开 Project 项目,工程目录结构如下。

7-3  MDK 工程目录树结构,展示各源文件及文件夹层级关系


图解说明:这张图对应“MDK 工程目录树结构,展示各源文件及文件夹层级关系”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

20.  MDK 中按照下图配置调试接口(ST-Link 方式)。

  提示:若未打开工程,操作界面为灰色不可用;必须先打开项目工程才能操作各配置按钮。

7-4  MDK 调试接口配置界面(ST-Link 设置)


图解说明:这张图对应“MDK 调试接口配置界面(ST-Link 设置)”这一步。先分清设备角色、位置关系和接口方向,再继续后面的配置或计算。
 

7-5  MDK 芯片类型配置:STM32F103 属于 Medium 类型,按需 Add/Remove


图解说明:这张图对应“MDK 芯片类型配置:STM32F103 属于 Medium 类型,按需 Add/Remove”这一步。先分清设备角色、位置关系和接口方向,再继续后面的配置或计算。
 

21. 编译代码:首次编译选择"全部编译",后续选择"编译更改"以加快速度。无报错后即可下载程序。

7-6  MDK 编译工具栏:左侧为"编译更改",右侧为"全部编译"按钮


图解说明:这张图对应“MDK 编译工具栏:左侧为"编译更改",右侧为"全部编译"按钮”这一步。先分清设备角色、位置关系和接口方向,再继续后面的配置或计算。
 


8  代码介绍

本章介绍源码中关键宏定义和算法的含义与修改方法。可使用快捷键 Ctrl+F 在 MDK 中搜索相关参数名。

 

8.1  标签与基站的选择

通过修改以下宏定义来切换模块工作模式(标签或基站),每个模块编译前只能启用其中一个。

8-1  标签与基站模式选择宏定义代码截图(TAG/ANTHOR 二选一)


图解说明:这张图对应“标签与基站模式选择宏定义代码截图(TAG/ANTHOR 二选一)”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

参数

说明/值

TAG

标签模式开关,标签分为 MASTER TAG 和 SLAVE TAG。MASTER TAG 负责调度测距任务。TAG 与 ANTHOR 只能选其一,使用时删除前面的 "//"。

ANTHOR

基站模式开关,与 TAG 互斥。

TAG_ID

定义 SLAVE TAG 的 ID。单标签时与 MASTER_TAG 值相同;多标签时,除第一个标签外,其余标签可自定义,但不能与其他值重复。

MASTER_TAG

定义 MASTER TAG,系统必须有且只有一个,值无需修改。

MAX_SLAVE_TAG

定义系统中 SLAVE TAG 的总数量。

SLAVE_TAG_START_INDEX

无需修改。

ANTHOR_MAX_NUM

定义基站总数。

ANTHOR_IND

基站 ID,从 0 开始。若共有 3 个基站,分别修改为 0、1、2,各自编译下载。

 

8.2  均值滤波

均值滤波通过多次测距取平均值的方式降低定位误差,提升数据稳定性。

宏定义 ANCHOR_REFRESH_COUNT 用于设置均值计算次数:该值越大,数据越平稳,但刷新频率越低;该值越小,刷新越快,但抗噪能力稍弱。当前测试三基站一标签时最高刷新频率为 40Hz。

8-2  均值滤波相关代码:ANCHOR_REFRESH_COUNT 控制多次测距后取平均的次数


图解说明:这张图对应“均值滤波相关代码:ANCHOR_REFRESH_COUNT 控制多次测距后取平均的次数”这一步。先分清标签、基站和坐标关系,再对照实物或串口数据理解后续功能。
 

 

8.3  中值滤波

中值滤波用于防止距离数据出现较大突变(如干扰导致的跳点),代码简单,执行速度快。滤波相关的两个关键宏定义如下:

8-3  中值滤波代码实现:Filter_N 和 Filter_D 控制滤波器数量与窗口大小


图解说明:这张图主要在说明“中值滤波代码实现:Filter_N 和 Filter_D 控制滤波器数量与窗口大小”。如果你的版本界面略有不同,优先找同名按钮或菜单项即可。
 

 

参数

说明/值

Filter_N

滤波器数量,每个基站需要一个独立的滤波器,当前代码定义了 5 个(支持最多 5 个基站)。

Filter_D

单个滤波器内的数据条数(滤波窗口大小),当前设为 5,即对 5 条数据取中值。Filter_D 越大,平滑效果越好,但响应越慢。需与 ANCHOR_REFRESH_COUNT 均衡配置,避免两者同时取较大值。

 

⚠ 注意:Filter_D 与 ANCHOR_REFRESH_COUNT 不宜同时设置过大,否则系统响应延迟明显,坐标点跟不上实际移动速度。