停车场寻车难?蓝牙5.1提供的新思路

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45412507/article/details/96241174

生活中我们常常有这样的体验,开车到了一个商场停车场停车之后,由于在忙其他的事情,常常导致“短暂性失忆”而忘记了车停在了哪里。对于不少缺乏“路感”的朋友,停车场对于他们来说是一个大迷宫,找车浪费个半小时是家常便饭的事情。

640?wx_fmt=jpeg

 

传统的通过车钥匙控制鸣笛的方式可以在较短距离寻车,车钥匙通过RFID的方式发送指令到车,信号较好的感应区间是在10多米左右(空旷场地可以稍远)。

进入智能网联汽车时代,为了给车主提供更好的便利性,避免人肉记住停车位的麻烦,越来越多的寻车方式被挖掘——懒惰是科技进步的驱动力。

一方面联网后的汽车可以将自己的GPS位置信息上传至云端,以便用户在手机APP上查看自己的车辆位置。另一方面,基于远程控制的鸣笛闪灯功能解除了车钥匙鸣笛在距离方面的局限性。

640?wx_fmt=png

 

然而,基于卫星定位的GPS只适合车辆在室外的场景,到了封闭的室内停车场只能提供车辆的大致位置,误差可达数百米。而对于一些地下停车场,由于没有蜂窝网络信号的覆盖,远程鸣笛控制功能则可能处于失效状态。

现在也有部分大型的商场停车场安装上了基于摄像头的车辆位置识别方案。比如北京朝阳大悦城,微信关注商场公众号并绑定车牌信息,车辆在停车场停车后,停车场的摄像头识别到车牌信息便会给你的微信推送一条停车位置的信息,便于你稍后寻车。

640?wx_fmt=png

 

在不依赖于停车场建设的通用寻车方案方面,部分智能行车记录仪产品提供了基于摄像头的远程实时查看功能方便寻车,然而这同样也较大依赖于蜂窝网络的信号覆盖。

蓝牙5标准的发布以及今年一月份新发布的蓝牙5.1标准,其中长距离模式(Long Range Mode)和测向功能(Direction Finding)等几个新特性,为寻车问题提供了一种新的解决思路。

640?wx_fmt=png

 

蓝牙5技术在空旷场地的理论最大传播距离可达1公里左右,相对于4.0的版本有较大的提升。在蓝牙5之前,提高蓝牙传播距离的唯一办法是通过提高无线电波的传输电流,这对产品的电消会有较大的影响并不适用于有低功耗要求的产品。

蓝牙5相对之前的版本在低功耗模式下除了提供了2Mbps的高速模式,还引入了125kbps和500kbps的长距离模式,通过降低传输速率来提高传输距离,其中500kbps相对125kbps会有更高的电流消耗。

提高距离而不增加电耗的方式除了降低传输速率,另一个trick是使用误差校正。蓝牙5使用了一种FEC(Forward Error Correction)编码来做传输误差校正,使用冗余传输多余的数据位来帮助纠正损坏的数据位。举个例子,一种简单的FEC编码可以定义为当你要发送一个二进制数据"0"时,在链路上实际发送4倍的数据位比如“0000”,显然增加了位数会降低传输速率,但它提供了一种纠错的能力,当传输出现一个bit的数据损坏,对端收到“0010”时仍然可以大概率确定它传输的数据是“0”。在蓝牙5中实际使用的FEC编码为Hamming编码,如下图。

640?wx_fmt=jpeg

 

Nordic半导体使用nRF52840开发板对蓝牙5长距离的测试数据显示,对于使用1Mbps的PHY,无连接状态下(BLE广播)信号强度减小为0的距离为654.92米,对于使用长距离PHY@125Kbps,无连接模式下信号强度减小为0的距离为1300米。建立BLE连接后的测试结果相近。Silicon Labs的BGM13P模组规格标明配合长距离PHY使用最大可达600米的范围。

Gary Sims在应用层面使用同样的开发板在现实生活中做了个主观感受的测试,在如下图超过100米的一个场地上两端的蓝牙5开发板仍能成功建立连接进行数据传输。测试同时表明金属性质的建筑障碍物的对蓝牙的无线传输速率影响非常大。

640?wx_fmt=jpeg

 

蓝牙5.1标准中一个重要的特性是引入了AoA(Angle of Arrival,到达角)和AoD(Angle of Departure,出发角)测向方法。AoA是蓝牙接收器Rx测量蓝牙发送器Tx相对自己的角度,而AoD则是蓝牙发送器Tx测量自己相对于蓝牙接收器Rx的角度。先来看看效果,Silicon Labs的一个demo视频展示了AoA可以实现较高精度的方向测量。

 

 

AoA方法的基本原理在于蓝牙芯片开放蓝牙射频端的载波振幅和相位值收发(I/Q值),通过天线阵列来计算到达角度,事实上在AoA进入蓝牙5.1标准前已有芯片厂商研发产品支持该定位方法。如下图(来源:TI CC2640R2),Pt为发射器,接收器的两个天线同一时间接收到的信号相位不同(天线之间距离小于波长)。

 

640?wx_fmt=png

 

假设相位差为Φ,天线之间距离为d,则按下图的几何关系可以换算出到达角θ=arcsin(λΦ/2πd),其中λ为波长。

640?wx_fmt=png

 

通过AoA方法,蓝牙接收器可以测算出发送器的方位信息,使用两个接收器同时进行AoA测向则可以测算出发送器的准确位置(两条射线交点),如下图(来源:TI CC2640R2)。实际应用场景中,由于噪音,障碍物反射及信号屏蔽的存在,AoA定位会遇到更多的挑战,通过增加天线来多点测算减少误差是一种常用的方法。另外使用二维的矩阵天线阵列或圆形的天线阵列可以测量出包含相对高度信息的三维空间角度。

 

640?wx_fmt=png

 

结合蓝牙5的长距离模式和AoA定位,车联网手机应用可以为车主提供便捷的室内寻车和导航功能,提高用车体验。

640?wx_fmt=jpeg

End

 

更多干货

 

 

 

关注我们

 

640?wx_fmt=jpeg

公众号:曲奇泡芙

展开阅读全文

嵌入式系统的新思路

09-14

以脚本式操作语言为API的交互式的嵌入式系统内核rnrn简介rnrn这种新型嵌入式系统内核可以理解为一个封装好的只能执行专门脚本语言(操作语言)的机器(脚本机器,Script Machine),类似于java虚拟机。但java虚拟机执行的是字节代码,而且是解释执行,语言结构也比较复杂。本脚本机器执行的是脚本语言,语法结构简单易懂易维护,而且是编译成二进制代码执行,函数经过一次编译后就以二进制形式嵌入到系统中,所以可以通过这种形式扩展系统功能。系统调用和用户增加的功能函数都组织到一个树形的名字空间中便于记忆。rnrnrn一、结构形式rnrn rn操作语言的语法类似于高级语言如 C、BASIC,应用程序用操作语言编写,不需要在系统外进行编译和链接,而是由系统内核直接执行,这一点上类似于脚本语言。rn系统内核可以单独运行,运行过程中可以交互式接收用操作语言写成的代码并执行,用操作语言写成的用户函数可以驻留在系统中以扩展系统功能,供自己或其它应用调用。rn一些外围的服务可以用操作语言编写,在系统启动时首先执行。只有特别基本和需要特别优化的系统函数调用才需要放在内核中。rn操作语言编写的代码并非解释执行,而是通过内部编译成机器码后运行。rn底层的系统调用和服务都被安排在一个树形的名字空间中,非常容易记忆和识别。rnrn二、优点rnrn1、 快速开发应用程序。rn脚本式语言的语法简单,而且因为省去了在系统外进行编译和链接的过程,应用程序的代码可以用交互式的方式直接放到系统中测试、运行,可以大大提高软件开发速度。rnrn2、 底层封装后代码更健壮。rn以类似简单脚本语言的高级语言开发的应用程序简洁易读,容易维护。以操作语言编写的代码受到语言本身的限制,比二进制代码更安全,不会轻易破坏系统。rnrn3、 动态添加和修改系统功能。rn系统运行过程中可以动态接受操作语言写成的函数并扩展到系统调用的树形名字空间中。rnrn4、 分层次开发。rn开发内核的人和开发应用的人可以完全分工。rnrn5、 底层封装后便于移植到不同的硬件。rn不同的硬件只要实现了相同的操作语言,则应用程序可以完全不用改。rnrn三、缺点rnrn1、 占用内存。脚本内部编译器,系统名字空间,函数定义都要占用内存,本人开发的测试系统其中的这部分占用了十几K,如果实现更多的数据类型和运算符,应该在数十K左右。对于现在的嵌入式应用来说,不是很多。rn2、 性能降低。性能降低分为两个部分:花在脚本内部编译的时间和运行时间的变慢。加载到系统中的函数是一次性编译为机器码,编译器使用汇编语言直接写成,运行速度是非常快的,编译时间一般可以承受,如果系统需要频繁启动,建议采用内存映象方式加载。因为脚本是编译成机器码后运行的,虽然编译器优化功能不强,但是跟直接用汇编写成的代码的运行速度应该还是在一个数量级上的,这一点可以通过对编译后的代码反编译后察看。rnrn如果系统的设计能够大幅加快,同时带来很大的系统灵活性,我觉得上述缺点是值得牺牲的。而且对于一个成品系统,完全可以在开发设计完成后,对于需要进行性能优化的有关代码用汇编重写,直接嵌入内核作为系统调用。rnrnrn四、总结rnrn脚本语言在WEB服务器和浏览器中被大量应用就是因为其无以伦比的灵活性和快速开发能力。将脚本语言应用在嵌入式系统的开发设计上也许一样能大放光彩。rnrn五、试验系统说明rnrn试验系统的硬件为普通PC,采用了32位FLAT内存模型,试验系统做成了一个可启动的软盘映象,系统完全在内存中运行,只实现了一个键盘和显示器组成的CONSOLE,没有实现软硬盘的读写。rn试验系统实现了内存管理,任务管理,中断处理,消息队列等操作系统内核。用户在CONSOLE中输入一段程序,并以单行的”/”结束输入时,系统会编译这段代码,并启动一个新的任务(进程)来执行这段代码。rn为方便调试,系统在显示器右上角显示系统预定义的测试变量dx和dy得值,以便察看进程执行的结果,也可以用#console.write.int系统调用输出。rn试验系统的下载,测试说明,测试代码,有关操作语言的语法简略说明请见网站:www.scriptmachine.cn 。rn 论坛

没有更多推荐了,返回首页