背景
上一章节用到了低功耗的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[

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





