藍牙rssi距離計算公式及代碼
藍牙室內定位技術藍牙是一種短距離、低功耗的無線傳輸技術,基于它的室內定位技術是基于接收信號強度指示測距的。通過在室內安裝適當數量的藍牙局域網接入點,再把基礎網絡的鏈接模式配置成基于多用戶、主設備為藍牙局域網接入點,就可以計算出定位節點的位置坐標。目前,藍牙定位技術受到藍牙信號傳播距離短的制約主要應用于小范圍定位。
由于藍牙室內定位系統具有設備體積小、易于集成在其它系統中等優點,因此比較容易推廣普及。而且,當采用該技術進行室內小范圍定位時,藍牙信號傳輸不受視距的影響,并且設備很容易就能夠被系統發現。其缺點為藍牙設備的成本比較大,在復雜的空間環境中,藍牙定位系統受噪聲信號干擾大,且穩定性較差。
藍牙rssi距離計算公式
利用CoreLocation.framework很容易掃描獲得周邊藍牙設備,蘋果開源代碼AirLocate有具體實現
所獲得的iBeacon在CoreLocation里以CLBeacon表示,其中有RSSI值(接收信號強度),可以用來計算發射端和接收端間距離。
計算公式:
d = 10^((abs(RSSI) - A) / (10 * n))
其中:
d - 計算所得距離
RSSI - 接收信號強度(負值)
A - 發射端和接收端相隔1米時的信號強度
n - 環境衰減因子
計算公式的代碼實現
[objc] view plain copy- (float)calcDistByRSSI:(int)rssi
{
int iRssi = abs(rssi);
float power = (iRssi-59)/(10*2.0);
return pow(10, power);
}
傳入RSSI值,返回距離(單位:米)。其中,A參數賦了59,n賦了2.0。
由于所處環境不同,每臺發射源(藍牙設備)對應參數值都不一樣。按道理,公式里的每項參數都應該做實驗(校準)獲得。
當你不知道周圍藍牙設備準確位置時,只能給A和n賦經驗值(如本例)。
修改AirLocate的APLRangingViewController.m展現部分代碼,輸出計算距離
[objc] view plain copy- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @“Cell”;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
// Display the UUID, major, minor and accuracy for each beacon.
NSNumber *sectionKey = [self.beacons allKeys][indexPath.section];
CLBeacon *beacon = self.beacons[sectionKey][indexPath.row];
cell.textLabel.text = [beacon.proximityUUID UUIDString];
// NSLog(@“%@”, [beacon.proximityUUID UUIDString]);
// NSString *formatString = NSLocalizedString(@“Major: %@, Minor: %@, Acc: %.2fm, Rssi: %d, Dis: %.2f”, @“Format string for ranging table cells.”);
// cell.detailTextLabel.text = [NSString stringWithFormat:formatString, beacon.major, beacon.minor, beacon.accuracy, beacon.rssi, [self calcDistByRSSI:beacon.rssi]];
NSString *formatString = NSLocalizedString(@“Acc: %.2fm, Rssi: %d, Dis: %.2fm”, @“Format string for ranging table cells.”);
cell.detailTextLabel.text = [NSString stringWithFormat:formatString, beacon.accuracy, beacon.rssi, [self calcDistByRSSI:beacon.rssi]];
return cell;
}
掃描結果
展現了每臺藍牙設備的Acc(精度)、Rssi(信號強度)和Dis(距離)。
非常好我支持^.^
(4) 100%
不好我反對
(0) 0%
相關閱讀:
- [電子說] 國產藍牙芯片的發展趨勢值藍牙數傳ble芯片 2023-10-24
- [電子說] 藍牙芯片PHY6222應用電動牙刷徠芬的細節以及為什么選他和替代 2023-10-24
- [電子說] 拔掉你的硬盤,吵到我的藍牙了! 2023-10-24
- [RF/無線] 什么是 “星閃”?星閃技術架構和特點分析 2023-10-23
- [電子說] AirPods Pro 2推送新固件,蘋果Find My功能受到好評 2023-10-23
- [電子說] 藍牙選型指南第二部-面向建筑和工廠自動化、智能農業與醫療保健跟蹤設備 2023-10-23
- [電子說] 華普微推出首款Matter模塊,助力智能家居互聯互通 2023-10-23
- [電子說] 英飛凌收購3db Access以追求更廣泛的UWB潛力 2023-10-23
( 發表人:鄧家樂 )