BLE – 扫描附近设备
材料准备
- AmebaPro2 [ AMB82 MINI ] 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毫秒之后,扫描进程将停止,并准备再次启动。