BLE蓝牙模块与微信小程序的开发实例解析

准备工作

  在开始之前,我们需要准备好一些硬件和软件。硬件方面,你需要一个蓝牙模块、转接板、电脑和手机。软件方面,电脑端需要安装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唯一标识。

小程序部分

  在小程序中,有几个需要注意的地方:

  1. 蓝牙模块初始化:蓝牙模块初始化成功后,一般需要通过.startBluetoothDevicesDiscovery扫描设备。当蓝牙设备被扫描到时,会回调.onBluetoothDeviceFound事件,返回扫描到的设备。扫描设备比较耗费系统资源,请在搜索到需要的设备后及时调用.stopBluetoothDevicesDiscovery停止搜索。

  2. 设备过滤:开启扫描后会扫描出来很多设备,实际应用中我们需要根据相关特性进行过滤。

  3. 选择主服务:根据具体业务需要,选择一个主服务进行通信。具体操作可以参考图

真机演示

  最后,我们来进行真机演示。图五展示了接收数据的界面,图六则展示了小程序发送数据的界面。通过这些演示,你可以更直观地了解整个操作流程。

  希望这篇文章能帮助你更好地理解和操作蓝牙模块。如果有任何问题,欢迎随时交流!

© 版权声明
THE END
分享