web-dev-qa-db-ja.com

iOSはAirpodsと同様のBluetooth信号強度をどのように検出できますか?

AirPodsとiPhoneは非常に敏感なレベルで通信できるようです。 AirPodsを物理的にデバイスの近く(1フィート離れたところ)に移動すると、iPhoneが反応します。

IPhoneは本当にこのような精度でBluetooth信号を検出できますか?現在Bluetoothを使用していますが、このレベルの信号感度に到達できないようです。

16
TIMEX

彼らはかつて、距離を知るためにいくつかの追加の対策を講じていました。コメントで hotpaw2 に気づくように


クイックアンサー-Swift 4.2

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if let power = advertisementData[CBAdvertisementDataTxPowerLevelKey] as? Double{
   print("Distance is ", pow(10, ((power - Double(truncating: RSSI))/20)))
   }
}

TL:DR;

RSSIに影響する要素

RSSIの測定値は安定性が低く、環境に大きく依存します

また、感知/送信無線の電力と感度の両方、および環境に関するもの(あなたは内部、外部にいますか?近くに多くの人がいますか?騒々しいワイヤレス環境かどうか、など)。

ただし、ビーコン信号は実際には電波であり、金属、壁、水などに吸収される可能性があります。一般に使用されている2.4 GHz帯域で無線信号を送信するため、ビーコンから受信される信号強度は、干渉。

距離を見つけるために最もよく使用される式の1つは

d = 10 ^((TxPower-RSSI)/ 20)

TxPowerは通常送信電力として知られています


BLE広告データからTxPowerを取得する方法

TxPower値はBLEアドバタイズメントデータで利用可能になります(ブロードキャスター(周辺機器)がそのTxパワーレベルを提供する場合にのみ利用可能)。

Appleドキュメントのように、CBAdvertisementDataTxの CBAdvertisementDataTxPowerLevelKey の値

生の広告データにアクセスするためのデリゲートメソッド

optional func centralManager(_ central: CBCentralManager, 
                 didDiscover peripheral: CBPeripheral, 
           advertisementData: [String : Any], 
                        rssi RSSI: NSNumber)

BlueCap APIを使用してもアクセスできます

従来のBluetoothよりもAirPlayの利点を知るには

https://www.cambridgeaudio.com/blog/airplay


RSSIと距離

下の画像によると Link

enter image description here

RSSIは、ビーコンを覆うとダウンします(たとえば、あなたとビーコンの間に人が入ってくるなど)。つまり、あなたはまだ同じ距離にいますが、RSSIは下がります。RSSIに基づいて距離の見積もりを行う場合、1インチも移動せずに距離が上がります。

上記の説明の多くは他のサイトからのものです。

私はそれがあなたの必要性を要約することを願っています!

28
Saranjith