发帖
0 0 0

【WB2蓝牙学习-1】蓝牙数据广播

大锤子
金牌会员

6

主题

22

回帖

2484

积分

金牌会员

积分
2484
Ai-WB2系列 58 0 7 天前
[i=s] 本帖最后由 大锤子 于 2025-4-12 04:15 编辑 [/i]

摘要

在学习了B站Up主“我是鹏老师"分享的蓝牙教程并结合其他各种技术分享和deepseek的帮助下尝试在WB2-32S-KIT开发板上验证功能加深印象。 我是鹏老师的关于蓝牙的课程非常适合入门蓝牙开发。没有过多的涉及到底层枯燥的协议栈。采用边讲边实验的方式,更容易让初学者上手;文末是地址;

准备

1、WB2-32S-KIT 开发板,具有蓝牙Wifi功能;

2、电脑或者手机安装蓝牙调试助手,我安装的是nRF Connect MAC版本的;

3、USB转串口工具,用来连接开发板上的另一组串口;

实验步骤

1、首先将WB2通过USB连接到电脑,然后打开终端查看当前连接的串口:

image.png其中 /dev/tty.wchusbserial14240 就是用于日志输出和烧录的;

另一个则是USB转串口工具的,过会需要使用;

2、使用VSCode打开下载的WB2的SDK,/Ai-Thinker-WB2/make_scripts_riscv 目录下project.mk 中烧录使用的串口为/dev/tty.wchusbserial14240:

image.png

这里修改的原因已经在开箱闪灯的文章中介绍过了,这里就不多说了。

3、在终端cd到 /Ai-Thinker-WB2/applications/bluetooth/ble_slave 目录下,执行make -j 编译:

image.png

4、编译成功后,执行 make flash

image.png

看到提示按下复位键:

image.png

看到all success 烧录成功;

5、使用蓝牙调试工具开启扫描能看到名称为 Ai-thinker 的蓝牙设备:

image.png

点击链接后就可以看到蓝牙设备提供的服务和特性;

image.png

实验分析

程序分析

主程序

image.png

从主程序可以看出,首先进行了系统初始化,然后打印日志信息。接着创建了一个FreeRTOS任务和一个proc_main_entry 任务,个人感觉这个名字随便起的;

串口任务

串口任务很简单,初始化一个串口并且不断的监听接受到的数据,然后通过蓝牙发送出去,注意这里发送使用的Api是:notify;

image.png

蓝牙入口任务

这个任务执行完成后就删除了,应该仅仅是进行了蓝牙的启动:

image.png

进一步查看apps_ble_start() 函数的实现:

image.png

大概流程是:

蓝牙栈启动,就是底层的一些硬件启动函数;

蓝牙从几机模式初始化;

注册了两个回调函数;

其中蓝牙底层协议栈的启动流程就不看了, 以后有机会再学习;

这里重点看下ble_slave_init() 函数的实现:

image.png

前边的两个函数分别注册了链接成功的回调函数和断开链接的回调函数;

ble_server_init() 函数用创建和注册服务和特性;

ble_salve_adv() 函数则是发出广播,等待链接;

程序验证

验证广播数据

image.png

上图中salve_adv 就是蓝广播数据,

第一行广播数据是:

#define BT_DATA_FLAGS 0x01 /* AD flags */

值是:

#define BT_LE_AD_GENERAL 0x02 /* General Discoverable */

#define BT_LE_AD_NO_BREDR 0x04 /* BR/EDR not supported */

从上文的截图中也能看到,设备是可链接的;

第二行是设备的名称:

#define BT_DATA_NAME_COMPLETE 0x09 /* Complete name */

名称就是:

#define ble_slave_name "Ai-thinker"

验证服务和特性uuid

代码中的uuid是这样定义的:

image.png

通过上边的截图也能看到uuid是一致的;

链接和断开链接回调函数验证:

image.png

断开链接串口打印信息:

image.png

重新链接串口打印信息:

image.png

验证串口发送消息

串口发送数据:

image.png

蓝牙助手收到:

image.png

这次就先学到这里。下次继续进一步分享。

最后附上 我是鹏老师的蓝牙教程链接,免费的:

──── 0人觉得很赞 ────

使用道具 举报

您需要登录后才可以回帖 立即登录
高级模式
返回
统计信息
  • 会员数: 28477 个
  • 话题数: 40589 篇