bluetooth - 使用 BLE 芯片将设备连接到智能手机

标签 bluetooth bluetooth-lowenergy pairing

我的问题与软件无关,而是与技术有关。我认为 BLE 是我的系统的解决方案,但我不确定它是如何工作的,配对是如何工作的。

我正在投影一个包含 4 个设备的系统,每个设备都有一些传感器。 设备A1和A2具有相同的传感器,它们彼此独立并读取不同的数据。如果其中一个读取到临界值,就会发出噪音。

设备 B1 和 B2 具有相同的传感器,它们距离很近并且相互依赖。我的意思是,我需要知道 B1 的值是否高于 B2,反之亦然。值(value)较高的设备会发出噪音。

----         ------------           ----
|A1| ------> |smartphone |  <-----  |B1| <--|
----          ------------          ----    |
                ^     ^                     |
----            |     |             ----    |
|A2|  ----------|     |-----------  |B2| <--|
----                                ----

这些设备彼此靠近,稍后会在一天结束时同步到智能手机以存储所有读取的数据。

如何在传感器和智能手机之间建立连接? 我需要让B1和B2进行通信,才能知道谁的值(value)更高。 然后我需要将它们全部传送到智能手机以收集数据。

每台设备使用一个芯片低功耗蓝牙就足够了吗?我可以使用相同的芯片在设备之间以及与智能手机之间进行通信(在不同时刻)吗?

我不确定配对过程...我是否需要每次都将设备与智能手机关联和取消关联?或者最好让 B1 作为主设备,带有 2 个 BLE 芯片,一个用于智能手机,一个用于与 B2 进行通信?

最佳答案

BLE 要求一个设备作为服务器,另一个作为客户端,才能建立连接。您不能让服务器与服务器通信,也不能让客户端与客户端通信。但是,设备可以同时实现服务器和客户端协议(protocol)。

如果 B1 和 B2 相同,并且它们仅实现服务器或客户端接口(interface),则它们无法相互通信。如果您对 B1 和 B2 具有设计控制权,则可以将它们设计为实现服务器和客户端协议(protocol),然后自动相互通信以更新每个协议(protocol)谁具有更高的值(value)。然而,我想知道为什么你需要让它们互相交谈 - 为什么智能手机不能同时获取 B1 和 B2 值,然后决定保留哪个?然后它还可以向 B1 或 B2 发送命令以发出噪音。

单个 BLE 芯片可以管理多个连接,因为 BLE 连接非常临时(并且,如果内部软件支持它,它可能能够处理多个同时连接)。

如果关于哪个的决定,我会让 B1 和 B2 只是将它们的测量数据包含在它们的广告数据包中,然后让它们都监听其他广告数据包。在这种情况下,根本不需要建立任何协商连接 - 每个设备只是连续运行 BLE“附近设备”扫描。然后,当智能手机过来时,他们每个人都可以独立地与手机建立协商连接并上传数据。

关于bluetooth - 使用 BLE 芯片将设备连接到智能手机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35459039/

相关文章:

ios - 信标监控无限期地保持定位服务开启。 iOS系统

python - 如何通过抖动控制Rpi的GPIO引脚?

当手机处于 sleep 模式时,iOS BLE 在后台扫描广告数据

iOS 低功耗蓝牙发射率

android - 如何从HEX获取正确的血糖测量值

ios - WatchKit - iPhone 不可用屏幕

android - BLE 与 Android 5.0 : How to get a device to act as Central AND Server?

pandas - 如何将数据框的行与组配对?

android - 是否可以在 Android 上使用 BL 3.0 实现类似 BLE 的邻近服务?

ios - 如何在后台向 iOS 中连接的蓝牙设备发送消息