BLE – 廣播信標
材料準備
- AmebaPro2 [ AMB82 MINI ] x 1
- Android / iOS 智能手機
範例說明
介紹
BLE信標將其身份信息廣播到附近的藍牙設備,使其他設備能夠確定它們相對於信標的位置,並根據信標廣播的信息執行操作。
信標的應用實例包括室內定位系統、定位廣告等。
按照廣播設備的定義,BLE信標無法被連接,只能通過其藍牙廣告包發送信息。
在比較常見的BLE信標協議中,Ameba BLEBeacon庫支持iBeacon和AltBeacon協議。
具體的步驟如下:
請確保在您的手機上安裝了以下藍牙應用程序。這些應用程序將向您顯示由Ameba發送的原始數據,並允許您與數據進行交互。
這裡推薦的應用程序是nRF connect,可在下面的鏈接中找到:
- Android : https://play.google. com/store/apps/details?id=no.nordicsemi.android.mcp
- iOS :https://apps.apple.com/us/app/ nrf-connect/id1054362403
LightBlue是另一種也可以使用的應用程序,但是它的特性比較少:
- Android : https://play.google.com/ store/apps/details?id=com.punchthrough.lightblueexplorer
- iOS :https://apps.apple.com/us/app/lightblue/ id557428110
打開Arduino的範例,”Files” -> “Examples” -> “AmebaBLE” -> “BLEBeacon”
上傳代碼並在上傳完成後按下Ameba上的reset按鈕。
在您的手機上,打開藍牙app,掃描Ameba廣播的信標信號。
如果您碰巧處在一個BLE信標多而繁雜的環境中,您可以點擊條目來展開它們,並驗證信標數據是否與程序中的數據相同。
程式碼說明
setRssi() 用於設置信標的接收信號強度指示器(rssi)數據字段。規範規定這應該是1米距離內從信標收到的信號強度。由於沒有測量方法,因此將估計值設置為-65dBm。
setMajor() 和 setMinor() 用於設置兩個數據字段。這些數據的用途留給信標的製造商來定義,並且可以任意使用。
setUUID() 用於給信標一個全局唯一標識符(UUID)。這是一個128位的數字,通常用十六進製字符串表示。它用於識別每個唯一的信標,並且可以免費地在線隨機生成。
BLEBeacon 庫包括iBeacon和AltBeacon類,如果第6行iBeacon替換為AltBeacon,就能創建一個AltBeacon。數據字段基本相同,只有一些小的變化,請查看頭文件了解更多細節。
BLE.init() 用於分配內存並預備Ameba啟動藍牙堆棧。
BLE.configAdvert() 用於配置藍牙廣告設置,我們將信標數據傳遞給它,並將設備設置為不可連接。
BLE.beginPeripheral() 在藍牙外設模式下啟動Ameba,之後它將開始使用提供的信標數據進行廣告。