【esp32-s3】11. 蓝牙配网

本文介绍了如何使用ESP32-S3实现蓝牙配网,详细步骤包括使用预装应用、下载示例代码、编译和测试,重点讲解了如何修改蓝牙设备名。通过蓝牙将WiFi配置发送至ESP32,实现自动连接。

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

1 前言

使用esp32 s3进行了蓝牙配网。

2 介绍

蓝牙配网:通过蓝牙将wifi配置信息传给esp32。

手机通过蓝牙配网app,检索到esp蓝牙信号,连接。
然后通过app传输wifi名称和密码,交给esp32。
esp32接收到wifi配置,进行wifi连接。

具体流程参见:ESP32学习笔记(36)——BluFi(蓝牙配网)接口使用

3 前期准备

3.1 配网app

蓝牙配网应用:https://www.espressif.com/zh-hans/support/download/apps
这里包含了ios和android,看需求安装。

3.2 代码

https://gitee.com/EspressifSystems/esp-idf/tree/master/examples/bluetooth/blufi
直接下载该代码。

编译命令
idf.py set-target esp32s3
idf.py menuconfig
idf.py build
idf.py -p COM14 monitor
idf.py -p COM14 flash

4 测试结果

在这里插入图片描述
配网成功后,在app中点击自定义,输入aaa,则窗口中可以看到616161
在这里插入图片描述

5 修改蓝牙名称

手机检索到的蓝牙名称默认是BLUFI_DEVICE,这个是定义在源码中的,还不是example中可以修改的。

esp-idf\components\bt\common\btc\profile\esp\blufi\include\esp_blufi.h

#define BLUFI_APP_UUID      0xFFFF
#define BLUFI_DEVICE_NAME            "BLUFI_DEVICE"

这里修改成其他的就可以了。

//components\bt\common\btc\profile\esp\blufi\bluedroid_host\esp_blufi.c
void esp_blufi_adv_start(void)
{
    esp_ble_gap_set_device_name(BLUFI_DEVICE_NAME);
    esp_ble_gap_config_adv_data(&blufi_adv_data);
}
### 使用 ESP32-S3 与 ESP-IDF 实现蓝牙 #### 示例代码结构说明 ESP-IDF 提供了一个完整的框架来支持蓝牙功能的开发。对于 ESP32-S3 的经典蓝牙应用,可以参考 `a2dp_sink` 示例中的文件夹结构[^1]。该示例展示了如何置和初始化蓝牙模块。 以下是典型的项目目录结构: ``` examples/ └── bluetooth/ └── bluedroid/ └── classic_bt/ └── a2dp_sink/ ├── main.c ├── CMakeLists.txt └── README.md ``` #### 置 RTC 时钟源 为了确保硬件正常运行,在使用 ESP32-S3 开发蓝牙应用程序之前,需要正确设置 RTC 时钟源。推荐使用外部 32 kHz 晶体作为 RTC 时钟源[^3]。这可以通过菜单置工具完成: ```bash idf.py menuconfig ``` 进入 **Component config -> ESP32-specific/ESP32C3-specific/ESP32S3-specific -> RTC clock source** 并选择合适的选项。 #### 创建并编译蓝牙示例工程 要创建一个新的蓝牙示例工程并将它复制到指定位置,可按照以下命令操作[^2]: ```bash cd ~/esp cp -r ~/esp/esp-idf/examples/bluetooth/hci/controller_hci_uart_esp32c3_and_esp32s3 ~/esp/my_bluetooth_project ``` 随后切换至新项目的根目录,并执行构建过程: ```bash cd ~/esp/my_bluetooth_project idf.py build ``` #### 烧录固件到目标设备 当编译完成后,通过串口将生成的二进制文件烧录到 ESP32-S3 板上[^4]。如果只有一个设备连接,则可以直接运行如下命令;如果有多个设备则需指明具体端口。 单设备情况: ```bash idf.py flash ``` 多设备情况下添加 `-p` 参数指定串口号 (例如 `/dev/ttyUSB0`) : ```bash idf.py -p /dev/ttyUSB0 [-b BAUD_RATE] flash ``` #### 蓝牙核心逻辑 下面是一个简单的蓝牙流程概述以及部分伪代码展示。此代码片段用于演示基本概念而非完整实现。 ```c #include "bt_app_core.h" #include "esp_bt_main.h" void initialize_bluetooth() { esp_err_t ret = esp_bt_controller_init(esp_bt_ctrl_config); // 初始化控制器 ^[5] if (ret != ESP_OK) { printf("Error initializing Bluetooth controller\n"); return; } ret = esp_bluedroid_init(); // 初始化 Bluedroid 堆栈^[6] if (ret != ESP_OK) { printf("Error initializing Bluedroid stack\n"); return; } } void start_advertising() { uint8_t raw_adv_data[] = { /* 设置广播数据 */ }; esp_ble_gap_set_device_name("My_ESP32_S3"); // 设备名称^[7] esp_ble_gap_config_adv_data_raw(raw_adv_data, sizeof(raw_adv_data)); // 置广告包^[8] } ``` 上述代码实现了蓝牙模块的基础启动和服务发现机制。实际部署过程中还需要处理事件回调函数以及其他高级特性。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值