金桔蓝牙定位胸牌是基于lora与蓝牙技术的复合应用,是针对区域大、定位精度不高(米级)、部署施工难度大的室内外融合定位的产品。金桔蓝牙定位胸牌集主动式定位,被动式定位技术于一身,通过设备扫描提前安装好的iBeacon基站或网关接收到胸牌发出的信息来确定人员位置信息,然后通过定位算法服务器、地图服务器、应用服务器的运算后在展示平台实时了解物品的位置。
因为金桔定位胸牌可以同时进行主动式定位和被动式定位,所以金桔定位胸牌即可收集周边设备的状态也可以广播自身的终端状态,所以通过rssi信号状态可以收集周边定位胸牌距离,当当前时间统计时间内其他的胸牌信号强度大于阈值并停留一定时间的时候,胸牌将该数据存储到自身缓存中,并传送给网关,最终将数据上次到服务器上。
系统架构
工作原理
Step1:在固定的位置(根据定位精度的要求,6-10m的间隔部署)放置iBeacon位标(以下简称位标),位标以一定的周期广播一个数据包,数据包包含(uuid、major、minor等信息);
Step2:金桔蓝牙胸牌在位标信号覆盖的区域内,通过终端内置的相关程序接收到位标的广播数据(MAC地址、RSSI等)和周边其他设备的RSSI和停留时间数据;
Step3:金桔蓝牙胸牌将数据上传至网关并通过网关上传至服务器,即可通过内置的地图及算法直接在智能终端上显示位置及相关位置服务(如导航等),又可基于通过网络回传至服务器,在其他设备上展示。
金桔定位胸牌上次数据格式
{
"FreOrChan":"481000000",
"Gateway":"10000015",
"NodeId":"997A4EDC",
"Rssi":"121.0000",
"Snr":"10.5000",
"SystemId":"10990143",
"Type":"location_beacon",
"battery":"3.754",
"other_card":[
{
"nodeId":"10000030",
"rssi":"-67"
},
{
"nodeId":"10000034",
"rssi":"-62"
},
{
"nodeId":"10000051",
"rssi":"-64"
}
],
"beacon_data":[
{
"major":"58134",
"majorHex":"E316",
"minor":"5495",
"minorHex":"1577",
"rssi":"-70"
},
{
"major":"52028",
"majorHex":"CB3C",
"minor":"38412",
"minorHex":"960C",
"rssi":"-62"
},
{
"major":"18605",
"majorHex":"48AD",
"minor":"27148",
"minorHex":"6A0C",
"rssi":"-42"
},
{
"major":"16378",
"majorHex":"3FFA",
"minor":"5227",
"minorHex":"146B",
"rssi":"-71"
},
{
"major":"1",
"majorHex":"0001",
"minor":"4572",
"minorHex":"11DC",
"rssi":"-44"
},
{
"major":"1",
"majorHex":"0001",
"minor":"19282",
"minorHex":"4B52",
"rssi":"-55"
},
{
"major":"34935",
"majorHex":"8877",
"minor":"2576",
"minorHex":"0A10",
"rssi":"-37"
},
{
"major":"1",
"majorHex":"0001",
"minor":"12139",
"minorHex":"2F6B",
"rssi":"-45"
}
],
"node_station_data":[
{
"rssi":"-58",
"stationId":"10000015"
}
]
}
字段 | 说明 |
---|---|
FreOrChan | 基站接收到Lora信号的频率。 |
Gateway | 接收到胸牌lora信号的lora基站的ID。 |
Rssi | 基站接收到Lora信号的强度。 |
Snr | 基站接收到Lora信号的信噪比。 |
NodeId | 胸牌的Id。 |
Type | 消息类型,此类型是location_beacon。 |
battery | 电池电压值 |
other_card | 此数据类型里面是一个数组,是该定位胸牌搜索到当前周边的其他胸牌数据,数组里每一个对象又是一个json对象对应每一个beacon的数据。nodeId:是其他胸牌的ID。rssi:其他胸牌的信号强度,用于计算位置。 |
Beacon_data | 此数据类型里面是一个数组,是该定位胸牌搜索到当前周边的beacon数据,数组里每一个对象又是一个json对象对应每一个beacon的数据。major:beacon的major十进制的值。majorHex:beacon的major十六进制的值。minor:beacon的minor十进制的值。minorHex:beacon的minor十进制的值。rssi:胸牌搜索到beacon广播的信号强度 |
node_station_data | 此数据类型里面是一个数组,是该定位胸牌搜索到当前周边的基站数据,数组里每一个对象又是一个json对象对应每一个基站的数据。StationId:基站的ID。rssi:胸牌搜索到基站广播的信号强度。 |
蓝牙信号强度计算距离
这里只是理论参考数值,每种设备因为信号和天线匹配不同,应依照测试的结果来匹配各种参数。
public class RssiCalc {
private float A_=50;
private float n_=2.5;
public static float getDistance(int rssi){
int iRssi = Math.abs(rssi);
float power = (iRssi-A_Value)/(10*n_Value);
return Math.pow(10,power);
}
}