蓝牙BLE主机Central讲解四(连接血压计)

前言:
蓝牙进行远程操控本质上是发送无线数据,进而达到主机与从机的相互控制。既然是发送数据,一般我们会先建立连接,然后通过发包的形式进行数据交互(也可以通过广播的形式往外发包,但是效率较低不建议)。因此蓝牙进行数据交互前,我们会让主机从机先建立连接,然后再数据透传。有时候也会有设备需要先配对再进行连接,否则仅仅可以实现主从机的连接,无法实现数据的交互。这里主要讲解一下CH582芯片作主机与AND血压计(从机)的连接、发现服务、数据透传。
 
一、
根据AND血压计资料显示,连接血压计需要先配对、后连接,才能实现发现服务等操作。这里我们先将MAC地址输入至主机,同时让从机进去配对模式(不同产品进入配对模式方式不同,需查看产品手册)
static uint8_t PeerAddrDef[B_ADDR_LEN] = {0x0A, 0xD9, 0x7C, 0x59, 0xAC, 0xC4};  //AND从机的MAC地址
582主机与从机配对成功后,芯片接打印会有如下信息Pairing success和Bond save success,这里配对已经成功,接下来需要建立连接。
先看一下血压计的配对流程的说明,这里有一份文档可以参考,我们截取重要部分看一下:

建立连接之前,我们先使用BLE调试助手与血压计建立连接,这里的目的是查询相应服务的UUID。我们发现自定义服务的UUID为128bit的格式,582主机的UUID默认是16bit的,这里可以参考一下这篇博客,进行UUID的修改:CH573 CH582 CH579 peripheral通用外设例子讲解五 修改16bit UUID为128bit - debugdabiaoge - 博客园 (cnblogs.com)

582作主机需要做如下修改:

 这里的UUID:0x233bf0015a341b6d975c000d5690abe4是使能CCCD,在上面的流程图上第一个操作是打开CCCD,因此我们根据流程进行。

使能成功之后,从机会返回Write response。结合到程序会返回Write success。这里成功之后我们Write Request,同样会返回Write success。

接下来我们需要使能CCCD Indication,原理和上面一样,因为我们已经知道了对应handle所对应的含义,所以直接使能打开就可以,如图可见:

 

(所有的handle值以及对应的UUID表格都已罗列出来,前面对CCCD和Write的操作也可以直接输入handle值进行使能,打开相应的通道)

具体处理如图:

 

 此时相应的通道已经打通,从机发送数据主机会接收到。接下来需要处理主机端的接收方式,在582的默认例程中,只有接收noti数据,接收Indication数据需要手动添加,如图可见:

 

 二、

最终接收到血压计传过来的数据,如图可见:

如上所述,数据已经接收完成,最终数据还需要厂家进行处理后得要我们所能看懂的血压数据。

 

三、

综上所述,我们在进行蓝牙连接与透传需要进行以下几点操作:

1、使用手机端BLE调试助手与待建立连接的从机建立连接,且进行数据透传;

2、手机连接无问题,使用CH582连接理论也不会出问题,只需要先根据从机确定相应服务的UUID,找到对应的handle值,打通“通道”,进行数据的接收;

3、有的时候UUID输入正确了,但是handle值获取到的是一个范围,我们可以一个个的去尝试处理,或者使用蓝牙分析仪,分析手机与从机连接时通过某个通道进行数据传输,在582程序制造一个相同的通道进行数据传输。

这里附录一份博客关于BLE分析仪的使用讲解,配合使用会更加方便:

BLE分析仪讲解 - SweetTea_lllpc - 博客园 (cnblogs.com)

 

posted @ 2022-08-04 19:36  SweetTea_lllpc  阅读(1010)  评论(0编辑  收藏  举报