android 蓝牙防丢,Android 蓝牙防丢实现(一)

今天看见朋友分享的一个项目:TrackR bravo

一个声称是同类产品中最轻薄小巧的蓝牙物品防丢器,金属材质的外壳,厚度为3.5mm,直径34mm,仅有一元硬币大小。可以系在钥匙串、钱包、手机、平板电脑等容易丢失的物品上。你甚至可以将它挂在狗狗的脖子上或者自行车上,当你找不到时,可以通过手机App定位物品的具体位置,还能显示物件与你相隔的距离。很适合经常丢失东西的健忘人士使用,还是一个不错的防盗器。

80d6748d597424f29a4e179b0afb73e7.png

23153a23b3e554d1d296bbe5243de36e.png

摘要 蓝牙防丢,原理比较简单,实现不是那么简单。在预定的间隔时间内不断的扫描周围的蓝牙设备,读取对应设备的信号强度值存储下来SSID【X1,X2...,Xn-1,Xn】统计分析,去除脏值,然后求加权算术平均数。根据距离和信号强度值的对应关系判断设备之间的距离。

一,概念说明

求平均一般有两种:简单算术平均数arithematic mean和加权平均数weighted mean。简单算术平均计算简单没有考虑到波动和强度指标;一般的在工程领域使用加权平均比较多,加权平均数的公式定义如下:

82d83ec40bf1caf60140808b24747fce.png

其中: ----代表算术平均数,x 代表各单位标志值(变量值),f 代表各组单位数(项数)。

运用条件:统计资料分组时我们不难得出如下结论:平均数水平高低受两个因素的影响(当然数据统计分析都是要在比较大规模的数据基础上进行,否则意义不大):

(1)受各组变量值( x )大小的影响

(2)受各组权数(f)大小的影响。(绝对权数表现为次数、频数,相对权数表现为频率)。

二,计算步骤

(1)采集数据,采集固定间隔时间内的设备的信号强度值数值SSID【X1,X2...,Xn-1,Xn】;

(2)去除脏值,去除数组中的脏值;

(3)求出信号强度值数值SSID【X1,X2...,Xn-1,Xn】对应的权数分布【F1,F2, ... Fn-1,Fn】

( 4 ) 处理异常情况(比如某个设备采集到的SSID数组长度太少,距离越界后反馈确认机制)

三,步骤详解

去除脏值Digest,采集固定间隔时间内的设备的信号强度值数值SSID【X1,X2...,Xn-1,Xn】后难免会有一些脏值扰乱最终结果。

首先要确定脏值的判断标准,在这里脏值的判断标准是:如果SSID数组中的一个值偏离SSID数组的简单平均数arithematic mean

大于DeviateFlag(这个标记可以根据程序的实际情况调整,在这里取值20%),那么我们就判断这个值是脏值。

求权数分布,不同的SSID数值对应的权数在这里和时间有关,在这里时间越后,权重会越高;假设权值分布为F【F1,F2, ... ,Fn-1,Fn】。那么F1+F2+ ... +Fn-1+Fn=1=100/100;这里要定义一个值权重补偿因子WCF(Weight Compensation Flag)=50/100,简写WCF(补偿值有点大哦,感觉这个数组也应和SSID的数组长度N有关,后期优化);那么权重补偿递减因子WCD(Decreasing)就是:WCD=WCF/N/2;(N>2  有效)

那么Fn的分布就是:

【1-D1/N,1-D2/n, ... 1-D(n/2)/n, ... , 1+D2/n, 1+D1/N】。-----------------------------------------------------------------------------------------------------

|权重补偿因子:WCF

那么首先要求Dn【D1,D2,... D(n/2), ... , .....】的分布;--|

| 权重补偿递减因子:WCD

if(WCF-WCF*2*i/N>0&&i

处理Dn的长度和Fn的长度(其实是SSID的长度),求出Fn的分布后;

那么weighted mean=SSID对应的分布*Fn对应分布的累加和

附录,参考文档

http://wiki.mbalib.com/wiki/平均数

http://www.stat.nuk.edu.tw/prost/content2/statics_4.htm

http://wiki.mbalib.com/wiki/算术平均数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蓝牙4.0丢器概述: 该蓝牙4.0 丢器基于GB2540模块设计。GB254X 是一款采用美国德州仪器 TI 蓝牙 4.0 CC2540 or CC2541作为核心处理器的高性能、超低功耗(Bluetooth Low Energy)射频收发系统模块,遵循低功耗蓝牙协议,适合单模式低功耗蓝牙应用。 具体功能是: 出围栏模式:当手机和丢器连接时,如果信号强度小于手机设定值或无信号,手机响,丢器响。 入围栏模式:当手机扫描到丢器时,如果信号强度大于手机设定值,手机响,丢器响。 来电提醒功能:当手机来电,丢器蜂鸣器响,这样冬天手机放包包里,就不会听不到啦。 电池使用的是:锂电池,可反复充电,可以1个月充一次电。 距离嘛:20米到30米到60米到70米都有可能,因为根据环境、手机信号等好多因素影响。 注意如下: 为了止设备寻找不到,排除多数丢器需要按按扭才能连接的方法,采用慢速持续广播的方式,这样,当你的东西不知道放什么地方的时候可以寻找,真正起到丢器的作用(如果东西找不到啦,还要按键连接个球啊,开源不是光 公布个源码 公布个PCB 公布个原理图,公布后,我会在这个帖子里说为啥这样设计,庖丁解牛的解析,讨论,分析,要开就彻底开,遮遮掩掩反倒误导大家 连接采用设备端在连接后主动发起绑定请求的方式,当请求30秒未响应,则主动断开连接。采用确定和取消的方式,有需要可以修改为密码方式,止别人连接你的丢器。 提示音支持自定义铃声,只需要把想要的音乐的乐谱拿到,然后把音调转换为频率,把节拍音符转化为时间长度,对应写入到BUZZER文件的铃声数组中,格式为一个频率跟一个时间长度,以0,0结束即可,满足对不同铃声的人的需求。工程已实现NOKIA的铃声。 蓝牙4.0 丢器电路截图: 蓝牙4.0 丢器电路PCB截图:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值