准备工作
在开始之前,我们需要准备好一些硬件和软件。硬件方面,你需要一个蓝牙模块、转接板、电脑和手机。软件方面,电脑端需要安装5.13版本的串口助手,手机端则需要微信者工具。
硬件连接
接下来,我们需要将硬件连接起来。具体接线方式可以参考图一。确保所有设备都正确连接,这样才能顺利进行后续操作。
获取蓝牙模块服务
在硬件连接完成后,我们需要获取蓝牙模块的服务。根据蓝牙模块厂商提供的协议,找到服务说明。具体操作可以参考图二和图三。
蓝牙协议中的UUID
在蓝牙4.2协议规范中,UUID是一个128位的唯一标识符,用来标识服务和特征等。为了减少存储和传输128位UUID值的负担,蓝牙技术联盟预分配了一批UUID,这些UUID拥有一个共同部分,被称为基础UUID,即000-0000-1000-8000-934。因此,预分配的UUID也可以使用16位或32位表示,其中16位UUID最为常用。使用16/32位的UUID可以降低存储和传输的负载。者自定义的UUID应注意不能与预分配的UUID冲突。
在小程序中,. 和 . 的参数支持16/32/128位UUID。在其他接口的参数中,支持直接使用16位和128位的UUID。从8.0.9版本开始,支持直接使用16/32/128位UUID;8.0.9以下版本,只支持128位的UUID,需要者手动补位到128位。补位方式如下:
128位 = 16位 2^96 +
128位 = 32位 2^96 +
蓝牙通信中的主要概念
在两个蓝牙低功耗设备建立连接之后,双方的数据交互是基于GATT(Generic Attribute Profile)规范,根据该规范可以定义出一个个配置文件(Profile),描述该蓝牙设备提供的服务(Service)。
在整个通信过程中,有几个最主要的概念:
-
配置文件 (Profile): 是被蓝牙标准预先定义的一些服务的,并不真实存在于蓝牙设备中。如果蓝牙设备之间要相互兼容,它们只要支持相同的Profile即可。一个蓝牙设备可以支持多个Profile。
-
服务 (Service): 是蓝牙设备对外提供的服务,一个设备可以提供多个服务,比如电量信息服务、系统信息服务等。每个服务由一个UUID唯一标识。
-
特征 (Characteristic): 每个Service包含0至多个Characteristic。比如,电量信息服务就会有个Characteristic表示电量数据。Characteristic包含一个值(Value)和0至多个描述符(Descriptor)组成。在与蓝牙设备通信时,主要就是通过读写Characteristic的Value完成。每个Characteristic由一个UUID唯一标识。
-
描述符 (Descriptor): 是描述特征值的已定义属性。例如,Descriptor可指定人类可读的描述、特征值的取值范围或特定于特征值的度量单位。每个Descriptor由一个UUID唯一标识。
小程序部分
在小程序中,有几个需要注意的地方:
-
蓝牙模块初始化:蓝牙模块初始化成功后,一般需要通过
.startBluetoothDevicesDiscovery
扫描设备。当蓝牙设备被扫描到时,会回调.onBluetoothDeviceFound
事件,返回扫描到的设备。扫描设备比较耗费系统资源,请在搜索到需要的设备后及时调用.stopBluetoothDevicesDiscovery
停止搜索。 -
设备过滤:开启扫描后会扫描出来很多设备,实际应用中我们需要根据相关特性进行过滤。
-
选择主服务:根据具体业务需要,选择一个主服务进行通信。具体操作可以参考图四。
真机演示
最后,我们来进行真机演示。图五展示了接收数据的界面,图六则展示了小程序发送数据的界面。通过这些演示,你可以更直观地了解整个操作流程。
希望这篇文章能帮助你更好地理解和操作蓝牙模块。如果有任何问题,欢迎随时交流!