蓝牙BLE如何连接连接多台设备

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝牙BLE如何连接连接多台设备相关的知识,希望对你有一定的参考价值。

这个其实是看您这边的连接需求,像SKYLAB支持一主多从的BLE蓝牙模块,一个BLE蓝牙模块基本都可以连接1-7个蓝牙设备,但是如果需要连接的蓝牙设备多的话可以选择支持组网的蓝牙Mesh模块,像智能楼宇中的智能照明方案中就是使用蓝牙Mesh模块来实现多个蓝牙灯、多组蓝牙灯的控制的。

参考技术A 要求手机蓝牙是双模的才可以同时连接两款设备。
蓝牙4.0一般是双模(就是即可使用原来的蓝牙音频功能,又能使用BLE功能)。
一个BLE主设备可以连接多个BLE从设备,就目前RFCOMM规范指明最大的连接数是60个。
手表、手环在使用BLE的时候,可以同时用,不要超过厂商设定的上限即可。

如何自动连接 CBPeripheral(带有 iBeacon + 蓝牙芯片的 BLE 设备)并且应用程序未运行

【中文标题】如何自动连接 CBPeripheral(带有 iBeacon + 蓝牙芯片的 BLE 设备)并且应用程序未运行【英文标题】:How to auto connect with CBPeripheral (A BLE Device with iBeacon + Bluetooth Chip) and app is not running 【发布时间】:2021-01-15 07:40:46 【问题描述】:

我有一个智能门解锁硬件设备,它同时充当 iBeacon 和 CoreBluetooth 外设!

我的要求是当我的应用第一次启动时,应用将开始监控 iBeacon 区域,当用户的距离小于 10 米时,应用应该开始使用特定的 CBService 扫描 BLE Peripheral。

当用户进入 0.5 米距离内时,应用应自动连接扫描到的 CBPeripheral 设备并处理开门操作。

您可以想象,当您离建筑物入口更近(约 10 米远)并开始扫描最近的蓝牙硬件时,应用程序将被激活。当你到达入口时,通过蓝牙操作,门会自动打开。

谁能帮助我了解如何使用 CoreBluetooth 技术实现类似的行为?

这个应用程序也应该在后台模式下工作。

到目前为止我所做的是,开始了 iBeacon 区域监控和回调

func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion) 
        // I am using beacon's accuracy as distance calculation.
        // When accuracy is < 10 meter, I am starting Peripheral scanning using: centralManager.scanForPeripherals(withServices: [My Custom Service UUID], options: [CBCentralManagerScanOptionAllowDuplicatesKey: false])

我的蓝牙管理器收到一个回调

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) 

现在我如何使用我的 iBeacon 和 Discovered Peripheral 进行映射并在距离小于 0.5 米时与 Peripheral 建立自动连接。

简而言之,我的手机应该用作身份验证和考勤管理的 RFID 卡

我想实现与以下视频中显示的类似行为: https://www.youtube.com/watch?v=Y6XlVE7UKp0

【问题讨论】:

您可能并不真正需要 iBeacon 功能。只需降低锁内蓝牙芯片的发射功率,使其仅在距离它 ​​0.5m 时才被检测到 @Paulw11 但是如果没有 iBeacon 功能,当我不使用应用程序或用户/操作系统杀死它时,我的应用程序是否会被激活。我需要一些关于如何处理这些 iBeacon + BLE 场景的指导 可以使用CoreBluetooth后台模式和状态恢复。如果您的外围设备有待处理的connect,则 iOS 将在后台传递连接事件(如果您的应用程序已暂停)或在后台启动它然后传递连接事件(如果您的应用程序被 iOS 终止) .如果应用程序被用户终止,那么它不会重新启动,但这是用户选择终止您的应用程序,如果他们终止了应用程序,他们不应该期望它能够工作。 即使您使用 iBeacon,您也需要一个待处理的 Core Bluetooth 连接,因为 iBeacon 和 CoreBluetooth 外围设备之间没有链接。使用 iBeacon 还意味着您需要请求(并接收)“始终”位置权限 @Paulw11 没错,如果有挂起的“连接”调用,它可以在后台模式下工作。但是,我将有多个设备(例如多个门),只要我在附近就可以打开。当有多个外围设备时,这种情况可能无法处理。这就是我们必须添加 iBeacon 芯片的原因。当用户在此芯片的范围内时,应用程序被激活,扫描最近的 BLE 外设 > 建立连接 > 执行 BLE 操作 > 最后,它断开连接。 【参考方案1】:

如果您有一个 iBeacon 并且基于唯一的主要/次要值,您正在搜索 BLE 外围设备,那么您将只扫描一个外围设备。这样 iBeacon 和 BLE 外设就会匹配。

当iBeacon委托didRangeBeacon响应距离为0.5米时,您可以管理检测到的外围设备的数组并建立连接(Beacon Accuracy的值以米为单位。您也可以使用)

【讨论】:

以上是关于蓝牙BLE如何连接连接多台设备的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 上搜索和连接附近的经典蓝牙设备(非 BLE)?

Android BLE为啥首次连接蓝牙设备比较慢

lesimpleble如何开启蓝牙

iOS 蓝牙BLE开发

获得蓝牙低功耗 (BLE) 设备通知的步骤是啥?

获取经典蓝牙连接设备列表(无BLE)[EAAccessoryManager]