本章节将作为一份详尽的实践指南,系统性地介绍如何通过AT指令集来配置和使用UWB650模块。内容将覆盖数据传输、高精度测距和实时定位三大核心功能,并结合文档中的命令示例,为工程师提供清晰的操作流程。
AT指令接口:结构与协议
UWB650模块的所有配置和操作都通过串口AT指令完成。这些指令遵循一个固定格式,即以UWBRFAT作为前缀,并以回车符<CR>和换行符<LF>作为结束符。模块的响应也遵循相似的格式,以<CR><LF>开始和结束。
在进行指令交互时,模块内部通过一个约5ms的超时定时器来判断串口数据的接收是否结束。遵循这一时序对于编写稳定可靠的自动化控制脚本至关重要,可以有效避免因指令发送过快而导致的命令解析错误或丢失。
数据传输:点对点、广播与增强可靠性
模块提供了灵活且功能丰富的数据传输能力,支持多种通信模式和增强机制。
网络寻址与数据路由
- 设备标识: 每个UWB650模块在网络中都由一个16位的PAN ID(个人局域网标识符)和一个16位的Address(设备地址)来唯一标识。只有PAN ID相同的模块之间才能进行通信,而同一PAN ID下的所有模块Address必须唯一。这两个参数可以通过UWBRFAT+DEVICEID=<id>,<addr>指令进行配置。
- 数据目标: 使用UWBRFAT+TXTARGET=<address>指令可以设定数据发送的目标地址。当<address>为一个具体的设备地址时,模块将进行点对点通信。当<address>设置为0xFFFF时,模块将以广播模式发送数据,网络内所有相同PAN ID的模块都能接收到该数据。
可靠性与安全性机制
- 信道侦听 (CCA): 通过UWBRFAT+CCAENABLE=1可以开启清晰信道评估(Clear Channel Assessment)功能。开启后,模块在发送数据前会先侦听信道是否空闲。如果信道被占用,模块将放弃本次发送,并通过串口返回CCA FAILURE。在UWB设备密集的部署环境中,该功能是避免数据冲突、提高通信成功率的有效手段。
- 自动应答 (ACK): 通过UWBRFAT+ACKENABLE=1可以开启自动应答请求功能。开启后,模块发送的单播数据帧会包含一个ACK请求。接收方成功收到数据后会自动回复一个ACK帧。发送方若在规定时间内收到ACK,则串口返回ACK DETECTED;若超时未收到,则返回ACK WAIT TIMEOUT。此功能为需要确保数据可靠到达的应用场景提供了链路层的确认机制。
- 数据加密 (AES-128): 使用UWBRFAT+SECURITY=<enable>,<key>指令可以启用AES-128加密功能。启用后,发送数据包的Frame Payload部分将被加密。需要注意的是,加密会增加16字节的额外开销,因此用户可传输的最大单包数据长度会从1012字节减少到996字节。这是一个在安全性与数据吞吐量之间的明确权衡。
功耗管理
- 侦听接收 (SNIFF): 对于功耗敏感的电池供电设备,可以通过UWBRFAT+SNIFFEN=1指令开启SNIFF模式。在该模式下,模块的接收机以约50%的占空比(16us开启,16us关闭)工作,从而将接收电流从约100 mA显著降低至65 mA。代价是可能会丢失部分数据包。这是一个典型的功耗与性能之间的权衡选项。
(SNIFF(侦听接收)模式时序图)
传输性能
基于DW3000芯片强大的收发缓冲区(1023个字节),除去固定的数据帧长度,用户单包最多可以传输1023-11=1012字节的Frame Payload数据。
由于无线通信发射端是从终端设备接收到一定量数据后,或等待一定的时间没有新数据才开始发射,无线通信发射端到无线通信接收端的数据空中传输也需要耗时,故数据从发射端到接收端输出会存在着一定的时间延迟,同样的条件下延迟时间是固定的(具体时间是由串口速率,空中速率和传输数据包的大小来共同决定的)。
(UWB模块端到端数据传输延迟示意图)
模块的数据从发送端串口输入到接收端串口输出的总用时参考如下表:
空中数据速率 |
1字节负载 |
1012字节负载 |
6.8Mbps |
1.905ms |
12.330ms |
850Kbps |
2.316ms |
20.885ms |
高精度测距:实现DS-TWR距离测量
模块的测距功能基于先进的双边双向测距法(Double-Sided Two-Way Ranging, DS-TWR),并结合了单边双向测距法(SS-TWR)的方案。DS-TWR通过在两个设备间进行三次消息交换来精确计算信号的飞行时间,其核心优势在于能够有效地消除由两端设备晶振频率差异(即时钟漂移)引入的测距误差,从而实现高精度测量,而无需复杂的全网时钟同步 。
(DS-TWR(双边双向测距)时序图)
- 角色定义: 测距时,设备分为Initiator(主机)和Responder(从机)。主机主动发起测距请求,从机被动响应。
- 指令操作:
- 主机: 主机通过发送UWBRFAT+RANGING=<number>,<addr1>,<addr2>,...指令来发起对一个或多个从机的测距。其中<number>为目标从机的数量,<addr>为从机地址列表。
- 从机: 从机默认处于响应模式,无需特殊配置。当收到主机的测距请求后,它会自动参与测距流程,并在完成后通过串口输出测距结果。
- 输出格式分析: 主机完成测距后,收到的格式为+RANGING=(<distance>),(<rssi>)。如果测距失败,距离值将为-1。
- 性能: 测距过程极为迅速。下表为不同模式下的测距消耗时间:
空中数据速率 |
模式 |
测距消耗时间 |
6.8Mbps |
主机 (Initiator) |
4.819ms |
从机 (Responder) |
4.051ms |
|
850Kbps |
主机 (Initiator) |
5.545ms |
从机 (Responder) |
4.553ms |
工程师可以通过监测模块的P011引脚电平来精确获取测距流程的起止时间。
实时定位系统 (RTLS):2D与3D定位策略
模块内置了完整的定位解算功能,支持二维平面和三维空间定位。
- 角色定义: 定位系统中,设备分为Tag(标签,待定位的移动目标)和Anchor(基站,坐标已知的固定参考点)。
- 基站设置: 部署定位系统的第一步是精确设置基站的坐标。使用UWBRFAT+COORDINATE=<x>,<y>,<z>指令为每个基站配置其在预定义笛卡尔坐标系中的位置,单位为厘米。整个定位系统的最终精度在很大程度上取决于基站坐标测量的准确性。
- 标签操作: 标签通过发送UWBRFAT+LOCATION=<anchor1>,<anchor2>,...指令来发起一次定位请求。指令中需要包含至少3个基站的地址(用于2D定位)或至少4个基站的地址(用于3D定位)。模块会自动与列表中的每个基站进行测距,然后利用内置的三角定位(更准确地说是多点定位)算法解算出自身的(x,y,z)坐标,并将结果通过串口输出。
- 状态互斥: 模块的功能状态是互斥的。例如,当一个模块作为主机主动发起测距或定位时,它将暂时无法响应来自其他主机的测距请求。同样,在测距或定位期间,已开启的SNIFF低功耗模式也会被暂时禁用,以确保能够接收到所有的测距响应帧。这意味着在存在多个主动设备(多个标签或主机)的系统中,必须在应用层设计一个合理的介质访问控制(MAC)策略,如时分多址(TDMA),来协调信道使用,避免冲突和请求失败。模块本身提供了物理层的能力,但系统级的稳定运行需要上层协议的保障。
UWB650模块深度解析系列
UWB650模块深度解析一 :UWB技术及UWB650模块导论