看上去很简单,然而实际上并没有这么简单,下面来说说具体设计自己的BLE通信时至少要注意哪几个问题。
第一个问题是UUID的选择,如果是自己设计BLE服务,需要使用UUID工具生成自己的UUID值,如果是在LINUX系统下,可以直接使用UUID命令即可,当然WINDOWS下也有不少工具软件可以用来生成UUID。
第二个问题,在设计具体的服务和特性时,要根据实际情况指定服务及特性的一些参数,如下
例如这里的LED控制部分,需要指定特性的一些属性,如读/写/通知等。另外也要指定属性值的长度及类型,例如这里的RGB控制属性就是一个4字节长度的无符号8位整形数组。
另外还有一个问题是字节的顺序,即大端还是小端的问题,当然如果只关心数据的RAW形式,倒是不要花太多的心思来了解这个问题。
为什么没有看到EINK的模块,这只是一个接口而已,通过代码来实现了,跟设计半毛钱关系也没有。
接下来生成代码,编译,下载到评估套件上,开始体验BLE。
BLE通信过程是不可见的,所以得借助特定的工具来查看这个通信过程,像NORDIC的nRF Connect之类的就行。前面介绍了,评估套件里包含一个BLE USB DONGLE,可以直接在PC上进行调试。
将USB DONGLE连接到PC的USB端口,启动CySmart软件,该软件是PSoC 6 Creator的一部分,默认已安装好了。
CySmart启动后立即会检测支持的设备是否存在,图中看到已检测到了USB DONGLE设备,产品名称是CySmart BLE 4.2 USB Dongle。
接下来点击Scan来进行设备扫描,如下
这里已经找到了咱们的设备,名称是BLE UI,另外还有MAC地址、RSSI等信息也都已列出。
如果要查看更详细的广播数据信息,可以在右侧的窗口中看到如上图所示的一些数据,一部分是广播标志如发现模式等信息,另一部分是广播数据,这部分数据里最重要的就设备名称,这里可以看到设备名为”BLE UI”。
按照一般的BLE通信过程,扫描到设备好,接下来就是连接到设备,发现服务等操作了。
这里连接设备后的界面,接下来的操作就只有一个:Discover All Attributes,点击后就会开始查找外设提供的所有属性,并且以列表的形式提供给用户查看及操作
该列表最下面的三个服务分别为CapSense Slider, RGB LED及CapSense Button,每个服务提供的特性也分别列出来了,选择其中一个属性,可以读取该属性的值,如果该属性值是可写的,也可以对其进行写入操作。
BLE的特性可以配置为Notify,这样一旦该值发生变化,就会及时通知Central。
这是CapSense Slider特性的相关配置值,该值包括一个0x2902的描述,即Client Characteristic Configuration,对该描述写入1后,CapSense Slider的值发生变化,就会通知到Central。
此时手指在CapSense Slider上滑动,检测到的值就会在CySmart上显示出来,如下
虽然我们不能直接感知BLE信号的传输,通过CySmart软件,结合USB DONGLE,整个BLE的通信过程尽在掌控!
接下来让我们通过BLE向设备写入一个数值,控制RGB LED的变化,先选中该特性,在右侧的窗口中写入所图所示的值。
注意操作步骤,先要选中RGB LED特性,注意前面的配置过程,一共是4个字节,其中第一个字节表示亮度值,后面分别代表RGB的分量值。
这是写入新值后开发套件上的实际运行效果。