尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ESP32 BLE GAP从机端广播数据实战:自定义制造商数据与扫描响应包配置
1. ESP32 BLE广播基础概念解析第一次接触ESP32的BLE功能时我被广播这个概念困扰了很久。简单来说BLE广播就像是一个人在人群中大声喊出自己的信息让周围的人都能听到。ESP32作为从机设备时就是通过这种方式让周围的手机、平板等主机设备发现自己的存在。广播数据包和扫描响应包是BLE通信中的两个重要概念。广播数据包是设备主动发送的信息而扫描响应包则是当主机设备发出扫描请求时从机设备才会回复的额外信息。这就好比在展会上每个展台都会主动播放宣传片广播数据当有观众驻足询问时工作人员才会提供更详细的资料扫描响应。ESP32的广播功能通过esp_ble_adv_data_t结构体来配置这个结构体包含了丰富的信息字段p_manufacturer_data制造商自定义数据set_scan_rsp标识是否为扫描响应包include_name是否包含设备名称appearance设备外观类型service_uuid_len服务UUID长度在实际项目中我经常使用制造商数据字段来传输自定义信息。比如在智能家居系统中可以用它来标识设备类型和状态这样手机APP扫描到设备后就能立即知道这是个智能灯泡还是温湿度传感器。2. 自定义制造商数据实战配置制造商数据字段是BLE广播中最灵活的部分我们可以完全自定义其中的内容。下面我通过一个实际案例来演示如何配置这个字段。假设我们要开发一个环境监测节点需要通过广播发送温度和湿度数据。首先需要定义数据格式typedef struct { uint8_t device_type; // 设备类型 uint8_t temp; // 温度值 uint8_t humidity; // 湿度值 uint8_t battery; // 电池电量 } env_sensor_data_t;然后初始化这个结构体并配置广播参数env_sensor_data_t sensor_data { .device_type 0x01, // 环境传感器 .temp 25, // 25℃ .humidity 60, // 60% .battery 90 // 90% }; static esp_ble_adv_data_t adv_data { .manufacturer_len sizeof(sensor_data), .p_manufacturer_data (uint8_t*)sensor_data, .flag (ESP_BLE_ADV_FLAG_GEN_DISC | ESP_BLE_ADV_FLAG_BREDR_NOT_SPT), };这里有几个需要注意的点制造商数据长度不能超过31字节BLE广播包最大长度数据格式需要前后端统一否则解析会出错广播间隔要合理设置太频繁会耗电太稀疏会影响响应速度我曾经在一个项目中踩过坑没有考虑字节对齐问题导致手机端解析数据时出现错位。后来通过添加数据头标识和校验码解决了这个问题。3. 扫描响应包的高级应用扫描响应包是很多开发者容易忽视的功能但它能带来更好的用户体验。广播数据包由于长度限制通常只包含最基本的信息而扫描响应包可以在设备被扫描时提供更多详细信息。配置扫描响应包的关键是设置set_scan_rsp为truestatic uint8_t detailed_info[] { 0x01, 0x02, 0x03, 0x04 // 详细设备信息 }; static esp_ble_adv_data_t srsp_data { .set_scan_rsp true, .manufacturer_len sizeof(detailed_info), .p_manufacturer_data detailed_info, };在实际应用中我发现扫描响应包特别适合以下场景设备需要广播更多信息但受限于广播包长度某些信息不需要持续广播只在被扫描时提供需要根据不同的扫描设备返回不同的信息一个实用的技巧是在广播包中放置设备基本标识在扫描响应包中放置动态数据。这样既能减少广播数据量又能提供丰富信息。4. 完整示例与调试技巧下面给出一个完整的广播配置示例包含广播数据和扫描响应数据#include esp_gap_ble_api.h // 广播参数配置 static esp_ble_adv_params_t ble_adv_params { .adv_int_min 0x20, .adv_int_max 0x40, .adv_type ADV_TYPE_IND, .own_addr_type BLE_ADDR_TYPE_PUBLIC, .channel_map ADV_CHNL_ALL, .adv_filter_policy ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY, }; // 广播数据 static uint8_t adv_manufacturer_data[] {0x11, 0x22, 0x33}; static esp_ble_adv_data_t adv_data { .set_scan_rsp false, .include_name true, .manufacturer_len sizeof(adv_manufacturer_data), .p_manufacturer_data adv_manufacturer_data, }; // 扫描响应数据 static uint8_t scan_rsp_data[] {0x44, 0x55, 0x66}; static esp_ble_adv_data_t srsp_data { .set_scan_rsp true, .manufacturer_len sizeof(scan_rsp_data), .p_manufacturer_data scan_rsp_data, }; void start_adv() { esp_ble_gap_config_adv_data(adv_data); esp_ble_gap_config_adv_data(srsp_data); esp_ble_gap_start_advertising(ble_adv_params); }调试BLE广播时我推荐使用以下工具nRF Connect功能强大的BLE调试APP可以查看详细的广播数据Wireshark BLE嗅探器用于深度分析BLE通信过程ESP32内置日志通过ESP_LOGI输出调试信息常见问题排查经验如果设备无法被发现检查广播类型和过滤策略如果数据解析错误确认字节顺序和数据格式如果连接不稳定调整广播间隔参数记得在开发过程中广播参数可能需要多次调整才能达到最佳效果。我在一个智能门锁项目中花了三天时间才找到最合适的广播间隔和功率组合。
RELATED

相关推荐

AI科学家代理:面向真实AI研究的LLM Agent工作流

AI科学家代理:面向真实AI研究的LLM Agent工作流

1. 项目概述:这不是一次普通的技术演示,而是一场对AI科研范式边界的实地勘探“TAI #113; Sakana’s AI Scientist — Are LLM Agents Ready To Assist AI Research?” 这个标题里藏着三重现实张力:TAI(The AI Conference&#xf…

📅 2026/9/7 15:09:38
从Host到Device:解锁RK3399 Linux板卡的USB OTG U盘模拟实战

从Host到Device:解锁RK3399 Linux板卡的USB OTG U盘模拟实战

1. RK3399 USB OTG功能基础解析 第一次接触RK3399开发板时,我发现这个六核处理器不仅性能强悍,它的USB OTG功能更是隐藏着不少实用玩法。USB OTG全称USB On-The-Go,简单理解就是让设备既能当主机(Host)也能当设备&…

📅 2026/9/26 17:44:37
从网格划分到能量守恒:Hypermesh与LS-DYNA在弹体侵彻仿真中的全流程实战解析

从网格划分到能量守恒:Hypermesh与LS-DYNA在弹体侵彻仿真中的全流程实战解析

1. 从零开始构建弹体侵彻仿真模型 第一次接触弹体侵彻仿真时,我被各种专业术语搞得晕头转向。经过几个实际项目的磨练,终于摸清了Hypermesh和LS-DYNA这对黄金组合的使用门道。咱们就从最基础的模型准备说起,手把手带你走完整个流程。 弹体侵…

📅 2026/9/27 2:16:01
MORE NEWS

更多资讯

📰

5个实战案例拆解:搞定网络营销课程教案与备案避坑指南

5个实战案例拆解:搞定网络营销课程教案与备案避坑指南 备案流程一头雾水,导致项目延期甚至上线失败,这是很多刚入行的后端开发者或独立站长最常遇到的噩梦。我见过太多人花了一周时间研究《网络营销课程教案》的编写逻辑,结果因为不懂ICP备案的跨省转…

📰

网站主题怎么写?3个核心维度解决没人访问难题

网站主题怎么写?3个核心维度解决没人访问难题 网站做好了没人访问,往往是主题方向跑偏了。很多老板花几万块做站,源码下载回来直接套用模板,结果上线三个月点击量不过百。别急着怪SEO没做好,先问问自己:网站主题到底怎么定? 一、…

📰

3个建站软件免费试用避坑指南:模板丑怎么办

3个建站软件免费试用避坑指南:模板丑怎么办 模板网站太丑不够用,这是很多市场人在试用建站软件时的第一反应。你花了半天时间选了个“高大上”的模板,结果一放内容,字体乱跑、图片拉伸变形、手机端直接崩盘。更坑的是,不少免费试用版限制导出源码,或者…

📰

聊城制作手机网站速查手册:不会代码也能搞定的报价与避坑指南

聊城制作手机网站速查手册:不会代码也能搞定的报价与避坑指南 在聊城开公司或做生意,很多老板手里有客户资源,但缺个像样的“电子名片”。想做个手机网站,一搜全是“源码下载”,点开一看全是乱码,吓得赶紧关掉。别慌,你不是唯一被这个坑吓到的人。…

📰

LLM、Agent、Skills、MCP,AI四件套到底是什么关系?TaoToken统一Key接入实战拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

美术馆网站网页设计方案与wordpress更换域名301对比

美术馆网站设计方案与定制开发多少钱:一个真实项目复盘 很多客户拿着手机里存的设计图来找我,开口第一句就是:“我想给咱们美术馆做个网站,但我完全不会代码,这到底要花多少钱?”这种场景我见过太多次了。大家普遍觉得网站是个“玄学”,价格从几千到几…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬