原创

STM32+ESP32-C3 ble蓝牙开发

温馨提示:
本文最后更新于 2025年12月12日,已超过 73 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

一、蓝牙的基本介绍

蓝牙协议包括两种技术:BRBasic Rate)和LELow Energy)。

这两种技术都包括搜索(discovery)管理、连接(connection)管理等机制,但它们是相互独立的,不能互通的技术!

1)经典蓝牙(BR/EDRAMP

BRBasic Rate,可以包括可选的EDREnhanced Data Rate)技术,以及AMPAlternate MAC and PHY layer extension)。

BR:最早期的蓝牙技术,速度只能达到721.2Kbps。·EDR:随着技术的提升,使用EDR技术的蓝牙,理论速率可以达到2.1Mbps

AMP:使用AMP技术的蓝牙,理论速率可以达到54Mbps。蓝牙自身的物理层和AMP技术差异明显,BR/EDRAMP是不能同时使用的。简单的说,就是:BREDR是可以同时存在的,但BR/EDRAMP只能二选一。

2)低功耗蓝牙(BLE

上面所讲的BR技术的进化路线,就是传输速率的加快、加快、再加快。但能量是守恒的,你想传得更快,代价就是消耗更多的能量。而有很多的应用场景,并不关心传输速率,反而非常关心功耗。这就是Bluetooth LE(称作蓝牙低功耗)产生的背景。

低功耗蓝牙与经典蓝牙使用相同的2.4GHz无线电频率,因此双模设备可以共享同一个天线。低功耗蓝牙使用的调制系统更简单。BLE技术相比BR技术,差异非常大,或者说就是两种不同的技术,凑巧都加一个“蓝牙”的前缀而已。目前BLE主要广泛应用于IoTInternet of Things:物联网)产品领域。


二、固件烧录

可以参考上篇关于wifi的配置内容,不在重复。

三、指令发送

1. 蓝牙初始化

  • 指令:AT+BLEINIT=2
  • 作用:初始化ESP32的蓝牙功能,设置为服务端角色(server role)

2. 创建GATT服务

  • 指令:AT+BLEGATTSSRVCRE
  • 作用:在服务端创建GATT服务

3. 启动GATT服务

  • 指令:AT+BLEGATTSSRVSTART
  • 作用:启动已创建的GATT服务

4. 设置设备名称

  • 指令:AT+BLENAME="ljz-bt"
  • 作用:设置蓝牙设备名称为"ljz-bt"

5. 设置广播参数

  • 指令:AT+BLEADVPARAM=50,50,0,0,7,0,,
  • 作用:配置蓝牙广播参数,包括广播间隔、类型、地址类型和信道等

6. 设置广播数据

  • 指令:AT+BLEADVDATAEX="ljz-bt","A123","0102030405",1
  • 作用:设置广播数据,包括设备名称、UUID和服务数据等

7. 开始广播

  • 指令:AT+BLEADVSTART
  • 作用:启动蓝牙广播,使其他设备能够发现本设备

8. 配置SPP透传

  • 指令:AT+BLESPPCFG=1,1,7,1,5
  • 作用:配置蓝牙串口透传模式,指定用于读写的特征值

9. 设置系统消息

  • 指令:AT+SYSMSG=4
  • 作用:启用系统消息提示,在透传模式下状态改变时会打印提示信息

10. 启动透传模式

  • 指令:AT+BLESPP
  • 作用:当有客户端连接时,启动蓝牙串口透传模式进行数据传输

11. 设置特征值

  • 指令格式:AT+BLECHARSETVAL=<conn_index>,<srv_index>,<char_index>,<value>
  • 作用:设置特定连接、服务和特征的值,用于向客户端发送通知或响应读请求

四、调试

调试的话,在手机端安装一个蓝牙助手,搜索后可以看到设备的蓝牙信息。

接收蓝牙助手发送的数据,设备将接收到的数据进行返回。

正文到此结束