【ESP32_8266_BT篇(二)】Beacon信标广播

Beacon信标

1 Beacon信标概述

Beacon信标是一种蓝牙广播标准

在这里插入图片描述

三大Beacon蓝牙应用规范:

  1. Apple:iBeacon
  2. Radius Networks:AltBeacon
  3. Google:Eddystone

其中Google的Eddystone功能最为完善,本文基本Eddystone

1.1 Eddystone

Eddystone名称源于英国有名的Eddystone灯塔

Eddystone

  1. Eddystone - UID      广播自定义唯一的信标ID
  2. Eddystone - URL      广播网址
  3. Eddystone - TLM/ETLM   广播自身数据
  4. Eddystone - EID      加密的临时标识符

1.1.1 UUID

通用唯一标识符

在这里插入图片描述
注:原有128bit,但实际应用中通用为16bit32bit


当前UUID分类

在这里插入图片描述


1.1.2 广播包

在这里插入图片描述
AD structrue 类型
在这里插入图片描述
AD structrue 类型为0x01时的flags
类型补充


1.1.3 数据包

在这里插入图片描述


1.1.4 Eddystone数据包

在这里插入图片描述

1.1.5 Eddystone示例工程代码

### ESP32 实现蓝牙双模功能 ESP32 支持经典的 Bluetooth BR/EDR 和低功耗蓝牙(BLE)两种模式,并能够在这两者之间切换或同时启用。为了使这两种模式共存,开发者可以利用 ESP-IDF 提供的相关 API 来配置和初始化蓝牙堆栈。 #### 初始化蓝牙模块 要让经典蓝牙与 BLE 同时工作,在启动阶段需调用 `esp_bluedroid_init()` 函数来初始化蓝牙协议栈[^1]。接着通过设置参数指定开启 Classic BT 或者 LE 模式: ```c // 开启蓝牙双模支持 void init_bluetooth(void){ esp_bt_controller_config_t bt_cfg = BT_CONTROLLER_INIT_CONFIG_DEFAULT(); // 初始化控制器 esp_bt_controller_init(&bt_cfg); // 启动蓝牙协议栈 esp_bluedroid_init(); // 注册回调函数处理事件 esp_bluedroid_enable(); } ``` #### 经典蓝牙服务端示例 对于想要创建一个简单的 SPP (Serial Port Profile) 服务器程序来说,则可以通过如下方式定义并注册该 profile 的 UUID 及其对应的属性和服务特性: ```c #include "esp_spp_api.h" static const esp_spp_mode_t spp_mode = ESP_SPP_MODE_CB; /* 创建SPP服务 */ void create_classic_service(){ /* 设置本地设备名称 */ esp_bt_dev_set_device_name("ESP32_CLASSIC_BT"); /* 注册SPP应用 */ esp_spp_register_callback(spp_app_cb); /* 启动SPP服务 */ esp_spp_start_srv(ESP_SPP_SEC_NONE, ESP_SPP_ROLE_MASTER, NULL); printf("Classic Bluetooth Service Created\n"); } ``` #### BLE 广播器角色实例化 当涉及到广播数据包发送时,比如 iBeaconEddystonebeacon 类型的数据帧传输,可通过下面这段代码片段完成基本框架搭建: ```c #include "nvs_flash.h" #include "esp_ble_adv_data.h" #include "esp_gap_ble_api.h" extern void app_main() { nvs_flash_init(); // 初始化NVS Flash ble_advertising_start(); // 开始广告 } void ble_advertising_start(){ uint8_t raw_adv_data[]={ ... }; esp_ble_gap_config_adv_data_raw(raw_adv_data,sizeof(raw_adv_data)); esp_ble_gap_start_advertising(...); } ``` 以上展示了如何基于 ESP32 构建既兼容传统蓝牙又具备现代 BLE 功能的应用案例。值得注意的是实际项目中可能还需要考虑更多细节如安全性、稳定性等方面的要求[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eiker_3169

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值