蓝牙Mesh开发六 ESP32蓝牙Mesh Wifi共存(浅析)

本文介绍如何使用ESP32实现BLE Mesh网关,包括配置PSRAM、使能蓝牙与Wi-Fi共存等功能。此外,还展示了如何通过MQTT协议将数据上传至云端。

背景

上一章节用到了低功耗的Ble蓝牙来开发mesh低功耗的应用,但是需要接入网络还需要一个网关。ESP32已经支持了蓝牙Mesh和WIFI协议栈,但是其硬件基础上仅单天线,并且受限其有限的资源;而令人叫喜的是,IDF4.2版本已经很好的支持共存,虽然目前仅只有Wi-Fi STA模式下支持共存,但是通过增加PSRAM可有效提高了BLE WIFI共存模式的数据吞吐率(1Mbps),作为BLE MESH的网关就在好不过
如有异议,欢迎留言指正

功能设计

网关发现未配网设备广播后,网关使能配网器功能将其配置到mesh网络中,并建立友谊连接,通过mqtt协议与云端进行交互
在这里插入图片描述

工程实例

共存的工程实例可以参考esp-idf\examples\bluetooth\esp_ble_mesh\ble_mesh_wifi_coexist

配置器配置
使能PSRAM

需要通过idf.py menuconfig配置器配置PSRAM(主要是提高吞吐率),可以参考上一篇博文
允许LWIP的内存在PSRAM中分配(给应用释放资源)
在这里插入图片描述

使能WIFI蓝牙共存

在这里插入图片描述

BLE扫描全窗

在这里插入图片描述

BLE使用动态内存

在这里插入图片描述

使能友谊功能

可以配置友谊功能节点的接收窗口、队列、支持的节点等相关参数
在这里插入图片描述

初始化BLE Mesh
配网功能

移植配网器的例程 examples\bluetooth\esp_ble_mesh\ble_mesh_provisioner,针对匹配的UUID未配网设备进行配网
这里也可以直接使用普通节点功能代码,后续通过代理来进行配网

uint8_t match[2] = {
   
   0xdd, 0xdd}; //uuid
.... //省略
err = esp_ble_mesh_provisioner_set_dev_uuid_match(match, sizeof(match), 0x0, false);//匹配uuid
if (err != ESP_OK) {
   
   
	ESP_LOGE(TAG, "Failed to set matching device uuid (err %d)", err);
	return err;
}
配置元素与模型

参考vendor_model例程,添加服务模型;(也可以使用客户端模型例程 )

static esp_ble_mesh_model_t root_models[
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值