BLE - 掃描附近設備

材料準備

  • AmebaD [AMB21 / AMB22 / AMB23 / BW16] x 1

  • Android / iOS 智能手機

範例説明

介紹

本例將Ameba配置為藍牙中心設備,使用掃描功能掃描其他藍牙設備,並將結果打印到串行監視器。

步驟

Open the example, “Files” “Examples” “AmebaBLE” “BLEScan”

../../../../_images/image12.png

Upload the code and press the reset button on Ameba once the upload is finished. Open the Arduino serial monitor, and you should see the scan results of nearby Bluetooth devices formatted and printed out.

../../../../_images/image22.png

如果你已經安裝了藍牙app — nRF Connect,你也可以用它發送藍牙廣告讓Ameba來接收。

程式碼説明

setScanMode(GAP_SCAN_MODE_ACTIVE) 用於設置掃描模式。當找到設備時,主動掃描模式將向設備請求多一次額外的掃描響應數據包。而被動掃描模式只會查看廣告數據,而不會請求額外的數據。

setScanInterval() 和 setScanWindow() 用於設置以毫秒為單位的掃描頻率和持續時間。掃描將每隔一段時間啟動一次,並且每次掃描都將持續整個掃描窗口時間。掃描窗口時間應該小於或等於掃描間隔。設置短間隔可快速發現設備,設置長間隔可節約電能。

setScanCallback(scanFunction) 用於註冊一個接收到掃描結果時調用的函數。它可以用來設置用戶自定義函數,以便對掃描數據進行額外的處理,例如查找特定的設備。如果沒有註冊函數,掃描結果將被收集整理並在默認情況下打印到串行監視器。

beginCentral(0) 用於在中心模式下啟動藍牙堆棧。參數0用於指示當前沒有客戶端在中央模式下進行操作。

startScan(5000) 用於啟動一個特定持續時間為5000毫秒的掃描進程。掃描將按照設定的掃描間隔和掃描窗口值進行重複。在5000毫秒之後,掃描進程將停止,並準備再次啟動。