BLE – 扫描附近设备

材料准备

范例说明

介紹

本例将Ameba配置为蓝牙中心设备,使用扫描功能扫描其他蓝牙设备,并将结果打印到串行监视器。

具体的步骤如下:

打开Arduino的范例, “Files” -> “Examples” -> “AmebaBLE” -> “BLEScan”

2

上传代码并在上传完成后按下Ameba上的reset按钮。

打开Arduino串口监视器,我们就可以看到被扫描到的附近的蓝牙设备被打印出来。

3

如果你已经安装了蓝牙app — nRF Connect,你也可以用它发送蓝牙广告让Ameba来接收。

程式码说明

setScanMode(GAP_SCAN_MODE_ACTIVE) 用于设置扫描模式。当找到设备时,主动扫描模式将向设备请求多一次额外的扫描响应数据包。而被动扫描模式只会查看广告数据,而不会请求额外的数据。

setScanInterval() 和 setScanWindow() 用于设置以毫秒为单位的扫描频率和持续时间。扫描将每隔一段时间启动一次,并且每次扫描都将持续整个扫描窗口时间。扫描窗口时间应该小于或等于扫描间隔。设置短间隔可快速发现设备,设置长间隔可节约电能。

setScanCallback(scanFunction) 用于注册一个接收到扫描结果时调用的函数。它可以用来设置用户自定义函数,以便对扫描数据进行额外的处理,例如查找特定的设备。如果没有注册函数,扫描结果将被收集整理并在默认情况下打印到串行监视器。

beginCentral(0) 用于在中心模式下启动蓝牙堆栈。参数0用于指示当前没有客户端在中央模式下进行操作。

startScan(5000) 用于启动一个特定持续时间为5000毫秒的扫描进程。扫描将按照设定的扫描间隔和扫描窗口值进行重复。在5000毫秒之后,扫描进程将停止,并准备再次启动。

请先确认已安装QQ通讯软体