iBeacon介紹
Beacon這項技術常見的應用就是室內定位。目前常見室內定位技術大致分為Wifi、
Zigbee及BLE三種,這三種技術大致上的共同點都是使用無線傳輸中RSSI
( Received Signal Strength Indication,接收信號強度指示 )的
dB值強弱來判斷距離。
Beacon與iBeacon的差別於廣播訊號頻率。
iBeacon 其實是基於BLE的訊號廣播設備,在架構中通常會有一個 iBeacon 發射器,
發射器有一個唯一的ID號碼其主要的內容包括內容 UUID(16 byte)、Major (2 byte)、
Minor (2 byte)及 Tx Power等資訊。通常發射器只有單向發射訊號的功能,
除非客製化成Dual-Mode iBeacon的服務否則沒有接收功能。
iBeacon定位
在室內定位技術部分,iBeacon的信號強度採用RSSI值表示。隨著距離的遠近,
RSSI值會產生變化透過校準發射功率 (txPower)就可以算出與發射器的距離。
當iBeacon接收器(手機或硬體裝置)接收到這組資料,就可以判斷所在位置。
由於訊號會因為一些物理或空間上的影響而改變,Apple定義了四種範值:
Immediate 很近,小於1公尺。
Near 附近,約1-3公尺。
Far 較遠。(或離開範圍)
Unknown 未知,一般出現在啟動階段,或者因為某些原因無法判斷。
至於定位方案則可以透過單點定位、兩點定位及多點定位方式以
iBeacon 發射器的數量多寡來完成定位的精準。
iBeacon發射器環境建立
軟硬體環境:
Raspberry Pi 2
D-Link DWA-121 USB無線網卡
嘻哈佈落科技 CSR V4.0藍牙傳輸器
RASPBIAN Debian Wheezy 2015-05-05
嘻哈佈落科技 CSR V4.0藍牙傳輸器
安裝所需要的套件
sudo apt-get -y install libglib2.0-dev libudev-dev libical-dev libreadline-dev libdbus-1-dev
下載最新版bluez (BlueZ官網找找)
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.33.tar.xz
解壓縮bluez( 注意它是.xz壓縮喔)
tar xvf bluez-5.33.tar.xz
Compiler bluez
cd bluez-5.33/
./configure --disable-systemd
sudo make install
檢查是否有捉到usb 藍芽卡
lsusb
看到 Cambridge Silicon Radio, Ltd Bluetooth Dongle(HCI mode) ,有捉到
藍芽USB卡,沒問題。
檢查藍芽是否被啟動
hciconfig
我的藍芽名稱是 hci0 ,目前是DOWN的狀態
啟動藍芽並關閉掃描功能
sudo hciconfig hci0 upsudo hciconfig hci0 noscan
啟動BLE的廣播功能
sudo hciconfig hci0 leadv
測試發送 iBeacon 的資料封包
sudo hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 1A 1A FF 4C 00 02 15 E2 C5 6D B5 DF FB 48 D2 B0 60 D0 F5 A7 10 96 E0 00 00 00 00 C8 00
內容如下
內容如下
0x08 BLE Controller Commands,
0x008 表示Advertising Data (length)廣播資料
1E Number of bytes that follow in the advertisement
02 Number of bytes that follow in first AD structure
01 Flags AD type
1A Flags value 0x1A = 000011010
bit 0 (OFF) LE Limited Discoverable Mode
bit 1 (ON) LE General Discoverable Mode
bit 2 (OFF) BR/EDR Not Supported
bit 3 (ON) Simultaneous LE and BR/EDR to Same Device Capable (controller)
bit 4 (ON) Simultaneous LE and BR/EDR to Same Device Capable (Host)
1A Number of bytes that follow in second (and last) AD structure
FF Manufacturer specific data AD type
4C Company identifier code LSB
00 Company identifier code MSB (0x004C == Apple)
02 Byte 0 of iBeacon advertisement indicator
15 Byte 1 of iBeacon advertisement indicator
接下去則是UUID(16 byte)、Major (2 byte)、 Minor (2 byte)及 Tx Power等參數
Apple在它們自家的iBeacon服務中定義了 Apple AirLocate 其UUID開頭為
E2C56DB5 、5A4BCFCE 及 74278BDA。
上述的UUID就是採用 E2C56DB5 開頭的一組 Apple AirLocate UUID :
E2 C5 6D B5 DF FB 48 D2 B0 60 D0 F5 A7 10 96 E0
Major ID: 在同樣 UUID 的一群 iBeacon 發射器中為了區隔不同分類
定義以此Major Number (2 byte),例如喜宴會場 A 就定義為0001、會場B就定義0002
Minor ID: 細分類,例如喜宴會場A的男方親友區為0001 ,女方親友區為0002
TX power:則是用來判斷使用者與beacon之間的距離遠近。
接下來可以拿支援BLE的裝置出來安裝 Locate Beacon 這個APP
Anrdoid
AppStroe
http://www.cheng-min-i-taiwan.blogspot.tw/2015/03/raspberry-pi-40ibeacon.html
http://stackoverflow.com/questions/20416218/understanding-ibeacon-distancing
ios ibeacon 接收軟體
https://github.com/relevante/ibeacon-tutorial
Android ibeancon接收軟體
https://github.com/Vinayrraj/Android-iBeacon-Demo
http://stackoverflow.com/questions/23483086/using-hcitool-to-set-ad-packets
http://stackoverflow.com/questions/22144098/understanding-ibeacon-data-the-power-field-and-other-bytes/22148306#22148306
沒有留言:
張貼留言