今天来分享一下蓝牙相关的开发,从入门的开始,先来讲一下手机端和开发板的蓝牙通讯。
大体流程是:手机发送命令到开发板,开发板接到命令之后做出响应,给发送端通知或者传递一下数据信息,内容涉及到一个交互的过程,我计划先录制个视频来演示整个过程。
演示视频放在“哔哩哔哩”上了,大家可以点击 演示视频 看一下效果,是自己想要的效果就继续往下看。
把接收到的数以"Hello %s!"格式进行处理,通知到蓝牙客户端同时显示在屏幕上。
代码很简单,可能大部分玩家也都写了同样的代码,但是手机端总是收不到开发板通知的信息,要解释这个问题就需要了解一下蓝牙。文中如果讲的不对,还请指点纠正。
提到蓝牙,Service和Characteristic 是必须要简单了解一下的
Service是服务,Characteristic是特征值。蓝牙里面有多个Service,一个Service里面又包括多个Characteristic,具体的关系可以看图
图中画的比较少,实际上一个蓝牙协议里面包含的Service和Characteristic是比较多的 ,这时候你可能会问,这么多的同名属性用什么来区分呢?答案就是UUID,每个Service或者Characteristic都有一个 128 bit 的UUID来标识。Service可以理解为一个功能集合,而Characteristic比较重要,蓝牙设备正是通过Characteristic来进行设备间的交互的(如读、写、订阅等操作)。
这段描述摘自“简书”一位大佬在《蓝牙BLE(BlueTooth BLE)入门及爬坑指南》一文中对蓝牙的描述。
看完之后,会不会明了一下。蓝牙通讯是通过一个一个“Characteristic”(特征码)来实现一个一个“Service”功能集合,所以这个“Characteristic”(特征码)必须选择正确了,才能正常的发送数据,接收数据。
下面截图时我的演示实例中的“Characteristic”(特征码)选择。
看到这儿大伙明白了一些了,之前开发板收不到数据,或者手机蓝牙收不到通知其实都是这个UUID配置的不正确导致的,那又有个问题来了,为什么要这样配置呢?
2、透传TX特征的UUID,其实就是开发板通知手机端用的Characteristic,要看三部分
3、透传RX特征的UUID,手机给模块发送数据用的Characteristic
今天的开发板的蓝牙通讯已经结束了。大家需要演示固件或者演示源码联系我,后面有需要我会把源码开放在github或者码云,供大家体验。
之前漏掉了 sp_gatt_msg_handler 的调整,下面补上【2020-06-29】
图片是修改后的,增加了
作者: 物联网爱好者, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-3914038.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论