乐鑫Esp32蓝牙透传模式配置教程

ESP32 与手机建立 SPP 连接,以及在 UART-Bluetooth LE 透传模式下传输数据

该示例展示了如何在 ESP32 开发板(仅作为低功耗蓝牙服务器角色)和手机(仅作为低功耗蓝牙客户端角色)之间建立 SPP 连接,以及如何在 UART-Bluetooth LE 透传模式下传输数据。

重要

步骤中以 ESP32 Bluetooth LE 服务端 开头的操作只需要在 ESP32 Bluetooth LE 服务端执行即可,而以 Bluetooth LE 客户端 开头的操作只需要在手机的蓝牙调试助手中执行即可。

在手机端下载 Bluetooth LE 调试助手,例如 LightBlue。

初始化 Bluetooth LE 功能

ESP32 Bluetooth LE 服务端:

命令:
AT+BLEINIT=2
响应:
OK

这里必须是服务端,客户端无法发送广播;

创建和启动服务

ESP32 Bluetooth LE 服务端创建服务

命令:
AT+BLEGATTSSRVCRE
响应:
OK

ESP32 Bluetooth LE 服务端开启服务

命令:
AT+BLEGATTSSRVSTART
响应:
OK

获取 MAC 地址

ESP32 Bluetooth LE 服务端获取其 MAC 地址

命令:
AT+BLEADDR?
响应:
+BLEADDR:"24:0a:c4:d6:e4:46"
OK

说明:您查询到的地址可能与上述响应中的不同,请记住您的地址,下面的步骤中会用到。

设置广播参数和数据

ESP32 Bluetooth LE 服务端设置广播参数

命令:
AT+BLEADVPARAM=50,50,0,0,7,0,,
响应:
OK

ESP32 Bluetooth LE 服务端设置广播数据

命令:
方法一(直接赋值):AT+BLEADVDATA="0201060A09457370726573736966030302A0"

方法二(自动配置):AT+BLEADVDATAEX="LaserPower","A002","0102030405",1
响应:
OK

参数解释:

  • 方法一:

    1. 020106:广播标志(Flags)
      • 02:长度
      • 01:类型(Flags)
      • 06:数据(表示支持BR/EDR和LE两种模式,但LE不可连接)
    2. 0A09457370726573736966:广播名称(Complete Local Name)
      • 0A:长度
      • 09:类型(Complete Local Name)
      • 457370726573736966:数据(ASCII码形式的字符串 “Espressif”)
    3. 030302A0:服务UUID(Complete List of 16-bit Service Class UUIDs)
      • 03:长度
      • 03:类型(Complete List of 16-bit Service Class UUIDs)
      • 02A0:数据(UUID “02A0”)
  • 方法二:

    1. “LaserPower”:广播名称

      • 自动将字符串 “LaserPower” 作为设备的广播名称。
    2. “A002”:服务UUID

      • 将 UUID “A002” 作为广播包中的服务UUID。
    3. “0102030405”:制造商自定义数据

      • 添加制造商自定义数据 “0102030405” 到广播包。
    4. 1:广播类型

      • 设定广播类型(例如,1 表示通用可连接广告)。

ESP32 Bluetooth LE 服务端开始广播

命令:
AT+BLEADVSTART
响应:
OK

创建 Bluetooth LE 连接

在手机打开 LightBlue 应用程序,并打开 SCAN 开始扫描,找到 ESP32 Bluetooth LE 服务端的 MAC 地址,点击 CONNECT 进行连接。此时 ESP32 端应该会打印类似于 +BLECONN:0,"60:51:42:fe:98:aa" 的日志,这表示已经建立了 Bluetooth LE 连接。

查询和发现服务和特征

ESP32 Bluetooth LE 服务端查询服务

命令:
AT+BLEGATTSSRV?
响应:
+BLEGATTSSRV:1,1,0xA002,1
+BLEGATTSSRV:2,1,0xA003,1
OK

ESP32 Bluetooth LE 服务端发现特征

命令:
AT+BLEGATTSCHAR?
响应:
+BLEGATTSCHAR:"char",1,1,0xC300,0x02
+BLEGATTSCHAR:"desc",1,1,1,0x2901
+BLEGATTSCHAR:"char",1,2,0xC301,0x02
+BLEGATTSCHAR:"desc",1,2,1,0x2901
+BLEGATTSCHAR:"char",1,3,0xC302,0x08
+BLEGATTSCHAR:"desc",1,3,1,0x2901
+BLEGATTSCHAR:"char",1,4,0xC303,0x04
+BLEGATTSCHAR:"desc",1,4,1,0x2901
+BLEGATTSCHAR:"char",1,5,0xC304,0x08
+BLEGATTSCHAR:"char",1,6,0xC305,0x10
+BLEGATTSCHAR:"desc",1,6,1,0x2902
+BLEGATTSCHAR:"char",1,7,0xC306,0x20
+BLEGATTSCHAR:"desc",1,7,1,0x2902
+BLEGATTSCHAR:"char",1,8,0xC307,0x02
+BLEGATTSCHAR:"desc",1,8,1,0x2901
+BLEGATTSCHAR:"char",2,1,0xC400,0x02
+BLEGATTSCHAR:"desc",2,1,1,0x2901
+BLEGATTSCHAR:"char",2,2,0xC401,0x02
+BLEGATTSCHAR:"desc",2,2,1,0x2901
OK

Bluetooth LE 客户端发现特征

此时在手机 LightBlue 客户端选择点击 Properties 为 NOTIFY 或者 INDICATE 的服务特征(这里 ESP-AT 默认 Properties 为 NOTIFY 或者 INDICATE 的服务特征是 0xC305 和 0xC306),开始侦听 Properties 为 NOTIFY 或者 INDICATE 的服务特征。

配置和使能 Bluetooth LE SPP

ESP32 Bluetooth LE 服务端配置 Bluetooth LE SPP

选择支持 notify 或者 indicate 的 characteristic 作为写通道发送数据,选择支持写操作的 characteristic 作为读通道接收数据。

命令:
AT+BLESPPCFG=1,1,6,1,3
响应:
OK

ESP32 Bluetooth LE 服务端使能 Bluetooth LE SPP

命令:
AT+BLESPP
响应:
OK

上述响应表示 AT 已经进入 Bluetooth LE SPP 模式,可以进行数据的发送和接收。

数据传输

Bluetooth LE 客户端发送数据

在 LightBlue 客户端选择 0xC3042服务特征值发送数据 test 给 ESP32 Bluetooth LE 服务端,此时 ESP32 Bluetooth LE 服务端可以收到 test

ESP32 Bluetooth LE 服务端发送数据

在 ESP32 Bluetooth LE 服务端直接发送 test,此时 LightBlue 客户端可以收到 test

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值