您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>無線通信>

藍牙rssi距離計算公式及代碼

2017年11月20日 16:10 網(wǎng)絡(luò)整理 作者: 用戶評論(0
關(guān)鍵字:藍牙(164262)RSSI(27271)

  藍牙室內(nèi)定位技術(shù)藍牙是一種短距離、低功耗的無線傳輸技術(shù),基于它的室內(nèi)定位技術(shù)是基于接收信號強度指示測距的。通過在室內(nèi)安裝適當數(shù)量的藍牙局域網(wǎng)接入點,再把基礎(chǔ)網(wǎng)絡(luò)的鏈接模式配置成基于多用戶、主設(shè)備為藍牙局域網(wǎng)接入點,就可以計算出定位節(jié)點的位置坐標。目前,藍牙定位技術(shù)受到藍牙信號傳播距離短的制約主要應(yīng)用于小范圍定位。

  由于藍牙室內(nèi)定位系統(tǒng)具有設(shè)備體積小、易于集成在其它系統(tǒng)中等優(yōu)點,因此比較容易推廣普及。而且,當采用該技術(shù)進行室內(nèi)小范圍定位時,藍牙信號傳輸不受視距的影響,并且設(shè)備很容易就能夠被系統(tǒng)發(fā)現(xiàn)。其缺點為藍牙設(shè)備的成本比較大,在復(fù)雜的空間環(huán)境中,藍牙定位系統(tǒng)受噪聲信號干擾大,且穩(wěn)定性較差。

  藍牙rssi距離計算公式

  利用CoreLocation.framework很容易掃描獲得周邊藍牙設(shè)備,蘋果開源代碼AirLocate有具體實現(xiàn)

  所獲得的iBeacon在CoreLocation里以CLBeacon表示,其中有RSSI值(接收信號強度),可以用來計算發(fā)射端和接收端間距離。

  計算公式:

  d = 10^((abs(RSSI) - A) / (10 * n))

  其中:

  d - 計算所得距離

  RSSI - 接收信號強度(負值)

  A - 發(fā)射端和接收端相隔1米時的信號強度

  n - 環(huán)境衰減因子

  計算公式的代碼實現(xiàn)

 ?。踥bjc] view plain copy- (float)calcDistByRSSI:(int)rssi

  {

  int iRssi = abs(rssi);

  float power = (iRssi-59)/(10*2.0);

  return pow(10, power);

  }

  傳入RSSI值,返回距離(單位:米)。其中,A參數(shù)賦了59,n賦了2.0。

  由于所處環(huán)境不同,每臺發(fā)射源(藍牙設(shè)備)對應(yīng)參數(shù)值都不一樣。按道理,公式里的每項參數(shù)都應(yīng)該做實驗(校準)獲得。

  當你不知道周圍藍牙設(shè)備準確位置時,只能給A和n賦經(jīng)驗值(如本例)。

  修改AirLocate的APLRangingViewController.m展現(xiàn)部分代碼,輸出計算距離

 ?。踥bjc] 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;

  }

  掃描結(jié)果

  藍牙rssi距離計算公式及代碼

  展現(xiàn)了每臺藍牙設(shè)備的Acc(精度)、Rssi(信號強度)和Dis(距離)。

非常好我支持^.^

(4) 100%

不好我反對

(0) 0%

( 發(fā)表人:鄧家樂 )

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?