新闻详情

新闻详情

首页 / 资讯中心 / 详情

2.2 示例代码-蓝牙Beacon

发布时间:2026/9/30 11:23:37来源:尧图网络
2.2 示例代码-蓝牙Beacon
目录可收获一、详细分析广播数据1.1 图一1.2 图二1.3 详细分析广播数据1.4 补充二、学习示例代码可收获1.BLE广播的应用:蓝牙标签 2.使用nrf connect 查看广播信息详解广播数据 3.讲解代码了解 Assigned_Numbers 4.掌握使用 NimBLE 主机层协议栈构建Beacon源自IDF_5.2.6\v5.2.6\esp-idf\examples\bluetooth\ble_get_started\nimble\NimBLE_Beacon蓝牙标签应用室内定位、自动打卡、自动跳转网站一、详细分析广播数据1.1 图一图一可以直观的看出很多信息这些信息来源于广播数据是根据广播数据整理后便于我们查看的1.2 图二点击RAW 会展示原始的广播数据我们重点分析1.3 详细分析广播数据在前面04章节有提及过广播数据格式如下序号名称字节数备注1数据长度 (AD Length)12数据类型 (AD Type)n大部分数据类型占用 1 字节3数据 (AD Data)(AD Length - n)先说数据类型 (AD Type)就是一个值对应一个类型所有蓝牙设备都遵循这个标准比如0x01就代表Flags 在《Assigned_Numbers.pdf》 第12页 开始 列出了Common Data Types字段对应 AD Type说明Flags0x01标志位说明设备是 LE only、不支持经典蓝牙等Complete Local Name0x09设备全名就是 NimBLE_BeaconTx Power Level0x0A发射功率Appearance0x19外观类别LE Role0x1C设备支持的角色“Only Peripheral Role supported”URL (https://espressif.com)0x24URI 数据隐含在 Raw data 里0x1BService Data这里是 Eddystone 信标服务数据那么数据又代表什么呢比如原始数据中flags中的value为0x06是什么意思 查找官方协议文档几千页的文档怎么查在我们不熟悉的情况下用点“投机取巧”的办法 在第一张图flags:BR/EDR Not Supported, 在文档搜索 BR/EDR Not Supported找到P2094《Core_v5.0》要我们去找Core Specification Supplement,ctrl左键点击跳转到https://www.bluetooth.com/specifications/specs/core-specification-6-2/ 没有找到别慌点击下图红框再搜索可能会有小伙伴有疑问为啥bit位置1就代表有效呢 结合下图以及nrf中0x06代表的也是LE General Discoverable、BR/EDR Not Supported 文档中其他地方也有说明这个问题就到这里了接下来看第二组Type 09 对应的数据 4E696D424C455F426561636F6E 为啥这个数据代表NimBLE_Beacon 需要用ASCII解码首先数据格式是十六进制的0x4E对应的字符是 N ...说完了第1、2组 广播数据结构其他的也是类似的 大家可以尝试按照上面的方法去查询蓝牙协议文档带着目的去翻阅是一种熟悉文档很好的方式1.4 补充不知道小伙伴们有没有发现图一显示的数据除了RAW data中的数据还有3项是广播数据中没有的。Device type: LE only 这是一个综合判断。nrf 看到设备标志位里有BR/EDR Not Supported所以直接给出了“LE only”这个结论。Advertising type: Legacy这指的是广播包本身的协议类型即“传统广播”。这个信息是由芯片固件决定的体现在链路层的广播包头部Header不在 AD payload 里面 LE Bluetooth Device Address在04章节有讲过是PDU有效负载的一部分广播地址 这个MAC地址在蓝牙协议里有个专门的称呼叫 AdvA (Advertiser Address即广播设备地址二、学习示例代码在深入代码细节前我们先对程序的行为有一个宏观的认识这是一个很好的习惯 2.1 第一步我们会对程序中使用到的各个模块进行初始化主要包括 NVS Flash、NimBLE 主机层协议栈以及 GAP 服务的初始化。2.2 第二步在 NimBLE 主机层协议栈与蓝牙控制器完成同步时我们先确认蓝牙地址可用然后发起 不定向、不可连接、可扫描的广播。之后持续处于广播状态直到设备重启。我们从入口函数 app_main()开始 app_main主要做以下几件事情初始化 NVS Flash 与 NimBLE 主机层协议栈初始化 GAP 服务启动 NimBLE 主机层的 FreeRTOS 线程负责从底层控制器Controller接收 HCI 事件、处理 BLE 协议栈逻辑如连接管理、GATT 事务、安全配对等并分发到相应的回调函数使用 NimBLE 主机层协议栈进行应用开发时的编程模型为事件驱动编程例如在 NimBLE 主机层协议栈与蓝牙控制器完成同步以后将会触发同步完成事件调用 ble_hs_cfg.sync_cb 函数。在回调函数设定时我们令该函数指针指向 on_stack_sync 函数所以这是同步完成时实际被调用的函数。 // 注意暂时不要关注如何触发事件的只需要知道蓝牙底层完成某个事情后会触发一个事件给我们使用注意Bluetooth LE 的空中数据包遵循小端 (Little Endian) 传输的顺序所以低字节的数据会在靠前的位置。static void start_advertising(void)准备数据调用 ble_gap_adv_set_fields 和 ble_gap_adv_rsp_set_fields 配置内容。配置行为配置 adv_params如不可连接、通用发现模式。启动广播调用 ble_gap_adv_start此时手机才能搜索到这个设备。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

用DeepSeek优化Dockerfile:镜像体积与健康检查实战 2026/9/30 11:59:40

用DeepSeek优化Dockerfile:镜像体积与健康检查实战

写Dockerfile这件事,说难不难,说简单也不简单。我自己的体会是,绝大多数人一开始都是网上抄一个模板,能跑就行,但真要面对镜像体积膨胀、构建速度慢、容器状态不透明这些问题时,就有点抓瞎了。后来我试着把…

阅读更多 →
如何快速上手Ming-Image-0.1-Design:5分钟完成本地AI设计生成环境搭建教程 2026/9/30 11:59:39

如何快速上手Ming-Image-0.1-Design:5分钟完成本地AI设计生成环境搭建教程

如何快速上手Ming-Image-0.1-Design:5分钟完成本地AI设计生成环境搭建教程 【免费下载链接】Ming-Image-0.1-Design 项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/Ming-Image-0.1-Design Ming-Image-0.1-Design 是 inclusionAI 开源的一款 6B …

阅读更多 →
CentOS部署Docker实战指南:版本选型、网络调优与问题排查 2026/9/30 11:59:32

CentOS部署Docker实战指南:版本选型、网络调优与问题排查

CentOS上部署Docker,听起来就是个“装个软件”的事,实际操作里能把人折腾到怀疑人生的点多得是——镜像拉不下来、容器起不来、端口映射不生效、跨主机容器不通,每一个坑我都替大家踩过。这篇文章不是官方文档的复述,是我自己在多…

阅读更多 →
Flutter+鸿蒙适配实战:植物浇水提醒器跨平台开发与智能提醒架构复盘 2026/9/30 11:59:32

Flutter+鸿蒙适配实战:植物浇水提醒器跨平台开发与智能提醒架构复盘

很多朋友看到“植物浇水提醒器”这个项目名,第一反应是“又是一款闹钟App”。但真正养过花、养过多肉、甚至养过绿萝的人都知道,植物养护的痛点根本不在“提醒浇水”这个动作本身,而在于**“该不该浇”的判断 和 “忘了浇之后怎么办”的补救…

阅读更多 →
Keil5同时安装C51和MDK-ARM:STM32与51单片机共存完整教程 2026/9/30 11:59:32

Keil5同时安装C51和MDK-ARM:STM32与51单片机共存完整教程

玩单片机的朋友早晚会遇到一个绕不开的坎:手里既有C51开发板,又买了STM32最小系统板,结果发现Keil5装上之后,要么只能编译51,要么只能编译ARM,两边来回折腾装环境,光下载安装就能耗掉一个下午。…

阅读更多 →
MySQL数据库操作基础全攻略:从连接、增删改查到权限与排错 2026/9/30 11:59:32

MySQL数据库操作基础全攻略:从连接、增删改查到权限与排错

带新人的时候我经常被问到同一个问题:MySQL到底怎么入手?这个话题已经被说烂了,但拦住的初学者依然一拨接一拨。有人装上MySQL之后不知道怎么连,有人用Navicat点鼠标很溜,一敲命令行就懵,还有人卡在权限、S…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉