1. 项目概述为什么选择UWB进行高精度测距在物联网和智能设备领域精确知道一个物体“在哪里”以及它“离多远”是许多应用场景的基石。无论是工厂里的AGV小车需要精准停靠还是博物馆里对珍贵展品的防丢失监控亦或是大型仓库中快速定位货架都离不开可靠的距离测量与定位技术。过去我们尝试过很多方案蓝牙信标Beacon的精度通常在米级且容易受多径效应和人体遮挡影响Wi-Fi定位虽然覆盖广但精度同样有限通常在3-5米超声波传感器精度尚可但测量距离短且需要视距传播。这些技术在某些场景下够用但一旦涉及到需要厘米级精度的关键应用就显得力不从心。这时超宽带Ultra-Wideband, UWB技术走进了我们的视野。它不像蓝牙或Wi-Fi那样用连续的无线电波载着数据慢慢“走”而是发射持续时间极短纳秒级的脉冲信号。你可以把它想象成用“闪光灯”拍照而不是用“手电筒”持续照明。这种工作方式带来了几个核心优势首先是极高的时间分辨率因为脉冲极短所以测量信号飞行时间Time of Flight, ToF的误差可以做到非常小这是实现厘米级测距精度的物理基础其次是强大的抗干扰和多径分辨能力窄脉冲信号更容易从反射信号中区分出直达路径信号再者是功耗相对较低因为发射机大部分时间处于休眠状态只在需要时“闪”一下。REYAX的RYUW122_Lite模块就是一款基于DW1000芯片或类似方案的UWB收发器开发板。它把复杂的射频电路、天线和基础固件都集成好了并通过简单的串口和AT命令暴露给开发者。这意味着你不需要是射频专家也能快速上手验证UWB的测距和通信能力。本文的核心就是带你从零开始用最“接地气”的方式——不写一行代码不动一块烙铁除了接线仅通过串口工具和AT命令让两块RYUW122_Lite模块“对话”并告诉你它们之间精确的距离。这套方法非常适合原型验证、概念测试以及理解UWB通信的基本工作流程。2. RYUW122_Lite模块深度解析与硬件连接2.1 模块核心特性与选型考量RYUW122_Lite虽然是个“Lite”版开发板但其核心的射频性能与完整的RYUW122模块是一致的。选择它作为入门和验证工具主要基于以下几点考虑集成化与易用性模块集成了天线、射频前端、主控MCU和稳压电路。天线采用的是PCB天线虽然增益和方向性不如外接天线但在室内短距离几十米内测试中完全足够且避免了复杂的天线匹配调试。板载的MCU已经预烧录了固件负责处理底层的UWB协议栈、ToF计算和AT命令解析我们只需关注应用层逻辑。双频段支持模块支持Channel 5 (6489.6 MHz)和Channel 9 (7987.2 MHz)两个频段。不同频段会影响穿透能力和测距精度。通常低频段如Channel 5绕射和穿透能力稍好适合复杂环境高频段如Channel 9带宽更宽理论上时间分辨率更高精度可能更好。在AT命令中可以通过ATCHANNEL进行切换默认通常是Channel 5。通信与测距一体这是UWB一个很实用的特点。模块在进行高精度测距的同时可以捎带传输少量数据每次最多几十到一百多字节。这意味着你不仅可以知道标签Tag离锚点Anchor多远还能知道标签的状态信息比如电池电压、传感器读数或一个简单的状态码。AT命令控制这是本实践的核心。通过串口发送ASCII格式的AT命令可以配置模块的所有参数并触发操作。这种方式屏蔽了底层寄存器配置、时序控制等复杂操作极大地降低了开发门槛。固件内置的命令集涵盖了模式设置、网络参数、通信触发等关键功能。技术规格解读精度±10cm这是一个典型的实验室或理想视距条件下的指标。在实际环境中遮挡、多径、天线方向等因素会影响精度可能降至20-30cm但这依然远超其他无线技术。范围100米这是户外视距条件下的最大理论值。室内由于墙壁、人体等障碍物衰减有效范围会显著缩小通常室内可靠通信距离在20-50米之间具体取决于环境。供电3.3V务必注意模块的逻辑电平是3.3V且供电电压要求为3.3V。直接连接5V的USB转串口模块的VCC引脚极有可能损坏模块。波特率9600/115200模块支持两种波特率通过ATUART命令切换。初始默认波特率通常是115200这也是我们推荐使用的速率传输效率更高。2.2 硬件连接详解与避坑指南根据原文的接线表连接看起来很简单但实际操作中有几个关键细节决定了成败。所需材料清单RYUW122_Lite模块 x2USB转TTL串口模块USB to Serial/UART TTL Adapterx2。强烈建议使用FT232RL或CP2102等主流芯片的模块稳定性好驱动完善。杜邦线母对母若干。电脑一台用于运行串口调试工具。接线步骤与原理供电确认首先确保你的USB转TTL模块支持3.3V电平输出并且有一个标注为“3.3V”或“3V3”的引脚用于供电。用万用表测量一下这个引脚和GND之间的电压确认是3.3V左右。连接电源将USB转TTL模块的3.3V引脚连接到 RYUW122_Lite 的VDD引脚。将USB转TTL模块的GND引脚连接到 RYUW122_Lite 的GND引脚。 注意绝对不要接错到5V引脚上这是烧毁模块最常见的原因。连接串口信号线这里需要注意“交叉连接”原则即一端的发送TX要接另一端的接收RX。将USB转TTL模块的TX引脚连接到 RYUW122_Lite 的RX引脚。将USB转TTL模块的RX引脚连接到 RYUW122_Lite 的TX引脚。 提示如果不确定USB转TTL模块的TX/RX定义可以查阅其说明书。通常模块的TX引脚应该发送数据到目标设备的RX引脚。实物连接心得共地是关键两个模块Anchor和Tag虽然各自连接独立的USB转TTL模块但如果你希望系统稳定最好确保两个USB转TTL模块的GND是连通的。一个简单的办法是将两个模块插在同一台电脑的USB口上电脑的主板会为它们提供共地参考。如果使用两台电脑测距可能会因参考地电位不同而出现偏差甚至无法工作。电源稳定性USB口供电有时会因线缆质量或电脑USB口驱动能力不足而产生电压波动。如果模块工作不稳定如频繁复位、AT命令无响应可以尝试换一个USB口或者使用带外部电源的USB Hub。接线检查在通电前花一分钟时间按照“VDD-3.3V, GND-GND, TX-RX, RX-TX”的顺口溜再检查一遍。错误的接线是导致“模块无反应”问题的首要原因。3. 串口工具配置与AT命令基础3.1 串口调试工具的选择与配置任何能进行串口收发数据的软件都可以如Putty、SecureCRT、Arduino IDE的串口监视器或者原文提到的HTERM。我个人在Windows下更习惯使用Tera Term或CoolTerm它们功能强大且免费。这里以通用的配置流程为例安装驱动将USB转TTL模块插入电脑等待系统自动安装驱动或手动安装厂商提供的驱动。在设备管理器的“端口COM和LPT”下你会看到新增的COM口例如COM3和COM4。记下分别对应Anchor和Tag的端口号。打开软件并连接打开串口调试软件新建一个串口连接。选择正确的端口号如COM3。设置波特率为115200。数据位8停止位1校验位None流控制None。这是最常见的8N1格式。点击“连接”或“Open”。关键软件设置发送新行Send on Enter必须设置为“CRLF”即\r\n回车换行。AT命令协议规定命令必须以回车换行符结尾。在Tera Term中可以在“Setup” - “Serial port”中设置“Transmit”为“CRLF”。在CoolTerm中勾选“Send on Enter”并选择“CRLF”。这是很多新手忽略导致命令无响应的关键点。本地回显Local Echo建议打开这样你可以在屏幕上看到自己键入的命令方便检查。日志功能强烈建议开启日志记录功能将串口的所有收发数据保存到文本文件中。这对于调试和后续分析通信过程至关重要。3.2 AT命令语法与错误排查AT命令的通用格式是ATCOMMAND[PARAMETER]最后以回车换行(\r\n)结束。模块收到命令后会返回响应。成功响应OK失败响应ERRerror_code原文列出了错误码这里结合实战经验再深入解读一下ERR1命令末尾没有回车换行(\r\n)。99%的情况是你的串口工具没有设置为“发送新行CRLF”。请仔细检查软件设置。ERR2命令不是以“AT”开头。检查是否有多余的空格或字符在“AT”之前。例如ATMODE1前面有空格就会报此错误。ERR3参数错误。例如ATMODE5而MODE只能设置为0或1。或者ATNETWORKID后面没跟参数。请对照手册检查参数范围和格式。ERR4命令执行失败。这通常发生在命令逻辑冲突或硬件状态不允许时。例如在未设置模式前就尝试设置地址。ERR5未知命令。检查命令拼写是否正确比如ATMOD少了个E。基础测试命令 连接好模块打开串口工具并正确设置后首先发送一个最简单的命令AT。你应该立刻收到回应OK。这证明硬件连接、串口配置和模块基础功能都是正常的。如果没反应请按以下顺序排查检查USB转TTL模块的驱动是否安装端口号是否正确。检查电源是否接对3.3V。检查TX/RX是否交叉连接。检查串口工具的波特率115200和“发送新行”设置CRLF。尝试按下模块上的复位RESET按钮。4. 双模块角色配置与网络建立UWB测距系统通常基于“锚点Anchor-标签Tag”的架构。锚点位置固定且已知标签是需要被定位的目标。一个系统中可以有多个锚点通过标签与多个锚点之间的距离多边定位来计算标签的二维或三维坐标。本文实践最简单的两点一线测距只需要一个锚点和一个标签。4.1 配置锚点Anchor我们假设你使用COM3端口连接作为锚点的模块。软件复位首先发送ATRESET命令让模块软复位回到初始状态。这会返回RESET和READY两行响应。设置操作模式发送ATMODE1。参数1代表锚点模式。成功后返回OK。原理补充模式设置决定了模块在通信中的行为。锚点模式Mode 1下模块会主动发起测距轮询Poll并计算ToF。设置网络ID发送ATNETWORKIDREYAX123。这里的REYAX123可以替换为任意不超过16个字符的字符串通常建议用字母数字。锚点和标签必须使用完全相同的网络ID这是它们能够互相识别的首要条件。实操心得网络ID相当于一个无线网络的“名称”或“密码”。在同一物理空间内如果有多组UWB设备在同时工作使用不同的网络ID可以避免相互干扰。建议在项目开发初期就规划好ID命名规则。设置地址ID发送ATADDRESSANCHOR1。ANCHOR1是这个锚点在网络内的唯一短地址最多16字节用于在通信中被识别。你可以设置为任何有意义的名称如ROOM1_A1。可选保存配置有些模块支持ATSAVE命令将当前配置保存到非易失性存储器这样下次上电就不用重新配置了。请查阅RYUW122的详细AT命令手册确认。锚点配置完成后其串口可能会变得相对“安静”因为它正在等待进入测距流程。4.2 配置标签Tag在另一个串口窗口假设是COM4中对标签模块进行配置。步骤与锚点类似但有关键区别。软件复位ATRESET。设置操作模式发送ATMODE0。参数0代表标签模式。这是与锚点最核心的差别。原理补充标签模式Mode 0下模块处于监听状态等待来自锚点的轮询Poll消息收到后回复响应Response并参与ToF计算。设置网络ID发送ATNETWORKIDREYAX123。必须与锚点的网络ID一字不差。设置地址ID发送ATADDRESSTAG1。设置为一个与锚点不同的名字如MOBILE_TAG1。配置顺序的讲究理论上先配置锚点还是标签没有强制要求。但在实际调试中我习惯先配置并启动锚点再配置标签。因为锚点是通信的发起方先让它就绪可以更清晰地观察整个通信链路的建立过程。配置验证技巧配置完成后可以发送查询命令来确认设置是否生效。例如ATMODE?会返回MODE:1锚点或MODE:0标签。ATNETWORKID?会返回NETWORKID:REYAX123。ATADDRESS?会返回ADDRESS:ANCHOR1。 善用这些查询命令可以在不重新配置的情况下快速检查模块状态。5. 测距与数据通信实战流程配置完成后两个模块就已经组成了一个最小的、可工作的UWB网络。它们之间会按照内置的协议自动进行测距。但如何触发一次测距并看到结果呢这就需要用到通信命令。5.1 理解半双工与查询-响应机制原文提到了“半双工”和“查询-响应”。这里再展开一下半双工就像对讲机同一时间只能一方说另一方听。UWB在这个模式下通信和测距是分时进行的。查询-响应Poll-Response这是DW1000等芯片常用的双边双向测距Double-Sided Two-Way Ranging, DSTWR协议的精简实现。锚点发送一个“Poll”消息标签收到后回复一个“Response”消息。通过精确记录这四个消息Poll发送、Poll接收、Response发送、Response接收的时间戳双方可以共同计算出信号的飞行时间从而消除各自时钟偏差带来的误差这是实现高精度测距的关键。5.2 配置标签的自动回复消息为了让通信更有意义我们可以让标签在回复测距响应时捎带上一段数据。在标签的串口COM4中发送ATTAG_SEND5,HELLO命令解析ATTAG_SEND设置标签的自动发送数据。5数据的长度单位是字节。HELLO正好是5个字符。HELLO要发送的数据内容。可以是任何ASCII字符串长度需与前面声明的长度一致。响应OK。这表示标签已经准备好在下次收到锚点的测距请求时会在回复中自动附上“HELLO”这个消息。5.3 从锚点发起测距与通信现在一切准备就绪。在锚点的串口COM3中我们手动触发一次通信和测距。发送ATANCHOR_SENDTAG1,4,TEST命令解析ATANCHOR_SEND命令锚点向指定的标签发送数据并启动一次测距流程。TAG1目标标签的地址ID。必须与标签模块上设置的ATADDRESS完全一致否则标签不会响应。4要发送的数据长度TEST是4个字节。TEST锚点要发送给标签的数据内容。5.4 观察通信与测距结果发送上述命令后在两个串口监视器上你会看到类似以下的信息流在标签COM4的窗口你会看到TAG_RCV4,TEST这表示标签收到了来自锚点地址为TAG1所对应的那个锚点发来的长度为4字节的数据“TEST”。在锚点COM3的窗口你会看到ANCHOR_RCVTAG1,5,HELLO,62 cm这是整个过程的精华输出它告诉我们ANCHOR_RCV锚点收到了一个返回消息。TAG1消息来自地址为TAG1的标签。5返回数据的长度是5字节。HELLO返回的数据内容是“HELLO”这正是我们之前用ATTAG_SEND设置的。62 cm最关键的部分锚点计算出的与标签TAG1之间的直线距离是62厘米。过程解读你在锚点端发送ATANCHOR_SEND命令。锚点模块通过UWB射频向网络中广播一个“Poll”消息其中包含了目标地址TAG1和数据TEST。标签TAG1监听无线信号识别到自己的地址和Poll消息于是记录时间戳t1收到Poll并准备回复。标签在t2时刻发送“Response”消息其中包含了我们预设的数据HELLO。锚点收到Response记录时间戳t3。锚点或双方根据t1, t2, t3以及之前记录的Poll发送时间戳t0通过特定的公式如ToF [(t3-t0) - (t2-t1)] / 2的变体实际协议更复杂以校准时钟偏移计算出信号的飞行时间。将飞行时间乘以光速~3e8 m/s就得到了距离。模块内部完成所有这些计算最终将结果62 cm通过串口输出给你。5.5 进阶操作与参数调优基础测距成功后你可以探索更多AT命令来优化性能或适应不同场景连续测距模式手动发送ATANCHOR_SEND毕竟麻烦。可以查询手册是否有自动连续测距模式例如ATRATE设置测距频率如10Hz。调整射频参数ATCHANNEL切换频道5或9。如果当前频道干扰大可以换另一个试试。ATPRF设置脉冲重复频率如16MHz或64MHz。更高的PRF可能提升测距精度但可能增加功耗或受法规限制。ATPLEN设置前导码长度。更长的前导码能提升接收灵敏度增加距离但会加长数据包时间降低刷新率。读取模块信息ATVER?查询固件版本。ATTEMP?读取芯片温度某些模块支持。ATVOLT?读取供电电压用于监控电池电量如果标签是电池供电。 重要提示修改射频参数前请务必查阅当地无线电管理法规确保所使用的频段、功率和参数符合规定避免造成干扰或违规。6. 常见问题、调试技巧与实战心得即使按照步骤操作你也可能会遇到一些问题。下面是我在多次实践中总结的常见故障和解决方法。6.1 问题排查速查表问题现象可能原因排查步骤与解决方案发送AT命令无任何响应1. 电源接错如接了5V2. TX/RX接反3. 波特率设置错误4. 串口工具未发送CRLF5. 模块损坏1. 用万用表确认VDD引脚为3.3V。2. 交换TX和RX线再试。3. 尝试将波特率改为9600如果模块默认是9600。4. 检查串口工具设置确保“发送新行”为CRLF。5. 按复位键或重新上电。返回ERR1命令末尾缺少回车换行(\r\n)检查并确认串口工具的“发送新行”或“行结束符”设置为CRLF。返回ERR3命令参数格式错误或超出范围仔细核对命令手册检查参数格式如长度、允许的字符。例如地址ID不能包含逗号等特殊字符。锚点发送ATANCHOR_SEND后无任何返回1. 标签未上电或未配置2. 网络ID不匹配3. 标签地址写错4. 距离过远或有严重遮挡1. 确认标签模块已上电并正确配置为MODE0且NETWORKID与锚点相同。2. 分别在锚点和标签端发送ATNETWORKID?和ATADDRESS?进行核对。3. 将两个模块靠近1米内移除中间障碍物再试。4. 检查标签端是否设置了ATTAG_SEND。能收到ANCHOR_RCV但距离显示为0或异常值如655351. 测距流程未成功完成如响应超时2. 天线方向或遮挡问题3. 时钟同步问题1. 确保两个模块之间是清晰的视距Line of Sight。2. 尝试调整模块方向使天线正面相对。3. 让模块静止几秒钟再进行测距。首次通信或长时间闲置后时钟需要时间同步。测距结果跳动噪声大1. 环境多径干扰如靠近金属墙面2. 电源噪声3. 其他无线设备干扰如Wi-Fi路由器1. 在开阔空间测试远离大型金属物体。2. 为模块供电增加滤波电容如并联一个100uF电解电容和一个0.1uF陶瓷电容在VDD和GND之间。3. 尝试切换UWB频道Channel 5或9避开Wi-Fi的2.4G/5G频段。6.2 实战经验与进阶建议天线方向性RYUW122_Lite的PCB天线是有方向性的。其辐射模式大致是垂直于PCB板面的方向信号最强。在测试时尽量让两个模块的PCB板平行放置并且正面相对这样才能获得最佳的通信距离和最稳定的测距结果。如果模块互相垂直或背对信号会急剧衰减。环境是最大的变量UWB对非视距NLOS环境非常敏感。一堵砖墙可能让距离衰减增加10-20dB混凝土墙更甚。人体主要是水分对UWB信号吸收也很厉害。因此标称的100米是理想视距室内实际可用距离要打很大折扣。做场景规划时务必进行实地勘测。电源去耦如果使用开发板上的3.3V线性稳压器为模块供电当其他数字电路如单片机同时工作时电源线上的噪声可能会干扰UWB芯片敏感的射频部分导致性能下降。一个立竿见影的改善方法是在模块的VDD和GND引脚之间尽可能靠近引脚的位置焊接一个10uF的钽电容和一个0.1uF的陶瓷电容。这能有效滤除低频和高频电源噪声。从AT命令到嵌入式集成AT命令模式适合快速验证和调试。当你的产品进入原型开发阶段时就需要将RYUW122模块与你的主控MCU如STM32、ESP32通过串口连接并在MCU中编写程序自动发送和解析这些AT命令。你需要处理命令的发送、响应的接收、超时重试、错误处理等逻辑。建议先基于串口调试助手把整个通信流程摸透再开始编码。多标签与定位系统两点测距只是基础。要实现2D或3D定位至少需要3个或4个位置已知的锚点。每个锚点都需要与标签进行测距。这需要更复杂的系统调度通常需要一个中央处理器可以是其中一个锚点也可以是独立的网关来协调所有锚点的测距时序收集所有距离数据最后通过三角定位算法解算出标签坐标。REYAX或其他厂商可能会提供更高级的固件或SDK来支持多锚点网络。通过以上步骤和要点你应该能够顺利地让两块RYUW122_Lite模块跑起来并亲眼见证厘米级精度的无线测距。这个过程本身不仅验证了UWB技术的可行性更重要的是为你理解更复杂的UWB定位系统打下了坚实的基础。记住硬件连接、AT命令格式和网络ID一致性是成功的三大基石而耐心细致的调试则是解决一切问题的钥匙。
UWB高精度测距实战:基于RYUW122_Lite模块的AT命令快速上手
1. 项目概述为什么选择UWB进行高精度测距在物联网和智能设备领域精确知道一个物体“在哪里”以及它“离多远”是许多应用场景的基石。无论是工厂里的AGV小车需要精准停靠还是博物馆里对珍贵展品的防丢失监控亦或是大型仓库中快速定位货架都离不开可靠的距离测量与定位技术。过去我们尝试过很多方案蓝牙信标Beacon的精度通常在米级且容易受多径效应和人体遮挡影响Wi-Fi定位虽然覆盖广但精度同样有限通常在3-5米超声波传感器精度尚可但测量距离短且需要视距传播。这些技术在某些场景下够用但一旦涉及到需要厘米级精度的关键应用就显得力不从心。这时超宽带Ultra-Wideband, UWB技术走进了我们的视野。它不像蓝牙或Wi-Fi那样用连续的无线电波载着数据慢慢“走”而是发射持续时间极短纳秒级的脉冲信号。你可以把它想象成用“闪光灯”拍照而不是用“手电筒”持续照明。这种工作方式带来了几个核心优势首先是极高的时间分辨率因为脉冲极短所以测量信号飞行时间Time of Flight, ToF的误差可以做到非常小这是实现厘米级测距精度的物理基础其次是强大的抗干扰和多径分辨能力窄脉冲信号更容易从反射信号中区分出直达路径信号再者是功耗相对较低因为发射机大部分时间处于休眠状态只在需要时“闪”一下。REYAX的RYUW122_Lite模块就是一款基于DW1000芯片或类似方案的UWB收发器开发板。它把复杂的射频电路、天线和基础固件都集成好了并通过简单的串口和AT命令暴露给开发者。这意味着你不需要是射频专家也能快速上手验证UWB的测距和通信能力。本文的核心就是带你从零开始用最“接地气”的方式——不写一行代码不动一块烙铁除了接线仅通过串口工具和AT命令让两块RYUW122_Lite模块“对话”并告诉你它们之间精确的距离。这套方法非常适合原型验证、概念测试以及理解UWB通信的基本工作流程。2. RYUW122_Lite模块深度解析与硬件连接2.1 模块核心特性与选型考量RYUW122_Lite虽然是个“Lite”版开发板但其核心的射频性能与完整的RYUW122模块是一致的。选择它作为入门和验证工具主要基于以下几点考虑集成化与易用性模块集成了天线、射频前端、主控MCU和稳压电路。天线采用的是PCB天线虽然增益和方向性不如外接天线但在室内短距离几十米内测试中完全足够且避免了复杂的天线匹配调试。板载的MCU已经预烧录了固件负责处理底层的UWB协议栈、ToF计算和AT命令解析我们只需关注应用层逻辑。双频段支持模块支持Channel 5 (6489.6 MHz)和Channel 9 (7987.2 MHz)两个频段。不同频段会影响穿透能力和测距精度。通常低频段如Channel 5绕射和穿透能力稍好适合复杂环境高频段如Channel 9带宽更宽理论上时间分辨率更高精度可能更好。在AT命令中可以通过ATCHANNEL进行切换默认通常是Channel 5。通信与测距一体这是UWB一个很实用的特点。模块在进行高精度测距的同时可以捎带传输少量数据每次最多几十到一百多字节。这意味着你不仅可以知道标签Tag离锚点Anchor多远还能知道标签的状态信息比如电池电压、传感器读数或一个简单的状态码。AT命令控制这是本实践的核心。通过串口发送ASCII格式的AT命令可以配置模块的所有参数并触发操作。这种方式屏蔽了底层寄存器配置、时序控制等复杂操作极大地降低了开发门槛。固件内置的命令集涵盖了模式设置、网络参数、通信触发等关键功能。技术规格解读精度±10cm这是一个典型的实验室或理想视距条件下的指标。在实际环境中遮挡、多径、天线方向等因素会影响精度可能降至20-30cm但这依然远超其他无线技术。范围100米这是户外视距条件下的最大理论值。室内由于墙壁、人体等障碍物衰减有效范围会显著缩小通常室内可靠通信距离在20-50米之间具体取决于环境。供电3.3V务必注意模块的逻辑电平是3.3V且供电电压要求为3.3V。直接连接5V的USB转串口模块的VCC引脚极有可能损坏模块。波特率9600/115200模块支持两种波特率通过ATUART命令切换。初始默认波特率通常是115200这也是我们推荐使用的速率传输效率更高。2.2 硬件连接详解与避坑指南根据原文的接线表连接看起来很简单但实际操作中有几个关键细节决定了成败。所需材料清单RYUW122_Lite模块 x2USB转TTL串口模块USB to Serial/UART TTL Adapterx2。强烈建议使用FT232RL或CP2102等主流芯片的模块稳定性好驱动完善。杜邦线母对母若干。电脑一台用于运行串口调试工具。接线步骤与原理供电确认首先确保你的USB转TTL模块支持3.3V电平输出并且有一个标注为“3.3V”或“3V3”的引脚用于供电。用万用表测量一下这个引脚和GND之间的电压确认是3.3V左右。连接电源将USB转TTL模块的3.3V引脚连接到 RYUW122_Lite 的VDD引脚。将USB转TTL模块的GND引脚连接到 RYUW122_Lite 的GND引脚。 注意绝对不要接错到5V引脚上这是烧毁模块最常见的原因。连接串口信号线这里需要注意“交叉连接”原则即一端的发送TX要接另一端的接收RX。将USB转TTL模块的TX引脚连接到 RYUW122_Lite 的RX引脚。将USB转TTL模块的RX引脚连接到 RYUW122_Lite 的TX引脚。 提示如果不确定USB转TTL模块的TX/RX定义可以查阅其说明书。通常模块的TX引脚应该发送数据到目标设备的RX引脚。实物连接心得共地是关键两个模块Anchor和Tag虽然各自连接独立的USB转TTL模块但如果你希望系统稳定最好确保两个USB转TTL模块的GND是连通的。一个简单的办法是将两个模块插在同一台电脑的USB口上电脑的主板会为它们提供共地参考。如果使用两台电脑测距可能会因参考地电位不同而出现偏差甚至无法工作。电源稳定性USB口供电有时会因线缆质量或电脑USB口驱动能力不足而产生电压波动。如果模块工作不稳定如频繁复位、AT命令无响应可以尝试换一个USB口或者使用带外部电源的USB Hub。接线检查在通电前花一分钟时间按照“VDD-3.3V, GND-GND, TX-RX, RX-TX”的顺口溜再检查一遍。错误的接线是导致“模块无反应”问题的首要原因。3. 串口工具配置与AT命令基础3.1 串口调试工具的选择与配置任何能进行串口收发数据的软件都可以如Putty、SecureCRT、Arduino IDE的串口监视器或者原文提到的HTERM。我个人在Windows下更习惯使用Tera Term或CoolTerm它们功能强大且免费。这里以通用的配置流程为例安装驱动将USB转TTL模块插入电脑等待系统自动安装驱动或手动安装厂商提供的驱动。在设备管理器的“端口COM和LPT”下你会看到新增的COM口例如COM3和COM4。记下分别对应Anchor和Tag的端口号。打开软件并连接打开串口调试软件新建一个串口连接。选择正确的端口号如COM3。设置波特率为115200。数据位8停止位1校验位None流控制None。这是最常见的8N1格式。点击“连接”或“Open”。关键软件设置发送新行Send on Enter必须设置为“CRLF”即\r\n回车换行。AT命令协议规定命令必须以回车换行符结尾。在Tera Term中可以在“Setup” - “Serial port”中设置“Transmit”为“CRLF”。在CoolTerm中勾选“Send on Enter”并选择“CRLF”。这是很多新手忽略导致命令无响应的关键点。本地回显Local Echo建议打开这样你可以在屏幕上看到自己键入的命令方便检查。日志功能强烈建议开启日志记录功能将串口的所有收发数据保存到文本文件中。这对于调试和后续分析通信过程至关重要。3.2 AT命令语法与错误排查AT命令的通用格式是ATCOMMAND[PARAMETER]最后以回车换行(\r\n)结束。模块收到命令后会返回响应。成功响应OK失败响应ERRerror_code原文列出了错误码这里结合实战经验再深入解读一下ERR1命令末尾没有回车换行(\r\n)。99%的情况是你的串口工具没有设置为“发送新行CRLF”。请仔细检查软件设置。ERR2命令不是以“AT”开头。检查是否有多余的空格或字符在“AT”之前。例如ATMODE1前面有空格就会报此错误。ERR3参数错误。例如ATMODE5而MODE只能设置为0或1。或者ATNETWORKID后面没跟参数。请对照手册检查参数范围和格式。ERR4命令执行失败。这通常发生在命令逻辑冲突或硬件状态不允许时。例如在未设置模式前就尝试设置地址。ERR5未知命令。检查命令拼写是否正确比如ATMOD少了个E。基础测试命令 连接好模块打开串口工具并正确设置后首先发送一个最简单的命令AT。你应该立刻收到回应OK。这证明硬件连接、串口配置和模块基础功能都是正常的。如果没反应请按以下顺序排查检查USB转TTL模块的驱动是否安装端口号是否正确。检查电源是否接对3.3V。检查TX/RX是否交叉连接。检查串口工具的波特率115200和“发送新行”设置CRLF。尝试按下模块上的复位RESET按钮。4. 双模块角色配置与网络建立UWB测距系统通常基于“锚点Anchor-标签Tag”的架构。锚点位置固定且已知标签是需要被定位的目标。一个系统中可以有多个锚点通过标签与多个锚点之间的距离多边定位来计算标签的二维或三维坐标。本文实践最简单的两点一线测距只需要一个锚点和一个标签。4.1 配置锚点Anchor我们假设你使用COM3端口连接作为锚点的模块。软件复位首先发送ATRESET命令让模块软复位回到初始状态。这会返回RESET和READY两行响应。设置操作模式发送ATMODE1。参数1代表锚点模式。成功后返回OK。原理补充模式设置决定了模块在通信中的行为。锚点模式Mode 1下模块会主动发起测距轮询Poll并计算ToF。设置网络ID发送ATNETWORKIDREYAX123。这里的REYAX123可以替换为任意不超过16个字符的字符串通常建议用字母数字。锚点和标签必须使用完全相同的网络ID这是它们能够互相识别的首要条件。实操心得网络ID相当于一个无线网络的“名称”或“密码”。在同一物理空间内如果有多组UWB设备在同时工作使用不同的网络ID可以避免相互干扰。建议在项目开发初期就规划好ID命名规则。设置地址ID发送ATADDRESSANCHOR1。ANCHOR1是这个锚点在网络内的唯一短地址最多16字节用于在通信中被识别。你可以设置为任何有意义的名称如ROOM1_A1。可选保存配置有些模块支持ATSAVE命令将当前配置保存到非易失性存储器这样下次上电就不用重新配置了。请查阅RYUW122的详细AT命令手册确认。锚点配置完成后其串口可能会变得相对“安静”因为它正在等待进入测距流程。4.2 配置标签Tag在另一个串口窗口假设是COM4中对标签模块进行配置。步骤与锚点类似但有关键区别。软件复位ATRESET。设置操作模式发送ATMODE0。参数0代表标签模式。这是与锚点最核心的差别。原理补充标签模式Mode 0下模块处于监听状态等待来自锚点的轮询Poll消息收到后回复响应Response并参与ToF计算。设置网络ID发送ATNETWORKIDREYAX123。必须与锚点的网络ID一字不差。设置地址ID发送ATADDRESSTAG1。设置为一个与锚点不同的名字如MOBILE_TAG1。配置顺序的讲究理论上先配置锚点还是标签没有强制要求。但在实际调试中我习惯先配置并启动锚点再配置标签。因为锚点是通信的发起方先让它就绪可以更清晰地观察整个通信链路的建立过程。配置验证技巧配置完成后可以发送查询命令来确认设置是否生效。例如ATMODE?会返回MODE:1锚点或MODE:0标签。ATNETWORKID?会返回NETWORKID:REYAX123。ATADDRESS?会返回ADDRESS:ANCHOR1。 善用这些查询命令可以在不重新配置的情况下快速检查模块状态。5. 测距与数据通信实战流程配置完成后两个模块就已经组成了一个最小的、可工作的UWB网络。它们之间会按照内置的协议自动进行测距。但如何触发一次测距并看到结果呢这就需要用到通信命令。5.1 理解半双工与查询-响应机制原文提到了“半双工”和“查询-响应”。这里再展开一下半双工就像对讲机同一时间只能一方说另一方听。UWB在这个模式下通信和测距是分时进行的。查询-响应Poll-Response这是DW1000等芯片常用的双边双向测距Double-Sided Two-Way Ranging, DSTWR协议的精简实现。锚点发送一个“Poll”消息标签收到后回复一个“Response”消息。通过精确记录这四个消息Poll发送、Poll接收、Response发送、Response接收的时间戳双方可以共同计算出信号的飞行时间从而消除各自时钟偏差带来的误差这是实现高精度测距的关键。5.2 配置标签的自动回复消息为了让通信更有意义我们可以让标签在回复测距响应时捎带上一段数据。在标签的串口COM4中发送ATTAG_SEND5,HELLO命令解析ATTAG_SEND设置标签的自动发送数据。5数据的长度单位是字节。HELLO正好是5个字符。HELLO要发送的数据内容。可以是任何ASCII字符串长度需与前面声明的长度一致。响应OK。这表示标签已经准备好在下次收到锚点的测距请求时会在回复中自动附上“HELLO”这个消息。5.3 从锚点发起测距与通信现在一切准备就绪。在锚点的串口COM3中我们手动触发一次通信和测距。发送ATANCHOR_SENDTAG1,4,TEST命令解析ATANCHOR_SEND命令锚点向指定的标签发送数据并启动一次测距流程。TAG1目标标签的地址ID。必须与标签模块上设置的ATADDRESS完全一致否则标签不会响应。4要发送的数据长度TEST是4个字节。TEST锚点要发送给标签的数据内容。5.4 观察通信与测距结果发送上述命令后在两个串口监视器上你会看到类似以下的信息流在标签COM4的窗口你会看到TAG_RCV4,TEST这表示标签收到了来自锚点地址为TAG1所对应的那个锚点发来的长度为4字节的数据“TEST”。在锚点COM3的窗口你会看到ANCHOR_RCVTAG1,5,HELLO,62 cm这是整个过程的精华输出它告诉我们ANCHOR_RCV锚点收到了一个返回消息。TAG1消息来自地址为TAG1的标签。5返回数据的长度是5字节。HELLO返回的数据内容是“HELLO”这正是我们之前用ATTAG_SEND设置的。62 cm最关键的部分锚点计算出的与标签TAG1之间的直线距离是62厘米。过程解读你在锚点端发送ATANCHOR_SEND命令。锚点模块通过UWB射频向网络中广播一个“Poll”消息其中包含了目标地址TAG1和数据TEST。标签TAG1监听无线信号识别到自己的地址和Poll消息于是记录时间戳t1收到Poll并准备回复。标签在t2时刻发送“Response”消息其中包含了我们预设的数据HELLO。锚点收到Response记录时间戳t3。锚点或双方根据t1, t2, t3以及之前记录的Poll发送时间戳t0通过特定的公式如ToF [(t3-t0) - (t2-t1)] / 2的变体实际协议更复杂以校准时钟偏移计算出信号的飞行时间。将飞行时间乘以光速~3e8 m/s就得到了距离。模块内部完成所有这些计算最终将结果62 cm通过串口输出给你。5.5 进阶操作与参数调优基础测距成功后你可以探索更多AT命令来优化性能或适应不同场景连续测距模式手动发送ATANCHOR_SEND毕竟麻烦。可以查询手册是否有自动连续测距模式例如ATRATE设置测距频率如10Hz。调整射频参数ATCHANNEL切换频道5或9。如果当前频道干扰大可以换另一个试试。ATPRF设置脉冲重复频率如16MHz或64MHz。更高的PRF可能提升测距精度但可能增加功耗或受法规限制。ATPLEN设置前导码长度。更长的前导码能提升接收灵敏度增加距离但会加长数据包时间降低刷新率。读取模块信息ATVER?查询固件版本。ATTEMP?读取芯片温度某些模块支持。ATVOLT?读取供电电压用于监控电池电量如果标签是电池供电。 重要提示修改射频参数前请务必查阅当地无线电管理法规确保所使用的频段、功率和参数符合规定避免造成干扰或违规。6. 常见问题、调试技巧与实战心得即使按照步骤操作你也可能会遇到一些问题。下面是我在多次实践中总结的常见故障和解决方法。6.1 问题排查速查表问题现象可能原因排查步骤与解决方案发送AT命令无任何响应1. 电源接错如接了5V2. TX/RX接反3. 波特率设置错误4. 串口工具未发送CRLF5. 模块损坏1. 用万用表确认VDD引脚为3.3V。2. 交换TX和RX线再试。3. 尝试将波特率改为9600如果模块默认是9600。4. 检查串口工具设置确保“发送新行”为CRLF。5. 按复位键或重新上电。返回ERR1命令末尾缺少回车换行(\r\n)检查并确认串口工具的“发送新行”或“行结束符”设置为CRLF。返回ERR3命令参数格式错误或超出范围仔细核对命令手册检查参数格式如长度、允许的字符。例如地址ID不能包含逗号等特殊字符。锚点发送ATANCHOR_SEND后无任何返回1. 标签未上电或未配置2. 网络ID不匹配3. 标签地址写错4. 距离过远或有严重遮挡1. 确认标签模块已上电并正确配置为MODE0且NETWORKID与锚点相同。2. 分别在锚点和标签端发送ATNETWORKID?和ATADDRESS?进行核对。3. 将两个模块靠近1米内移除中间障碍物再试。4. 检查标签端是否设置了ATTAG_SEND。能收到ANCHOR_RCV但距离显示为0或异常值如655351. 测距流程未成功完成如响应超时2. 天线方向或遮挡问题3. 时钟同步问题1. 确保两个模块之间是清晰的视距Line of Sight。2. 尝试调整模块方向使天线正面相对。3. 让模块静止几秒钟再进行测距。首次通信或长时间闲置后时钟需要时间同步。测距结果跳动噪声大1. 环境多径干扰如靠近金属墙面2. 电源噪声3. 其他无线设备干扰如Wi-Fi路由器1. 在开阔空间测试远离大型金属物体。2. 为模块供电增加滤波电容如并联一个100uF电解电容和一个0.1uF陶瓷电容在VDD和GND之间。3. 尝试切换UWB频道Channel 5或9避开Wi-Fi的2.4G/5G频段。6.2 实战经验与进阶建议天线方向性RYUW122_Lite的PCB天线是有方向性的。其辐射模式大致是垂直于PCB板面的方向信号最强。在测试时尽量让两个模块的PCB板平行放置并且正面相对这样才能获得最佳的通信距离和最稳定的测距结果。如果模块互相垂直或背对信号会急剧衰减。环境是最大的变量UWB对非视距NLOS环境非常敏感。一堵砖墙可能让距离衰减增加10-20dB混凝土墙更甚。人体主要是水分对UWB信号吸收也很厉害。因此标称的100米是理想视距室内实际可用距离要打很大折扣。做场景规划时务必进行实地勘测。电源去耦如果使用开发板上的3.3V线性稳压器为模块供电当其他数字电路如单片机同时工作时电源线上的噪声可能会干扰UWB芯片敏感的射频部分导致性能下降。一个立竿见影的改善方法是在模块的VDD和GND引脚之间尽可能靠近引脚的位置焊接一个10uF的钽电容和一个0.1uF的陶瓷电容。这能有效滤除低频和高频电源噪声。从AT命令到嵌入式集成AT命令模式适合快速验证和调试。当你的产品进入原型开发阶段时就需要将RYUW122模块与你的主控MCU如STM32、ESP32通过串口连接并在MCU中编写程序自动发送和解析这些AT命令。你需要处理命令的发送、响应的接收、超时重试、错误处理等逻辑。建议先基于串口调试助手把整个通信流程摸透再开始编码。多标签与定位系统两点测距只是基础。要实现2D或3D定位至少需要3个或4个位置已知的锚点。每个锚点都需要与标签进行测距。这需要更复杂的系统调度通常需要一个中央处理器可以是其中一个锚点也可以是独立的网关来协调所有锚点的测距时序收集所有距离数据最后通过三角定位算法解算出标签坐标。REYAX或其他厂商可能会提供更高级的固件或SDK来支持多锚点网络。通过以上步骤和要点你应该能够顺利地让两块RYUW122_Lite模块跑起来并亲眼见证厘米级精度的无线测距。这个过程本身不仅验证了UWB技术的可行性更重要的是为你理解更复杂的UWB定位系统打下了坚实的基础。记住硬件连接、AT命令格式和网络ID一致性是成功的三大基石而耐心细致的调试则是解决一切问题的钥匙。