时间:2016-09-13 14:37:24

标签: android bluetooth arduino bluetooth-lowenergy

我一直在对我想做的这个项目进行大量的研究,可能会阅读每一篇SO帖子(蓝劫,RFCOMM,信标等等),而我的脑袋在旋转。

我想在家中创建一个系统,使用Arduino(带有蓝牙文件),它将扫描蓝牙并检测我的手机或任何家庭成员手机何时接近。无论是MAC扫描仪还是简单的友好名称。我也想获得RSSI。我不需要做准确的距离测量,但我想知道他们有多接近。有人对这种方法有什么建议吗?我知道我可以在手机上创建一个应用程序,让它成为一个灯塔,这可能是一个选项,但我担心Android,它必须至少是Marshmallow 5.0。我想支持比JB或KK更低一点。因此,似乎应该进行简单的扫描,只需查找MAC或名称。这就是我真正需要的。

那就是说,我的主要问题是,如果蓝牙设备已经配对,你可以扫描并查看范围内的蓝牙设备吗?像蓝牙耳机?我知道蓝牙是点对点的,但它是否允许多个连接或至少在配对时广播mac或名称?

这个问题以及任何一般性建议都会对我有所帮助!

谢谢!

1 个答案:

答案 0 :(得分:1)

来自监听器的蓝牙发现涉及收听蓝牙查询数据包(RX)和查询响应(TX)。如果连续完成,这将耗尽电池。因此,大多数设备(包括移动电话和耳机)都有何时可以发现和连接的策略。特别是耳机只有在指示和连接时才能被发现,直到一个设备连接到耳机(耳机可能同时连接到多个电话的情况可能有例外)。大多数移动电话只有在设置屏幕(Android,IOS和Windows Phone)中才能被发现,但与耳机外壳不同,它们是可连接的。

因此MobilePhone的一个选项是在配对一次后查看是否可以连接到它们(例如,通过在远程设备上尝试服务搜索并查看它是否返回服务属性,这在内部建立了连接,间接确保设备的存在。)

如果您具体说明已配对的手机,则可能需要建立具有身份验证和加密的更高层连接(例如SPP)。这将强制设备之间进行双向检查,以查看它们是否已配对。其他不太安全的选择是依赖手机(Android和IOS手机通常不允许更高层连接而不加密/配对)并尝试建立与手机的SPP连接。

另一种选择是使用Bluetooth-LowEnergy。但请注意,BT的安全性优于BLE,直到BTv4.1和BTv4.2相同。