ESP32 使用BLE蓝牙透传

本文介绍了如何在ESP32模块上通过AT指令模式配置BLE,从连接硬件、烧录固件到设置名称和广播,然后指导读者搜索并连接蓝牙,选择特定UUID,并进行服务ID透传测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ESP32–AT模式使用BLE做透传

这里笔者用的APP是这个,各大应用商店应该都有。

###                                          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b0iqL6aL-1637565852328)(C:\Users\desktop\AppData\Roaming\Typora\typora-user-images\image-20211122151046806.png)]

1.按照手册连接硬件

​ 笔者使用的是安信可做的ESP32-S模组,默认TX-RX按照手册如下,默认波特率115200

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1zLXcuSO-1637565852332)(C:\Users\desktop\AppData\Roaming\Typora\typora-user-images\image-20211122150302652.png)]

Uart0是下载固件的串口, Uart1是负责调试AT指令的串口,(下载固件等等的详细教学,笔者后面会针对于ESP32做一款开发板,并出手册和视频,大家可以多关注,B站:冒蓝火的哒哒哒哒王),按照图中管脚连接,可用 AT+回车测试 AT模式是否OK!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sLkfUEwQ-1637565852335)(C:\Users\desktop\AppData\Roaming\Typora\typora-user-images\image-20211122150710259.png)]

2.烧录AT指令固件后,按照以下命令逐条发送:

 AT+BLEINIT=2     //初始化BLE为server
 AT+BLEGATTSSRVCRE    //GATTS 创建服务
 AT+BLEGATTSSRVSTART   //GATTS 开启服务
 AT+BLENAME="AiThinker"   //设置BLE 设备名称      
 AT+BLEADVDATA="0201060A0941695468696E6B6572"   //广播设备名称  
 AT+BLEADVSTART        //开启BLE广播

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HkP2eblw-1637565852338)(C:\Users\desktop\AppData\Roaming\Typora\typora-user-images\image-20211122150757668.png)]

发送完上述指令后正常就可以开启广播来连接蓝牙了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F1xZWiSn-1637565852339)(C:\Users\desktop\AppData\Roaming\Typora\typora-user-images\image-20211122151359661.png)]

3.搜索并连接蓝牙,选择服务UUID

选择Unknown Service 选项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Z5GoLCd-1637565852340)(C:\Users\desktop\AppData\Roaming\Typora\typora-user-images\image-20211122151447514.png)]

蓝牙设备里 发送接口UUID为:0000C304-0000-1000-8000-00805F9B34FB

蓝牙设备里 接收接口UUID为:0000C305-0000-1000-8000-00805F9B34FB

4.打开服务ID进行透传测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kDblGuom-1637565852342)(C:\Users\desktop\AppData\Roaming\Typora\typora-user-images\image-20211122151713317.png)]

点击功能后面的箭头就可以进入发送或者接收模式, AT里默认使用的是串口1,这里发送的直接去刚才串口助手测试即可。

点击功能后面的箭头就可以进入发送或者接收模式, AT里默认使用的是串口1,这里发送的直接去刚才串口助手测试即可。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VaHYQpuF-1637565852344)(C:\Users\desktop\AppData\Roaming\Typora\typora-user-images\image-20211122151722875.png)]

v2.0(2019.03.04.1) 提要: 手机连接AP (JF32Wifi_Config),密码默认88888888,打开浏览器,输入http://192.168.4.1即可进入Webconfig页面,WebConfig鉴权默认账户admin,密码88888888,进入后可自行修改; 版本特性: 1.支持BigIoT(贝壳物联)平台接入,在Network setting中选中BigIoT即可,目前只支持它的TCP模式,因此只能使用8181,8282,8585这三个TCP端口,三个端口的区别请查看BigIoT的官方文档 https://www.bigiot.net/help/1.html; 接着,填写好Cloud server setting中的Device ID与API Key并保存,启动后将自动连接到BigIoT的服务器,无论你选用是哪个端口,本固件都将每隔50秒发送一次心跳信息到服务器中,让设备自动保持连接; 2. 本固件的BigIoT模式已做好了透传,发送到ESP32模块串口的数据将直接透传到BigIoT服务器,相反BigIoT传回来的数据会直接透传到ESP32模块的串口,用户按BigIoT的官方文档,对数据进行解析即可; 3. 根据ESP32的文档,这个版本固件修改了SPIFFS格式化的时长,从20秒改成官方推荐的30秒,如果是新买的模块,首次使用的时候可能要多等一会儿,但更好地保证了格式化SPIFFS分区的正确性; 4. 更新了SDK的版本到1.0.1 5. 还是老话,自用/学习可以,商用请联系开发者,尊重劳动成果人人有责; 后话: 本来还想支持Blinker平台的,但找不到它的通讯协议文档,只找到了它的库,它的库直接集成到我的代码中时,程序无法正常工作(崩溃),如有相关技术资料,可以告诉我,我会尝试集成的。
### ESP32-S3 蓝牙串口透传实现 ESP32-S3 是一款支持 Wi-Fi 和 Bluetooth 5 (LE) 的高性能微控制器。为了实现在该平台上进行蓝牙串口透传的功能,可以利用其内置的 BLE UART 服务来完成这一目标。 #### 初始化蓝牙模块并启动BLE UART服务 通过初始化蓝牙协议栈以及配置必要的参数,能够使能设备作为GATT服务器运行,并提供UART服务给客户端连接[^1]。下面是一个简单的C++代码片段用于展示如何创建这样的应用: ```cpp #include "ble_uart.h" #include <esp_bt.h> #include <esp_gap_ble_api.h> #include <esp_gatts_api.h> // 定义UUIDs和其他常量... #define SERVICE_UUID 0x1234 #define CHARACTERISTIC_uuid 0x5678 void setup() { Serial.begin(115200); // 开启经典蓝牙和低功耗蓝牙子系统 esp_err_t ret = esp_bluedroid_init(); if (ret != ESP_OK){ Serial.printf("Bluetooth init failed\n"); return; } ret = esp_bluedroid_enable(); if (ret != ESP_OK){ Serial.printf("Bluetooth enable failed\n"); return; } bleuart::init(SERVICE_UUID, CHARACTERISTIC_uuid); // 使用自定义函数初始化BLE UART } void loop(){ delay(1000); } ``` 此段代码展示了基本框架,在实际项目中可能需要更详细的错误处理逻辑和服务特性描述符注册过程。对于`ble_uart.h`头文件,则包含了所有关于建立BLE UART会话所需的方法声明及其内部工作原理[^2]。 #### 配置BLE UART特征值读写回调事件 当远程设备尝试访问本地提供的特定属性时(例如发送消息),应用程序应当监听这些交互动作并通过适当的方式作出响应。这通常涉及到编写一系列针对不同类型的GATT操作而设计好的回调处理器。 ```cpp static void gattc_event_handler(esp_gatt_if_t gattc_if, esp_gatt_conn_id_t conn_id, esp_gatt_evt_t event, esp_ble_gattc_cb_param_t *param) { switch(event){ case ESP_GATTC_WRITE_EVT:{ handle_rx_data(param->write.value,param->write.len); // 接收来自远端的数据包 break; } default: break; } } ``` 上述例子仅涵盖了接收数据部分;同样重要的是构建一个机制用来向配对成功的伙伴传递信息流——即所谓的“发射路径”。这部分可以通过调用API接口如 `esp_ble_gattc_write_char()` 来达成目的[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值