
MyTag--厘米级测距UWB+BLE双模小型防丢器
简介
本项目是一款基于 nRF52832 与 DWM3000 的高精度 UWB+BLE 双模防丢卡。支持 10cm 级测距定位与低功耗蓝牙连接,集成电荷泵驱动的压电蜂鸣器,系轻量化设计,成品体积仅约
简介:本项目是一款基于 nRF52832 与 DWM3000 的高精度 UWB+BLE 双模防丢卡。支持 10cm 级测距定位与低功耗蓝牙连接,集成电荷泵驱动的压电蜂鸣器,系轻量化设计,成品体积仅约开源协议
:GPL 3.0
描述
MyTag--厘米级测距UWB+BLE双模小型防丢器
视频链接
功能演示视频见附件
项目简介
MyTag 是一套由失物端 A 板和网关端 B 板组成的小型防丢系统。两块板均以 Nordic nRF52832 为主控,并配有 DW3000 协议兼容 UWB 模块。A 板可固定在钥匙、背包或其他物品上,B 板负责与 A 板协同测距,并将状态和距离发送到手机或电脑浏览器,且本项目软硬件全部开源,详细信息见文末。
项目功能
- UWB 双向测距:B 板作为 Initiator,A 板作为 Responder,通过 DS-TWR 的 POLL、RESP、FINAL 帧交换计算距离。
- BLE 双链路控制:浏览器连接 B 板,B 板再通过 BLE 连接 A 板,将网页命令转发到失物端。
- 免安装网页终端:支持手机和电脑浏览器,可显示距离动画、三次有效数据均值、最近二十次记录丢包率和启动状态。
- 蜂鸣寻物:网页可控制 A 板蜂鸣器开关,也可设置频率、持续时间和重复次数。
- NFC 失物信息:A 板连接 NTAG I2C Plus,可从网页写入文本或 URL;拾到物品的人可用手机碰一碰读取预留信息。
- LED 与本地按键:两块板各有红、绿状态灯,支持网页独立控制;短按本地按键可快速点亮定位灯,长按 3 秒可闪灯并复位设备。
- 双板电量监测:A、B 板均通过分压电路采样单节锂电池电压,网页显示电压和估算电量,并在电压过低时提示充电。
- 链路诊断:网页可显示 A-B BLE 连接状态、RSSI、UWB 超时和丢包率,便于粗略进行距离检测。
- 按需启动 UWB:UWB 不需要长期保持工作;启动时由 Flash 标志配合芯片复位,在 BLE 初始化前完成 UWB 上电时序。
- 长续航:经实测,B板待机电流仅为0.2mA,理论续航2000小时;A板待机电流约为0.6mA,理论续航约670小时
典型应用场景包括钥匙和背包寻找、室内物品测距、UWB 状态机学习、Web Bluetooth 设备开发以及双模无线终端原型验证。
项目参数
| 项目 | 参数或说明 |
|---|---|
| 主控 | Nordic nRF52832-QFAA,ARM Cortex-M4F |
| BLE 协议栈 | Nordic S132 SoftDevice 7.2.0 |
| 开发环境 | nRF5 SDK 17.1.0,SEGGER Embedded Studio |
| 低频时钟 | 外部 32.768 kHz 晶振 |
| A 板 BLE 名称 | CC-UWB-TAG |
| B 板 BLE 名称 | CC-UWB-GW |
| UWB 模块 | DW3000 协议兼容模块,使用厂家适配 Decadriver |
| UWB 工作参数 | CH5、850 kbps、PLEN1024、DW 8-symbol SFD |
| 测距方式 | DS-TWR,B 板发起、A 板应答 |
| UWB 接口 | SPI,另有 IRQ、RST、WAKEUP 和独立电源控制 |
| 电池采样 | P0.28/AIN4,1 MΩ + 1 MΩ 分压 |
| 状态灯 | 每板 2 路,高电平点亮 |
| 本地按键 | P0.31,低电平触发 |
| A 板蜂鸣器 | EN P0.10,方波输入 P0.13 |
| A 板 NFC | SCL P0.20,SDA P0.22,FD P0.03 |
| 距离显示 | 最近 3 次有效测量均值 |
| 丢包统计 | 最近 20 次 UWB 记录中的超时占比 |
实际测距有效范围受uwb模块限制,在无遮挡的环境下,我手里的这块极限有效距离约为25-30m
原理解析(硬件说明)
1. 双板系统架构
A、B 两块板硬件主体相近,但软件角色不同。A 板随物品移动,负责 UWB 应答、蜂鸣提醒、NFC 信息、LED 和电量采样;B 板作为随身网关,负责发起测距,并通过 Web Bluetooth 与浏览器通信。
浏览器只直接连接 B 板。B 板收到网页命令后,通过第二条 BLE NUS 链路控制 A 板,并将 A 板的状态、RSSI、电量和 UWB 响应封装后转发到网页。这样可以避免手机同时管理两台 BLE 外设,也让网页协议保持统一。
图1:A/B 双板通信示意图

2. 主控与 BLE 电路
两块板均采用 nRF52832-QFAA。芯片内部集成 2.4 GHz BLE 射频、ARM Cortex-M4F 内核和常用数字外设。固件基于 S132 7.2.0,可同时承担 BLE 外设角色;B 板还承担中心角色,用于主动扫描并连接 A 板。
32 MHz 晶振供高频系统和射频使用,32.768 kHz 晶振作为 BLE 低频时钟。晶振、负载电容、芯片电源脚和去耦电容应靠近主控放置。2.4 GHz 射频引脚经匹配网络连接天线,匹配值应以最终 PCB 和外壳状态下的实测为准。
图2:nRF52832、时钟与 BLE 射频电路

3. UWB 模块与供电控制
UWB 模块通过 SPI 与 nRF52832 通信,SCK、MOSI、MISO、CS 分别使用 P0.14、P0.16、P0.15、P0.17,另有 P0.18 IRQ、P0.19 RST 和 P0.02 WAKEUP。P0.27 控制 UWB 电源,当前硬件为低电平上电。
该模块对上电顺序较敏感。直接在 BLE 已运行时执行完整上电流程可能与 SoftDevice 时序冲突,因此固件启动 UWB 时会先在 Flash 0x7E000 页写入带反码校验的启动标志,然后复位 nRF52832。第二次启动时,程序在初始化 BLE 之前读取标志并给 UWB 上电,成功后再恢复 BLE。启动过程中浏览器短暂断开属于正常现象。
图3:UWB 模块、SPI 与电源控制电路

4. UWB 测距过程
测距采用 DS-TWR。B 板发送 POLL,A 板接收后按设定延时发送 RESP;B 板收到 RESP 后延时发送 FINAL;A 板收到 FINAL 后利用各帧的发送、接收时间戳计算飞行时间和距离,再通过 BLE 将结果返回 B 板和网页。
本项目调试时按步骤验证了“POLL 发出、POLL 接收、RESP 发出、RESP 接收、FINAL 发出、FINAL 接收”六个阶段。国产兼容模块的延迟发送和 PHY 配置必须两端一致,不能只根据寄存器初始化成功判断测距链路已经正常。
图5:DS-TWR 时序定义(app_uwb.c)

5. 电池电压采样
电池电压经两个 1 MΩ 电阻等比例分压后接入 P0.28/AIN4,使 ADC 输入约为实际电池电压的一半。高阻值分压可以减小长期静态损耗,但更容易受到 ADC 输入阻抗、PCB 漏电和噪声影响,因此软件采样时需要留出稳定时间并进行多次采样。
网页按单节锂电池典型开路电压估算电量。电量百分比只用于趋势提示,不等同于专业电量计;带载、充电、温度和电芯差异都会影响读数。电压低于 3.3 V 时应及时充电,避免电池过放。
图6:电池分压与 SAADC 采样电路

6. 蜂鸣器与状态灯
A 板蜂鸣器由 P0.10 控制使能,P0.13 输出方波,采用PAM8904EGPR作为驱动芯片。网页可配置频率、单次响铃时间和重复次数,适合在距离较近但视线受阻时通过声音寻找物品。
两块板各使用 P0.29、P0.30 控制两路 LED。网页可独立开关每一路灯;本地短按按键时,程序先关闭原有灯光,再点亮该板的指定定位灯。长按超过 3 秒时,两灯闪烁两次后复位芯片。
图7:蜂鸣器、LED 与按键电路


7. NFC 电路
A 板通过 I2C 连接 NTAG I2C Plus,SCL 使用 P0.20,SDA 使用 P0.22,P0.03 连接场检测引脚。网页将文本或 URL 分片发送给 A 板,A 板再写入 NFC 标签。
NFC 识别距离主要取决于线圈尺寸、匝数、谐振匹配、安装位置和手机天线方向。外接线圈应尽量缩短连接线,远离电池、地平面和金属件;更换线圈后应重新检查谐振和读写稳定性。
图8:NTAG I2C Plus 与外接线圈电路

复刻须知
需购买材料
1.PCB:FR4 板厚1.0mm
2.元器件:当前原理图中所绘制的BU-03模块(该模块仅用作参考焊盘)不要购买!! 换成淘宝购买的另一款国产UWB模组:https://e.tb.cn/h.85A3VuzGzep2rjY?tk=9jzWgBHn8sy 选择‘UWB-X3-CA 小功率模组’,其它完全按照BOM表购买即可。
3.3D外壳:模型文件见附件,我使用的耗材是JLC-Black,可根据需求选择其他耗材
4.M2螺丝:选择M2×9沉头自攻螺丝
5.NFC线圈:无要求,自行购买或自制皆可
6.蜂鸣器:淘宝搜索压电陶瓷自行购买
7.电池:403030 400mah锂电池
8.烧录器:J-Link或其它国产ARM仿真器皆可,这里贴一份链接: https://e.tb.cn/h.8hdzhTD4Yy3bKXS?tk=sdQpgzQvlF3
9.(可选)烧录针
程序烧录
下载J-Flash Lite (我使用的是v9.36)
连接ARM仿真器

如图配置软件并点击确定

进入主界面后点击三个点选择文件

首先烧录蓝牙栈,选择从附件中下载的s132_nrf52_7.2.0_softdevice.hex

选择成功后连接仿真器与板子,确认连接好后先点击'Erase Chip'

出现图中提醒后即为清理成功(若提示连接不上设备则优先检查nrf主控芯片焊接和仿真器连接是否正确),接着点击'Program Device',如图即为烧录蓝牙栈成功

接下来继续点击三个点并选择board_a_tag_v1.0.0.hex(A板主程序)并直接点击'Program Device'烧录(注意此时不要点击Erase Chip)。下图即为烧录成功

至此,A板(失物端)烧录完成。
B板(寻找端)烧录步骤与A板相同,只不过将A板主程序换成board_b_gateway_v1.0.0.hex的B板主程序
其它流程仍然是先选择蓝牙栈固件➡Erase Chip➡点击烧录➡选择B板固件➡点击烧录
简单的验证烧录及硬件是否正常的方法:
固件中若点击主板侧方的按钮,会重置整板灯光并根据对应角色亮不同的光:A板为绿色,B板为红色
完整复刻流程
- 焊接整板(除电池),测量电源输入及系统3.3v是否对地短路,若不短路,焊接电池后测试充电是否正常以及系统3.3v供电是否完整
- 下载附件中的固件并烧录,具体烧录流程见上
- 使用电脑打开附件中的'ble_gateway_debug.html' (注:手机端若想使用,可使用脚本一键启动内网服务,具体使用说明见下方软件代码中的开源仓)
- 点击界面中的'连接 CC-UWB-GW',此时网页应自动扫描B板,稍作等待后点击配对扫描出来的'CC-UWB-GW'

- 配对成功后系统会自动扫描并连接A板,如图:(若两轮自动连接均失败,可手动再次点击'连接A板',若仍失败,请检查A板状态与焊接)

- 连接成功后web端可自动显示A B板的电池电压,估算电池电量,蓝牙信号强度,并开放对于两板的灯光控制以及对A板的蜂鸣器和NFC控制

- 此时点击'启动UWB'按钮,可自动对两板的UWB模块进行唤醒以及上电并进行初始化,整个过程可能较久(约50s左右) 注:UWB上电过程中产生蓝牙断开为正常现象


- 两板均上电成功后,web端会自动不断进行uwb测距结果刷新
- 由于UWB模块耗电量较大,测距完成后请点击'停止UWB'以提高续航
- 其他功能(如灯光控制,NFC写入,蜂鸣器控制)在网页端已经较为完善的体现,这里不再赘述
实物图
主板渲染图:

3D外壳装配体渲染图:

装配体实拍图:



软件代码
本项目代码完全开源
GitHub 开源仓库:
https://github.com/hyh12323/uwb-tag
Gitee:
https://gitee.com/fq12323/uwb-tag
仓库包含:
- 最新版 A 板标签固件和 B 板网关固件;
- nRF52 UWB 硬件适配层与适配 Decadriver;
- Web Bluetooth 控制页面;
- SDK 路径配置脚本、通信协议和排错文档;
- UWB 模块参考 Demo;
- GitHub Release 中可直接烧录的 A/B HEX、S132 SoftDevice 和校验文件。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










