带你全面了解低功耗BLE蓝牙数据传输的理论,内附蓝牙协议栈代码讲解!

发布日期:2017.05.08     浏览次数:225

      低功耗BLE蓝牙对数据传输这方面进行了很好的抽象和封装,数据传输的实现也被完全隐藏起来了,所以是不需要开发者进行管理。低功耗BLE协议将终端设备(接收器)和传感器分别抽象为客户端和服务器端,数据的传输也变成Client(客户端)向Server(服务器)请求数据和服务器主动通知客户端的两种方式进行。
      从更深入的角度来进行分析,Server就像一个书架(设备),书架上面有很多个格子(服务Service),每个格子里面存放着很多书(特性Characteristic),每一本书里面有很多有价值的内容页(值Value)。而客户端和服务器的通信实际上就是类似通过对这些页上面的内容进行写和读来进行的。
 
      小编就以这个心率计为例来为大家进行详细介绍,在这个Service里面包含两个Characteristic,一个是用于心率测量的,另一个是指示设备位置的。在两个特性里面包含几个值的项。比如测量心率,第二个就是储存心率测量值的。终端设备只要对这个特性进行读操作,就可以测出当前心率了。另外比较常用的还有cccd这个值主要用来通知和指示“开关”用的。
当终端设备对其中某些特性进行写操作时候,传感器就会收到一个写的事件,其中包括表头写入的数据。所以BLE蓝牙传感器部分需要处理的时间也是非常的简单,仅仅只需要对终端的write时间进行处理就可以了。

通常数据发送可以在任意时间进行发送操作,一般都选择在测量完成之后再发送。 


      这种方式基本上把应用部分代码和数据传输进行彻底分离开来,在应用方面可以按照自己的调节来进行各项任务,而不需要随着蓝牙传输的通信步调一致。
还有就是复杂功能实现方面,蓝牙是具有一定优势的。然而蓝牙协议栈方面理解起来相对比较复杂,不容易上手代码量也很大,因此在开发调试时候工作量还是非常大的。
以下就是添加一个功率测量特性的函数,一个功率计大概有10多个这样的特性需要配置和添加。

下面就是功率测量值的函数发送。像这样的函数还有十几个的样子。
 
所以,很多行业因为出现的时间比较早,便有较多的资源可以参考。甚至有的直接就有现成的代码搬过来就可以用了。

下面记事本中的就是官方提供的代码。
 
      总结:BLE蓝牙是比较完善的,比较适合实现复杂的应用,于其他无线通信技术而言基本就是有过之而无不及了,是未来发展的趋势。另外,电子行业有个普遍的现象,用的人越多成本便越低。由于这几年智能硬件发展迅速,BLE蓝牙的使用更加广泛,因此将会有更多硬件平台运应而生。