ビーコンは近距離での無線通信を行います。Bluetoothで通信します。ビーコンはデータを発信する小さな端末です。発信したデータを受信機で受けて処理します。ややこしいので、ここでは発信機、受信機と書きます。
発信機(ビーコン)は一定間隔で全方位(360度)に電波を一斉送信します。それをアドバタイズといいます。一斉送信した電波を受信器で受信します。発信機と受信機の間の距離などの条件で受信強度(rssi)の数値が変わります。それを利用すれば、距離の推定ができるということになってます。
今回は、その受信強度の計算方法について整理します。iBeacon ハンドブックに「ビーコンまでの距離推定」について記載がありました。それを参考に書いてます。
電波を受信したときの強度(受信強度:RSSI)は、「ビーコンが発信する電波の強さ(発信強度:TxPower)」と「ビーコン発信機から受信機間の距離(distance)」から求めます。計算式であらわすと以下のようになります。
RSSI = TxPower - 10 * n * lg(distance)
上記の「lg」 は常用対数を示します。nは係数で。
- n = 2.0 : 障害物のない理想空間
- n < 2.0 : 電波が反射しながら伝搬する空間
- n > 2.0 : 障害物に吸収され減衰しながら伝搬する空間
というような意味です。この係数は環境で変わります。なので、必ず現場にビーコンと受信機を持っていきデータ収集して決めます。距離を固定しておいて、実測値と計算値を比較して現場にあった係数をもとめるわけです。
ビーコンの発信強度・受信強度の単位は「dbm(デシベルミリワット)」です。これは「1ミリワットの電力を単位としたときのデシベル」を意味します。デシベル(db)は、基準となる量「0」との相対比を常用対数で表したものです。用途に応じて設定変更して使います。
発信強度はビーコン側で設定します。
だいたい「4 ,0, -4 ,-8, -12, -16, -20, -30(dBm)」とかです。数字が大きいほど強くなります。強くなる=遠くまで電波を飛ばす・・感じですかね。概ね「0」でやることが多いようですけど、部屋の中にいる人と廊下を歩いている人を識別しないといけない・・みたいな要件の時、-8とか-16におとしてやったりしてました。こんなもんですかね。ではでは。