BLE – 掃描附近設備
材料準備
- AmebaD [ AMB23 / AMB21 / AMB22 / BW16 / AW-CU488 Thing Plus ] x 1
- Android / iOS 智能手機
範例說明
介紹
本例將Ameba配置為藍牙中心設備,使用掃描功能掃描其他藍牙設備,並將結果打印到串行監視器。
具體的步驟如下:
打開Arduino的範例, “Files” -> “Examples” -> “AmebaBLE” -> “BLEScan”
上傳代碼並在上傳完成後按下Ameba上的reset按鈕。
打開Arduino串口監視器,我們就可以看到被掃描到的附近的藍牙設備被打印出來。
如果你已經安裝了藍牙app — nRF Connect,你也可以用它發送藍牙廣告讓Ameba來接收。
程式碼說明
setScanMode(GAP_SCAN_MODE_ACTIVE) 用於設置掃描模式。當找到設備時,主動掃描模式將向設備請求多一次額外的掃描響應數據包。而被動掃描模式只會查看廣告數據,而不會請求額外的數據。
setScanInterval() 和 setScanWindow() 用於設置以毫秒為單位的掃描頻率和持續時間。掃描將每隔一段時間啟動一次,並且每次掃描都將持續整個掃描窗口時間。掃描窗口時間應該小於或等於掃描間隔。設置短間隔可快速發現設備,設置長間隔可節約電能。
setScanCallback(scanFunction) 用於註冊一個接收到掃描結果時調用的函數。它可以用來設置用戶自定義函數,以便對掃描數據進行額外的處理,例如查找特定的設備。如果沒有註冊函數,掃描結果將被收集整理並在默認情況下打印到串行監視器。
beginCentral(0) 用於在中心模式下啟動藍牙堆棧。參數0用於指示當前沒有客戶端在中央模式下進行操作。
startScan(5000) 用於啟動一個特定持續時間為5000毫秒的掃描進程。掃描將按照設定的掃描間隔和掃描窗口值進行重複。在5000毫秒之後,掃描進程將停止,並準備再次啟動。