如何从零开始实现TDOA技术的 UWB 精确定位系统(6)

这是一个系列文章《如何从零开始实现TDOA技术的 UWB 精确定位系统》第6部分。
重要提示(劝退说明):

Q:做这个定位系统需要基础么?
A:文章不是写给小白看的,需要有电子技术和软件编程的基础
Q:你的这些硬件/软件是开源的吗?
A:不是开源的。这一系列文章是授人以"渔",而不是授人以"鱼"。文章中我会介绍怎么实现UWB定位系统,告诉你如何克服难点,但不会直接把PCB的Gerber文件给你去做板子,不会把软件的源代码给你,不会把编译好的固件给你。我不会给你任何直接的结果,我只是告诉你方法。 Q:我个人对UWB定位很兴趣,可不可以做出一个定位系统?
A:如果是有很强的硬件/软件背景,并且有大量的时间,当然可以做得出来。文章就是写给你看的!
Q:我是商业公司,我想把UWB定位系统搞成一个商业产品。
A:当然可以。这文章也是写给你看的。如果你想自己从头构建整个系统,看了我的文章后,只需要画电路打板;构思软件结构再编码。就这样,所有的难点我都会在文中提到,并介绍了解决方法。你不需要招人来做算法研究。如果你想省事省时间,可以直接购买我们的电路图(AD工程文件),购买我们的软件源代码,然后快速进入生产环节。(网站: https://uwbhome.top
在之前的文章中,已经介绍了 UWB TDOA定位相关的重要技术,其实这一系列文章可以算是结束了。接下来我陆续介绍一下细节。

频率、时间、长度关系

时间与长度的关系:

  • 光速是 299702547 m/s
  • 1ms光跑的路程299702.547m
  • 1us 光跑的路程299.702547m
  • 1ns光跑的路程0.299702547m=29.97cm
  • 1ps光跑的路程0.000299702547m=0.0299702547cm
  • 15.65ps光跑的路程=0.469034486055cm=0.00469034486055 m

DW1000的时间戳的单位是15.65ps,对应到0.469cm。也就是说如果时间戳的数字相差1,表示相差4.67毫米。这个大概是有些定位系统号称毫米级精度的数据来源吧。其实如果胆子够大,在宣传上还可以进一步提升精度。参见我的另一篇文章
如何建造精度 1 毫米的 UWB 精确定位系统
1m路程,光跑需要时间3.336641646892644e-9 秒 = 3.336641646892644 ns
DW1000的几个频率关系

  • DW1000使用的外部晶振频率为38.4MHz @+/-10ppm
  • DW1000的参考时钟是38.4MHz。38.4M进行13倍频后是499.2MHz,再4分频得到124.8MHz作为DW1000的内部系统时钟。
  • 38.4MHz的波长为 300Mm/38.4M=7.8125m (300Mm为光速,300M米)
  • 124.8MHz的波长为 300Mm/124.8M=2.4m
  • 38.4MHz的一个时钟周期为26.04ns
  • 124.8MHz的一个时钟周期为8.012ns
  • 63.8976 GHz 的一个时钟周期为15.6484375ps,光跑的路程=0.4690305cm

分析DW1000之外的其他方案

  • RTL-SDR的采样率为2.4 MS/s, 两次采样间的间隔为 300Mm/2.4M=125m,即两次采样的距离是125米
  • Ettus USRP B210的采样率为61.44MS/s,两次采样间的间隔为 300Mm/61.44M=4.88m,即两次采样的距离是4.88米

RTL-SDR是基于带有 RTL2832U 芯片的 DVB-T 电视调谐器,价格非常便宜。被无线电爱好者破解后,可以作为SDR使用。可以简单的认为它是一个数字无线电接收机。有很多人为它开发过一些软件,例如作为GPS接收机。
Ettus USRP B210是一个强大的数字无线电收发设备,拥有非常大的带宽。

简单总结一下

  • DW1000的系统时间寄存器实际更新率为124.8MHz ,用于定时发送,光距离分辨为240cm
  • DW1000的系统时间寄存器理论更新率为63.8976 GHz ,用于确定接收帧的时间戳及天线延时校准等,光距离分辨为0.469cm

DW1000支持UWB的Channel 1/2/3/4/5/7,频率从3494.4MHz到6489.6MHz

  • 3494.4MHz的波长为299.702547Mm /3494.4M=0.085766m (299.702547Mm为光速,299.702547M米)
  • 6489.6MHz的波长为299.702547Mm /6489.6M=0.04618m (299.702547Mm为光速,299.702547M米)
  • 3494.4MHz的一个时钟周期为0.286ns
  • 6489.6MHz的一个时钟周期为0.154ns

DW1000向空中发送UWB信号时,我们定义一个UWB数据包,其中会定义一些数据。那么,UWB数据包中1Bit占用多少时间,对应多大的长度?

  • 110 kbps的一位用时 1/110000=9.09us
  • 850 kbps的一位用时 1/850000=1.176us
  • 6.8 Mbps的一位用时 1/6800000=0.147us=147ns*29.97=4367.64cm

DW1000的时间戳

DW1000有几个寄存器,可以读到帧的接收时间、帧的发送时间,寄存器是40Bits的,时间单位是(1.0/499.2e6/128.0) = 15.65e-12秒,即15.65ps。这些寄存器的高8位可以忽略,因为DW1000之间的通讯距离不会有那么远,以致于需要那么长的时间帧才会到达。
2^40=0xFFFFFFFFFF=1099511627775
1099511627775*15.65ps = 17,207,356,974,678.75ps = 17,207ms
对于40Bits, 大约17秒多就回绕一次
2^32=0xFFFFFFFF=4294967295
4294967295*15.65ps =67,216,238,166.75ps = 67ms
对于32Bits, 大约67毫秒多就回绕一次

Seq32 分析

每一个UWB数据包都有一个序号seq。我们使用uint32 seq32记录这个序号。
最大值是0xFFFFFFFF,十进制值为4294967295
假设1ms发送一个数据包,那么可以表达4294967295ms
4294967295ms = 4294967s
4294967s/3600 = 1193小时
1193/24=49天
实际上我们每200ms发一个包,简化为100ms发一个包,那么可以表达4900天。相当于13年。因为每一次充电都会导致标签重启,seq32重新从0开始计数。
所以,我们基本上不用考虑seq32会重绕的情况。

STM32 MCU 选型

这个选型数据是2016年做的,过了这么多年,ST公司的产品有了很大变化。你需要自己重做一次功课。这个选型只能供参考。
TREK1000 的 MUC 是 STM32F105RCT6, 256K Flash, 64K RAM, STM32F10X_CL
Tripoint的MCU是STM32F031G6,32K Falsh, 4KRAM,UFQFPN28 Footer
候选:

  • STM32F103RET6, 64Pin, 512K Flash, 64KRAM

  • STM32F103C6T6, 48Pin, 32K Flash, 10KRAM, STM32F10X_MD for TAG

  • STM32F103C8T6, 48Pin, 64K Flash, 20KRAM, STM32F10X_MD

  • STM32F103CBT6, 48Pin, 128K Flash, 20KRAM, STM32F10X_MD

  • STM32F103T8, 36Pin, 64K Flash, 20KRAM, STM32F10X_MD

  • STM32F103TB, 36Pin, 128K Flash, 20KRAM, STM32F10X_MD

  • STM32L151C8T6: 64KFlash, 4KEEPROM, 32KRAM

  • STM32L151CBT6: 128KFlash, 4KEEPROM, 16KRAM

  • STM32L151CCT6: 256KFlash, 8KEEPROM, 32KRAM

  • STM32F030F4P6, TSSOP-20, 16KFlash, 4KRAM

  • STM32F030K6T6, TQFP32, 32KFlash, 4KRAM

  • STM32F030C8T6, TQFP48, 64KFlash, 8KRAM

我们最终的选择是 基站使用 STM32F103RET6, 标签使用 STM32F103CBT6。STM32L系列和STM32F0系列当时虽然列入候选,但是有采购困难/价格高等原因没有选择。
STM32每块芯片都有唯一ID,我们根据这个ID分配一个MAC地址和对应的EUI64 ID。这一步在设备出厂前进行。这样,我们就可以保证每一个出厂的基站和标签都有唯一的MAC地址和EUI64 ID。

相关推荐
Rjdeng2 个月前
【AI大模型】赋能儿童安全:楼层与室内定位实践与未来发展
人工智能·安全·ai·室内定位·楼层
Ankie Wan4 个月前
UWB论文:Introduction to Impulse Radio UWB Seamless Access Systems(2):脉冲;超宽带;测距;定位
uwb·测距·物理层安全·到达时间·干扰·802.15.4z
源码技术栈7 个月前
【Java】UWB高精度工业定位系统项目源代码
java·人工智能·源码·高精度·定位系统·uwb·超宽带
BD8NCF8 个月前
如何从零开始实现TDOA技术的 UWB 精确定位系统(5)
uwb·室内定位·tdoa·rtls·超宽带
YRr YRr8 个月前
DWM1000 中断与STM32外部中断
stm32·单片机·嵌入式硬件·uwb·dwm1000
BD8NCF8 个月前
如何从零开始实现TDOA技术的 UWB 精确定位系统(4)
uwb·室内定位·tdoa·rtls·超宽带
简简单单做算法8 个月前
基于WIFI指纹的室内定位算法matlab仿真
算法·matlab·室内定位·wifi指纹
BD8NCF8 个月前
如何从零开始实现TDOA技术的 UWB 精确定位系统(3)
uwb·室内定位·tdoa·rtls·超宽带
BD8NCF9 个月前
如何从零开始实现TDOA技术的 UWB 精确定位系统(2)
uwb·室内定位·tdoa·rtls·超宽带