期一个BLE项目,整套方案做下来发现虽然需求特殊,但是根据这个项目可以衍生出BLE设备一主多从的一般性方法。
项目的需求基本如下:
1.实现基于CC2541芯片的蓝牙主机固件代码,要求主机1拖4从机;
2.上电自动、同时连接4个BLE设备;
3.身份识别需求:扫描绑定这4个唯一设备,不允许自动连接其他BLE设备
4.同时连接的情况下,读取4个BLE设备的通知型数据,并串口封包转发。
这个项目的麻烦在于需求3,4的实现,需求2要求上电自动连接多个BLE设备本来问题不大,但是需求3要求设备绑定,于是最初考虑的方法是:
1.采取广播包识别设备UUID的方式,类似iBeacon广播包中16个字节的UUID,可以作为唯一身份识别;
2.读取扫描应答包的设备名作为唯一识别标准;
3.根据设备的Mac地址作为设备的身份识别。
iBeacon是苹果推出的基于BLE4.0技术的应用层解决方案,主要利用BLE广播包进行信息的推送等服务,在长度受限的广播包中定义了16个字节的UUID,作为iBeacon设备的唯一识别码,这也是蓝牙2.4G作为有源RFID的一个方案之一。应该来说,在广播包里存放身份ID是最佳方案,无需建立连接即可唯一识别设备。
但是,这个项目的4个从机: 血压、血氧、血糖、血脂设备均为固定蓝牙设备,我无法修改其固件代码,只能动主机代码。