干货 | BLE开发,你要知道这几件事
行业资讯 犀利解读
技术干货 每日更新
什么是BLE?不同BLE有什么特点?BLE连接有没有握手?BLE一数据包多少字节?BLE有几层协议栈?我想这些问题作为一个BLE的应用开发者来说并不是最重要的,开发者最关心的问题就只有一个:怎么使用?
在介绍怎么使用之前,想先说说BLE的通信特点,BLE通信与串口,网络,nrf24l01这样的传输不同,形象的说就是BLE的通信是并行的,其他的协议是串行的。BLE的正确用法并不是像蓝牙串口模块那样,而是多个信息分类发送。就像工业中流水线上的传送带,不同的传送带上传送不同物品。用一张图来说明BLE中的一些词的含义:
最上面的Note(节点)就相当于一个蓝牙芯片,一个蓝牙芯片可以建立多个Service(服务),一个服务下面可以有多个characteristic(特性),每个特性又可以有三种操作,Notification,Read,Write。
看完这些特点后是不是发现了BLE的特点了,人家是多任务并行的。基于这样的特点,有时候怎么使用却是成了需要衡量的问题,比如想做一个按钮遥控器的设备,就可将每个按钮建立一个Service或者characteristic,每按一下按钮就发出一个通知,接收端根据不同的通知执行不同的命令。或者通过蓝牙串口方式发送指令(类似AT指令),接收端通过解析指令来执行不同的命令。甚至蓝牙串口本身就可以有建立一个characteristic同时收发和建立两个characteristic一个用来收一个用来发两种方式。
在BlueNRG-1开发板上烧录BLE Sensor Demo的图如下:
如何使用,简单来说就是两点:连接和通信。
BLE有两种连接的方式,UUID连接和MAC地址连接。UUID又分为16bit和128bit两种,为了节约空间和提高传输效率,蓝牙技术联盟定义了一个基本的UUID:0x0000xxxx-0000-1000-8000-00805F9B34FB,只需要确定好中间的16位就可以了,约定了很多特定16bit的UUID。MAC地址又分为公共设备地址和随机设备地址,随机设备地址又分为静态地址和私密地址。如果不怕泄密,使用静态地址就好。
一个蓝牙设备一旦开始广播,他至少就会有一个MAC地址和UUID,或者有设备名。静态地址和UUID都可以设置,通常安卓通过MAC地址连接,IOS通过UUID连接。
通信都是通过回调函数的形式来获取,通过Notification某个characteristic然后通过read可以接受信息,通过write或者通知方式发送信息。
以上就是我觉得BLE开发者需要了解的东西了,欢迎大家留言补充哦!