標籤:

如何自行架設一個 iOS 7 設備可用的 iBeacons 廣播基站?

Developers who want to start experimenting with iBeacons don"t need to wait for hardware to show up on the market or design their own.Radius Networks has published a quick "how-to" for developers that shows how an inexpensive Raspberry Pi and Bluetooth LE dongle can be set up in a few minutes for experimentation purposes.

via Roll your own iBeacon with a Raspberry Pi and a Bluetooth LE dongle


如果不想弄髒自己的手,Radius 上面有一個即買即用的預組裝套裝(包括配置)。只賣一百美元。套裝包含下面這些組建:

  • Raspberry Pi PC
  • Bluetooth LE Module
  • 8 GB SD Card, pre-loaded with iBeacon software that"s fully compatible with Apple"s iBeacon SDK
  • Full instructions for customizing the iBeacon identifiers

如果自己手上都有上面的這些東西,那麼可以參照 Radius 提供的完整指引自己拼裝配置:

  1. 必要組建:一塊 Raspberry Pi 開發板;4GB 以上的 SD 卡;一個支持低功耗藍牙的藍牙適配器;一個標準的 5V 電壓輸出 miro-USB 介面充電器。

  2. 一些小工具:一個 USB 鍵盤和一個 USB 滑鼠;一個支持 HDMI 輸入的顯示器;一根 HDMI 數據線;一根用於接入互聯網的網線;一個支持 AirLocate/iBeaconLocate 的 Android 或者 iOS 設備。

組裝步驟:

  1. 參照這個指引,接上滑鼠鍵盤顯示器和網線來配置 Raspberry Pi,系統安裝過程中選擇 "raspbian" 模式;
  2. 到這一步可以不需要滑鼠,接上藍牙適配器;
  3. 登入系統,用戶名: pi, 密碼: raspberry
  4. 確認可以連接網路:

    $ ping www.google.com
    PING www.google.com (74.125.228.116): 56 data bytes
    64 bytes from 74.125.228.116: icmp_seq=0 ttl=55 time=34.267 ms
    64 bytes from 74.125.228.116: icmp_seq=1 ttl=55 time=30.908 ms

    如果看到上面的結果,說明設備處於聯網狀態

  5. 安裝 Build Packages:

    $ sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev

  6. 下載並解壓必要的 BlueZ 包:

    $ sudo wget www.kernel.org/pub/linux/bluetooth/bluez-5.8.tar.xz
    $ sudo unxz bluez-5.8.tar.xz
    $ sudo tar xvf bluez-5.8.tar
    $ cd bluez-5.8

  7. 配置和構造 BlueZ:

    $ sudo ./configure -disable-systemd
    $ sudo make
    $ sudo make install

  8. 配置藍牙適配器:

    要確認藍牙適配器已經查到 Raspberry Pi 上面了哦,然後再輸入命令行:

    $ hciconfig

    這樣就能看到藍牙適配器的一些基本信息,大概是類似這樣的:

    hci0: Type: BR/EDR Bus: USB
    BD Address: 00:01:0A:39:D4:06 ACL MTU: 1021:8 SCO MTU: 64:1
    DOWN
    RX bytes:1000 acl:0 sco:0 events:47 errors:0
    TX bytes:1072 acl:0 sco:0 commands:47 errors:0

    注意看到上面我下劃線加註的 "DOWN" 字樣,說明設備處於未工作狀態,我們通過輸入下面命令行啟動它:

    $ sudo hciconfig hci0 up

    然後就會看到類似這樣的結果:

    $ hciconfig
    hci0: Type: BR/EDR Bus: USB
    BD Address: 00:02:72:3F:4D:60 ACL MTU: 1021:8 SCO MTU: 64:1
    UP RUNNING
    RX bytes:1000 acl:0 sco:0 events:47 errors:0
    TX bytes:1072 acl:0 sco:0 commands:47 errors:0

    接著執行下面這段命令,是一段測試廣播:

    $ 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 c5 00 00 00 00 00 00 00 00 00 00 00 00 00

    上面是一個 Profile UUID 為 E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 的全零廣播

  9. 到這一步,其實廣播內容實際並沒有在廣播,還需要一個激活的命令行:

    sudo hciconfig hci0 leadv 0

    現在,就可以用支持接收廣播的 Android 或者 iOS 設備測試最終結果了。關閉廣播的命令行是:

    sudo hciconfig hci0 leadv 0

大概就是這樣了。上面的內容轉述自 Radius Networks 提供的指引。更進階的功能,還請大家查看原文。(我找個時間實際操作一番再上來更新)


直接下載Apple官方提供的airLocate demo, 你的iPhone就可以變成一個iBeacon 基站。

AirLocate: Using CoreLocation to monitor, range, and configure your device as an iBeacon

Update: iBeacons的硬體(紐扣大小),基於TI 2540、2541晶元的設計,結合App client,就可以構建一整套軟硬體系統。

目前所有技術問題已經解決,有興趣的商務合作可以直接聯繫

forrest.shi@gmail.com

微信:forrestshi


  1. 可以直接用iOS設備模擬iBeacons設備,可參考 iBeacons – 某人的棲息地
  2. 也可以在某寶搜索iBeacons,有直接加裝紐扣電池即可使用的iBeacons模塊


推薦閱讀:

ios怎麼讓圖片只有上半邊圓角?
能簡單地用「扁平化」來描述 iOS 7 在設計風格上的變化嗎?
安裝 iOS 7 的設備,具備 iCloud 網路鎖,失竊之後會被怎麼處理?
認為 iOS 7 是錯誤設計方向的理由是什麼?

TAG:iOS7 | iBeacons |