蓝牙测距原理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝牙测距原理相关的知识,希望对你有一定的参考价值。
1. 定位的算法方法有非常多,现在主流的室内定位是基于RSSI(信号强度)来定位的。2. 利用RSSI,WIFI定位和Beacon定位的原理和工作方式基本相同。 都是利用接收到的多个已知位置的WIFI/Beacon基站,进行多点定位。
3. 苹果的iBeacon设计的目的根本不是用来精确定位或者多点定位,而是类似进场感知。 一个iBeacon能设置成刚好覆盖5米左右的半径范围,装了特定APP的手机,并且打开蓝牙情况下,进入该范围的时候能被感知到。
4. Beacon属于主动定位,由于上述的较为严苛的约束条件(需要安装特定APP,打开蓝牙的用户习惯远未养成)。并且商用效果还未经过任何验证。 WIFI定位不依赖这些,主要你的手机开着WIFI(无需连接),就能在很多场合被精确的定位到了,从这点看,WIFI更适合被动定位。
5. 如果说仅是室内定位技术的话,宣称能做的厂商国内就不会少于两百家了,这还是去年中的统计数据。 但是,目前市场上较大范围商用的还是WIFI定位为主,主要厂商如WIFIPIX,智慧图,百度等。 参考技术A 应该是可以的,但不会有太大的市场吧?现在测距的工具很多的.
第一,不管怎么说,蓝牙都是一种电磁波的,所以可以使用电磁波原理测距.但绝不会根据信号的强弱的,因为这个受影响较大,比如快没有电时有电足时绝对不同的.
第二,可以使用相位测距,但成本过高.
第一种的原理是,发射位置与接收位置的距离,可以中间有一个镜子进行反射的.根据发射时间与接收时间进行测距,当然,这种方法用不到电脑上的.且误差是+/-1M左右.按时间与传播的速度得出的.
第二种原理,可以让蓝牙同时发身不同波长的波,接收后可以得到相应的处理,因为是同时发射击,而不同波在接收后查看其查关的相位.然后进行一些复杂的计算,如果其两个波长又时相位重合,则这个距离一定是波长最小公倍数的整数倍.若是发送10个不同波长的波时,你想十个最小公倍数进行计算可能会达到多少呢?要是更多呢?这往往是激光测距仪的原理的,这样更精确.精度可以达到最短波长的(原理上).但距离是蓝牙的传输限制,只可能是200M以内,差有怕是20M都没有的!
在对iBeacons进行测距和监控之后,蓝牙设备无法连接,直到重置蓝牙
我已经编写了一个小型iBeacon演示应用程序,其中包含信标范围,然后在第一次找到信标后监视范围内的信标。在我运行此应用程序后(如果它仍然在后台),我发现设备无法建立新的蓝牙连接。例如,当我进入我的汽车时,我的汽车无限地尝试连接到手机而没有成功,直到我再次关闭蓝牙。这似乎是在离开iBeacons区域后保持蓝牙活动的问题,但我已经停止了在didExitRegion上的信标测距。当视图消失或应用关闭时,我甚至尝试停止测距信号。是否还有其他步骤可以在离开范围时正确关闭连接?
编辑:我只说OP中的范围,但我已经确保在应用程序变为非活动状态和退出区域时停止监视信标区域。问题依然存在
编辑2:如果我必须说出预期的特定行为,我希望能够在应用程序运行时对信标进行范围和监控,并且在后台运行时不会停止其他蓝牙连接。实际行为是它确实在这些情况下跟踪信标,但它不允许形成其他蓝牙连接。
用于初始化和开始监视信标的代码(在viewDidLoad中):
if (self.beaconManager == nil) {
self.beaconManager = [[ESTBeaconManager alloc] init];
self.beaconManager.delegate = self;
}
if (self.icyMarshmallowRegion == nil) {
self.icyMarshmallowRegion = [[ESTBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID major:[kIcyMarshmallowMajor integerValue] minor:[kIcyMarshmallowMinor integerValue] identifier:kIcyMarshmallowRegionID];
self.icyMarshmallowRegion.notifyOnEntry = YES;
self.icyMarshmallowRegion.notifyEntryStateOnDisplay = YES;
}
[self.beaconManager startMonitoringForRegion:self.icyMarshmallowRegion];
停止监控的代码(在didExitRegion中):
[self.beaconManager stopMonitoringForRegion:self.icyMarshmallowRegion];
答案
没有更多的步骤来“关闭蓝牙活动”,无论如何你的设备应该能够在监控iBeacon
地区时采取其他连接(我不确定测距因为它更像是一个'主动'任务,但我打赌它是同一件事情)
我在iBeacon
看到了许多与iOS7
相关的奇怪行为,其中一部分已经在iOS8
修复,希望一切都会很快好起来。我认为您不应该担心您描述的问题的代码,并等待iOS8
以上是关于蓝牙测距原理的主要内容,如果未能解决你的问题,请参考以下文章