前言:上篇博客是对UWB理论方面的基本介绍,掌握基本理论之后肯定还需要去做工程实验来测试,所以这篇开始从最普及的UWB芯片DWM1000的资料展开对UWB工程实现的介绍。其实基本UWB理论知识在论文中都是很容易找到,但是具体的工程实现细节大多数论文都未详细展开,故我把网上找到的相关资料整合介绍下。

 一、DWM1000模组介绍

最开始有一个问题测时间差的问题一直困扰着我,就是测距是基于d=c*t,d为距离,c为光速,t为时间差,一般我们的测距应用范围d都在几十米以内,而c光速值约为3*10的8次方,那么t的值是纳秒级别的,时钟由晶振产生那么则需要Ghz级别的时钟,这对于我经常用到MCU都是在几十M时钟是不可想象的,所以我当时一直找资料想是否需要加额外的倍频器。后面了解到DW1000这款芯片后,知道这些UWB芯片本身都是可以做到的。

首先,DWM1000是Deca公司的一款用于UWB通信定位的模组,集成了DW1000芯片的基本外围电路,两者关系如下图1-1所示。关于上段提出的问题,解决方法是因为DW1000内部有一个非常非常高的时钟,高达64GHz左右,所以才可以做到厘米级的定位

图1-1

之后,DWM1000模组和MCU的配合开发也非常简单,两者之间采用SPI通信,MCU通过几个控制脚和SPI通信的四个IO脚便完成了基本UWB定位模块,具体如图1-2所示。DWM1000的基本资料其实在官网都可以免费下载如图1-3(包括其官方提高stm32和dwm1000的例程),只是官网https://www.decawave.com/product/dwm1000-module/需要翻墙,我后续会免费上传部分资料到CSDN上让大家参考。

图1-2

图1-3

 二、DWM1000模组测距方法

          上篇博客已经基本介绍了基本定位方法包括TOA,TDOA,下面再介绍下两种测距方法,两者概念不要搞混,定位的前提是得到基站与移动站的测距值或者是差值。

2.1.Single-sided Two-way Ranging (SS)

首先是单次双程测距法,具体流程是,设备A首先向设备B发出一个数据包,并记录下发包时刻Ta1,设备B收到数据包后,记下收包时刻Tb1。之后设备B等待Treply时刻,在Tb2(Tb2=Tb1+Treply)时刻,向设备A发送一个数据包,设备A收到数据包后记下时刻值Ta2。然后可以算出电磁波在空中的飞行时间Tprop,飞行时间乘以光速即为两个设备间的距离。具体如图2-1所示。

Tround= Ta2-Ta1               //总时间差

Treply=Tb2-Tb1                 //基站处理时间差

Tprop=(Tround-Treply)/2      //最终得到的标签与基站的UWB通信时间差,距离值即为TOF*c光速

因为设备A和设备B使用各自独立的时钟源,时钟都会有一定的偏差,假设设备A和设备B时钟的实际频率是预期频率的eA和eB倍,那么因为时钟偏差引入的误差error,设备A和B的时钟偏差都会对Tprop值造成影响,并且直接影响我们的测量精度,因为光速是30cm/ns,所以很小的时钟偏差也会对测量结果造成很大影响,而且这种影响是SS测距方式无法避免的。也因此SS测距很少被采用,大部分情况下我们都使用下一种,DS测距的方式。

图2-1

2.2Double-sidedTwo-way Ranging(DS)

官网例程代码用的就是DS,刚开始我也很费解因为看的论文基本用的都是SS也没提到过DS下面关于DS的介绍较为复杂,不了解可以再看过官网例程代码后再来看下面的原理公式推导。

DS测距是在SS测距的基础上再增加一次通讯,两次通讯的时间可以互相弥补因为时钟偏移引入的误差。假设设备A和设备B的时钟精度是20ppm(很差)1ppm为百万分之一,那么Ka和Kb分别是0.99998或者1.00002,ka和kb分别是设备A、B时钟的实际频率和预期频率的比值。设备A、B相距100m,电磁波的飞行时间是333ns。则因为时钟引入的误差为20*333*10-9秒,导致测距误差为2.2mm,可以忽略不计了。因此双边测距是最常采用的测距方式。下面我将介绍官网的双边测距的代码实现。

完成一次DS测距需要6个步骤,总流程如2-2所示。

1.设备A发送POLL包。并记下发送时间T1。并在一段时间后打开RX。

2.设备B要提前打开接收,然后收到POLL包,记录时间T2.

3.设备B在T3(T3=T2+Treply1)时刻发送Response包,发送完之后打开RX.

4.设备A收到Response包,记录时刻T4。

5.设备A在T5(T5=T4+Treply2)发送Final包。

6.设备B收到Final包,记录时间T6。

公式推导:

Tround1 = Treply1 + 2Tprop;

Tround2 = Treply2 + 2Tprop;

Tround1*Tround2 - Treply1*Treply2 =4Tprop² + 2Tprop*Treply1+2Tprop*Treply2;

Tround1 +Tround2 + Treply1 + Treply2 = 4Tprop + 2Treply1 + 2Treply2;

所以Trop等于上图的公式。

下面是具体的时间计算:

Tround1 = T4 - T1

Tround2 = T6 - T3

Treply1 = T3 - T2

Treply2 = T5 - T4

Tprop为电磁波飞行时间,乘以光速为测距距离。

图2-2

这个是SS与DS介绍的原文地址,要配合官网代码分析https://msd.misuland.com/pd/3545776840385762452

UWB定位记录二(DWM1000模组介绍)相关推荐

  1. 【安信可NB-IoT模组EC系列应用笔记⑤】安信可微信公众号北斗定位显示EC-01F+GP-01模组

    文章目录 前言 一.硬件组成与接线 1.硬件准备 2. 接线 二.固件准备及烧录 1.固件准备 2.固件烧录 三.定位信息获取及显示 四.AT指令更换MQTT服务器 1.AT 指令说明 2. 使用方法 ...

  2. 第一章 零差云控关节模组介绍

    零差云控关节模组 第一章 零差云控关节模组介绍 第二章 电机拆解 第三章 IGH及preempt-rt的安装 第四章 命令行读取电机的信息 第五章 机械臂的组装及控制 文章目录 零差云控关节模组 @[ ...

  3. 1.拜尔阵列—1.1手机摄像模组介绍

     摄像模组介绍 摄像头CAMERA作为一种视频输入设备,广泛应用于视频会议.监控.手机消费品等. CCM有三种不同定义: 1)紧凑摄像模组(Compact Camera Module ): 2)CMO ...

  4. 自动驾驶之眼-摄像头模组介绍

    摄像头对于ADAS的重要性不言而喻,最近在进行域控制器摄像头模组的接口设计,发现网上的资料和描述口径不一,关于RAW Data的传输也各有说法,本着共产主义精神,我融会贯通了一下数据传输和接口定义,为 ...

  5. TI CC2640R2F-Q1车规级蓝牙WIFI模组介绍

    汽车电子产品的价格普遍比较消费类都较贵,通常有工规和车规之分,今天来聊聊车规级芯片贵在哪里. 一.车规的验证标准 AEC-Q100 针对有源(Active Device)元件的要求 AEC-Q200 ...

  6. 涂鸦 NB-IoT NM1 模组介绍

    涂鸦 NB-IoT NM1 模组 上一篇给大家介绍了一些NB IoT技术的相关知识,有些同学可能就想问:那我怎么才能通过NB IoT网络进行数据交互呢? 这里,我给大家介绍一款NB模组--NM1.它是 ...

  7. DJYOS模组系列之一:BK7251 WIFI模组介绍

    目录 1.管脚排序及定义: 1.1管脚排序: 1.2模块pin脚功能描述 2. Characteristics特性 2.1 Absolute maximun rating(最大绝对额定值) 2.2 E ...

  8. 我的世界古代战争模组介绍java版_Minecraft1.6.4古代战争MOD整合版|我的世界1.6.4古代战争整合包游戏下载_红软单机游戏...

    <我的世界1.6.4古代战争整合包>属于3D的第一人称和第三人称沙盒游戏,所呈现的世界并不是华丽的画面与特效,而是注重在游戏性上面.玩家在游戏中做着建设,破坏等等许多事,透过像乐高一样的积 ...

  9. 摄像头模组介绍和技术指标

    1 手机摄像头概述 1.1 手机摄像头概述 手机的数码相机功能指的是手机是否可以通过内置或是外接的数码相机进行拍摄静态图片或短片拍摄,作为手机的一项新的附加功能,手机的数码相机功能得到了迅速的发展. ...

  10. 我的世界古代战争模组介绍java版_我的世界古代战争2mod教程零基础到专属军队...

    小编为大家带来了<我的世界>古代战争2mod教程零基础到专属军队,古代战争是对Minecraaft的一种修正,他对Minecraft做出了多种的改变:新的方块,新的实体,新的世界生成模板, ...

最新文章

  1. Hypercolumns笔记
  2. CAS增加免登陆(Remember Me)功能
  3. unity UV 动画
  4. swift -自定义返回图片,替换系统图片backItem
  5. C/C++基本数据类型所占字节数
  6. 基于element-ui,vue的html随机点名器
  7. PHP网站开启gzip压缩,PHP网站程序中开启Gzip压缩的两种方法
  8. 一个很好用的,免费的UML在线画图网站
  9. 程序员数学(23)–图形的旋转与中心对称
  10. C++智能指针与类型转换
  11. C# 中的委托和事件(详解)
  12. 各类编程语言教程合集
  13. 大数据、互联网、机器人成大热门
  14. 为什么全球最好的大学大半在美国?看看美国的孩子是怎么念书的 ~~
  15. W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x419b4c50)
  16. 多多自走棋改动_多多自走棋:几个隐藏更新,体验服公告真没提,有一项熟悉又隐蔽...
  17. 解决小程序自定义底部菜单切换闪动
  18. 环境艺术设计是计算机,【艺术设计论文】环境艺术设计计算机辅助设计研究(共5097字)...
  19. Thinking in Java(Fourth Edition)2.11
  20. Eclipse将项目部署tomcat的webapps目录

热门文章

  1. 90后程序员程广坤教你零基础自学编程,用这6种方法就够了!
  2. 年龄、性别2022 cnn算法笔记
  3. 应用wms仓库管理系统,提高第三方物流企业竞争力
  4. PHP常用函数大全500+
  5. GO WBE学习笔记
  6. 人工智能导论测试题——第3章自动推理与专家系统
  7. Tomcat 日志配置与优化
  8. Linux 抓包还不会?这篇文章赶紧收藏
  9. XSS fuzzing 工具
  10. 计算机打字正确姿势,电脑打字的7个技巧