藍(lán)牙如何定位,簡(jiǎn)易藍(lán)牙定位系統(tǒng)的實(shí)現(xiàn)方法(藍(lán)牙定位)

藍(lán)牙 定位系統(tǒng) 簡(jiǎn)易 定位 方法| 2022-12-18 hwszkj

1.準(zhǔn)備設(shè)備

所需硬件設(shè)備:

(1)低功率藍(lán)牙定位器若干(如:10個(gè)),網(wǎng)上有賣(mài)(單價(jià)從幾十到幾百都有)

(2)android設(shè)備一臺(tái),系統(tǒng)版本4.2以上(SDK版本大于17)

(3)iOS設(shè)備一臺(tái),支持藍(lán)牙4.0 BLE

2.設(shè)置藍(lán)牙定位器

移動(dòng)設(shè)備掃描周邊低功率藍(lán)牙設(shè)備,可以獲得藍(lán)牙設(shè)備對(duì)應(yīng)的Proximity UUID、Major、Minor等屬性信息。而剛采購(gòu)來(lái)的藍(lán)牙設(shè)備屬性可能都相同,互相區(qū)別不開(kāi),所以我們需要設(shè)置每臺(tái)設(shè)備的屬性。

設(shè)備廠商都會(huì)提供相關(guān)手機(jī)應(yīng)用,共用戶設(shè)置屬性信息。給藍(lán)牙設(shè)備裝上電池,打開(kāi)手機(jī)應(yīng)用,靠近藍(lán)牙設(shè)備就能發(fā)現(xiàn),然后就可以設(shè)置其屬性值了,其中:

UUID是一個(gè)32位的16進(jìn)制數(shù),表示設(shè)備廠商,該字段可以沿用出廠設(shè)置

Major表示不同區(qū)域(比如:某一樓層、某一地區(qū)),取值范圍0到6萬(wàn)多

Minor表示不同的設(shè)備,取值范圍0到6萬(wàn)多

樣例:UUID = e2c56db5-dffb-48d2-b060-d0f5a71096e0, Major = 1001, Minor = 10001

每臺(tái)設(shè)備設(shè)置完屬性后準(zhǔn)備一個(gè)標(biāo)簽,填上屬性信息,貼到設(shè)備上,方便以后部署。

3.部署藍(lán)牙設(shè)備

首先,準(zhǔn)備目標(biāo)場(chǎng)地地圖數(shù)據(jù),可以是基于經(jīng)緯度坐標(biāo),也可以是簡(jiǎn)單圖片坐標(biāo),看具體使用情況。

接下來(lái),將藍(lán)牙設(shè)備挨個(gè)部署到場(chǎng)地指定位置上,順便記錄每個(gè)設(shè)備地理坐標(biāo)或圖片坐標(biāo)。

最后,得到一張表格信息,記錄著每臺(tái)藍(lán)牙設(shè)備屬性和位置信息。這張表就是整個(gè)定位系統(tǒng)的指紋庫(kù),為定位算法使用。

4.客戶端App開(kāi)發(fā)

客戶端app主要功能就是掃描周?chē){(lán)牙設(shè)備,將設(shè)備列表信息上傳定位服務(wù)器,從而獲得定位效果,并展現(xiàn)給終端用戶。

4.1 Android應(yīng)用開(kāi)發(fā)

工程所需SDK版本大于17。

1. App所需權(quán)限(AndroidManifest.xml文件)

2. 創(chuàng)建beacon數(shù)據(jù)項(xiàng)類(lèi)

public class IBeaconRecord {

public String address; // 設(shè)備地址(Mac)

public String uuid; // Proximity UUID

public int major; // Major

public int minor; // Minor

public int rssi; // 場(chǎng)強(qiáng)

}

其中,address屬性可以不要,因?yàn)閕OS設(shè)備獲取不到該屬性!