ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ESP32 BLE Mesh智能灯控实战:nRF Mesh配网全流程与避坑指南

ESP32 BLE Mesh智能灯控实战:nRF Mesh配网全流程与避坑指南 先说个事。前段时间想把客厅灯具统一改成智能灯控照常规思路应该去挑一套品牌智能灯套装但我在购物App里翻了一圈就放弃了十个以上灯具就意味着要规划网关、考虑信号覆盖、还要被绑定在某个生态里。后来我把积灰的ESP32开发板翻出来用BLE Mesh自己搭了一套灯控网络配网、分组、开关控制全靠手机上的nRF Mesh完成不依赖任何云平台也没有单独网关。这篇文章就把我从零搭建这套环境的关键步骤写出来特别是nRF Mesh配置过程中反复踩过的坑全部整理成可直接参考的排查套路。如果你正准备做ESP32 BLE Mesh相关的产品原型或者想搞一套低成本、无云端的智能灯控实验环境又或者已经被nRF Mesh“扫不到设备”“配不上网”“灯不亮”折腾过那这篇应该能帮你少走不少弯路。后面内容默认你具备基础的C语言和嵌入式开发经验但我会把原理部分讲得足够细即使你第一次接触BLE Mesh也能顺着思路把项目搭起来。1. 灯控网络选型BLE Mesh凭什么会比WiFi和经典蓝牙更适合我在不少项目群里看到过类似提问智能灯控制用WiFi行不行用经典蓝牙行不行为什么非要跑BLE Mesh这个问题不能简单回答“BLE Mesh更高级”而是要看灯控场景对网络形态的硬性要求。1.1 典型灯控场景下WiFi和经典蓝牙各自卡在哪先说WiFi方案。WiFi确实开发简单ESP32连上路由器手机通过局域网或云端发指令就行。但灯控场景里灯的数量通常不少一台家用路由器能稳定承载的并发设备是有限的设备一多路由器CPU和2.4G频段压力都上来了。更要命的是WiFi网络的可用性完全取决于路由器——路由器重启一下全屋灯全变孤儿。对商业项目来说每盏灯都要在客户的路由器上做入网配置这是售后灾难。再说经典蓝牙问题更直接它是一对一拓扑。手机连了一个灯就没法同时给另外九个灯发消息。你当然可以轮流连接但控制时延感人而且配网时更痛苦每个设备都要单独配对、记住配对关系。广播模式倒是不需要连接但广播数据载荷有限也不适合做双向控制。BLE Mesh的思路则完全不同。它不是中心化拓扑而是消息在网络里通过节点之间的Relay功能接力传出去的。任何一个节点掉线都不会影响整张网络手机不需要和每个灯保持连接只要和网络里的一个节点建立连接就能通过这个节点把控制消息发给任意目标。这种“手机只连一个、消息传全网”的模式天然适合灯控。1.2 BLE Mesh用来解决灯控问题的六个核心概念上手BLE Mesh之前有几个概念必须彻底想明白否则你会在配置阶段被绕晕。第一是未配网设备与节点。设备出厂时处于未配网状态只会周期性广播Unprovisioned Device Beacon告诉周围“我在这里来给我配网吧”。手机上的nRF Mesh这类Provisioner扫描到这个信标后会发起配网流程把单播地址、网络密钥NetKey、应用密钥AppKey等一系列参数写入设备。配网完成后它就不再广播未配网信标而是作为网络里的一个节点参与消息转发。这个概念特别重要后面扫不到设备的时候你要先检查设备是不是已经被配过网了。第二是元素Element。节点下面可以有多个可寻址单元每个元素拥有独立的单播地址。比如一个灯带控制器可能有三个元素灯板控制、氛围灯控制、传感器状态上报。灯控场景入门阶段一个元素就够但你要知道这个模型的存在因为后面nRF Mesh里看到的地址是按元素划分的。第三是模型Model。模型定义了一个元素能做什么。灯控最常用的是Generic OnOff Server和Generic OnOff ClientServer负责维护开关状态并响应消息Client负责发起开关命令。再往上还有Light Lightness、Light CTL这种专门为照明设计的模型支持亮度调节和色温控制。先用OnOff跑通后面扩展很容易。第四是地址类型。节点分配到的单播地址用于点对点通信组地址Group Address用于一对多通信。标准里预留了大量组地址空间其中0xC000到0xFEFF是应用组地址开发时你可以自由规划0xFFFF是全节点广播地址发给它等于全网广播。多灯联动的核心操作就是把一组灯订阅到同一个组地址。第五是三层密钥体系。NetKey保护整个网络层面的通信AppKey保护某个应用场景下的通信DevKey是配网器与单个设备之间通信用的。灯控项目里最关键的是AppKey——多盏灯要能被同一个App控制它们必须使用同一个网络、同一个AppKey。我在实际项目里见过不少“能配网但互相看不见”的情况本质就是网络密钥不一致。第六是消息路由和TTL。BLE Mesh的消息不要求源节点和目标节点在彼此的蓝牙覆盖范围内网络里的每个节点都可以开启Relay功能把不属于自己的消息转发出去。TTL就像TCP里的跳数上限每经过一跳减一归零消息就丢弃。灯多、节点分散的项目里TTL设置太短会导致远端灯收不到消息。这些概念不完全是理论学习理解得越透后面排查nRF Mesh配置问题时定位越快。比如控制消息发不出去你如果知道要同时检查AppKey绑定、模型订阅和目标地址三个环节几分钟就能找到问题。2. 硬件准备与开发环境从ESP32选型到最小电路2.1 开发板选型与供电细节BLE Mesh对单节点的计算能力要求很低主流ESP32型号都能跑。我个人最常用的是经典的ESP32 DevKitC板载USB转串口芯片插上电脑就能烧录GPIO2上有一颗板载LED做灯控实验连外接线都不用接。ESP32-S3、ESP32-C3理论上也能跑ESP-BLE-MESH但你要注意两点一是不同模组的引脚定义不一样板载LED对应的GPIO编号也不同二是一些精简封装型号的串口和GPIO复用情况更复杂新手容易卡在硬件接线层。供电这块必须单独提醒。BLE Mesh节点在广播、接收、转发消息时的瞬态电流变化很大如果开发板是手机充电器或者电脑USB口供电问题不大但如果用面包板的稳压芯片供电经常会出现一开启Relay就重启的诡异现象。排查这类问题没有捷径先换一个质量可靠、至少能稳定输出500mA的电源试试。我在验证多个节点中继时就是从劣质面包板电源换到独立电源模块后才稳定的。2.2 ESP-IDF环境配置与BLE Mesh组件开关开发环境我建议直接上ESP-IDF。Arduino环境也有BLE Mesh库但调试手段和协议栈可配置项都不如官方ESP-IDF下集成的方式灵活。ESP-IDF 4.4 LTS和5.x系列都在examples/bluetooth/esp_ble_mesh下提供了完整例程generic_onoff、lighting、console等都能直接用省去自己从零搭协议栈的成本。环境装好后用Espressif的官方安装脚本安装工具链再执行idf.py set-target esp32。接下来最关键的一步是打开menuconfigidf.py menuconfig在菜单里依次进入Component config - Bluetooth - Bluedroid Options - ESP-BLE-MESH把BLE Mesh支持打开。第一次接触这个菜单的人容易懵这里我列一下灯控项目比较重要的开关BLE Mesh协议栈总开关不开这个后面全白搭。Relay功能节点之间消息中转的基础一般开启。GATT Proxy手机nRF Mesh连接节点用的服务必须开启否则手机无法通过代理连接网络。BLE Mesh细分模型里的Generic OnOff Server如果用官方例程这部分在编译选项里就已经被包含了。每次改动menuconfig后工程都会触发重新编译这是正常的。如果编译时提示内存不足多半是你开了太多不需要的模型或调试组件裁剪掉即可。2.3 最小硬件电路LED、按键与接线表灯控节点最小硬件只需要三样东西ESP32开发板、一颗LED、一个按键。LED用于演示灯的开关状态按键用来自测节点本身有没有宕机——当你怀疑网络消息没送到时可以先用按键确认固件在不在正常工作。外接LED时I/O口不能直接怼着LED接中间必须串一颗限流电阻。以下是我常用的接线参考器件引脚说明LED阳极GPIO4经330Ω电阻接到GPIO4LED阴极GND直接接地按键一端GPIO0按键另一头接GND启用内部上拉板载LEDGPIO2依赖具体开发板DevKitC默认有一个小坑要提醒GPIO0在ESP32上兼作Boot引脚接按键时一般建议按键的另一端接GND利用内部上拉按下去拉低触发。这个接法不会影响烧录但它会在上电时影响启动模式选择所以按键电路要保证默认状态是开路的。GPIO2的情况更特殊部分模组在这颗引脚上有外部上拉或直接接了板载LED外接负载时可能导致上电瞬间LED闪一下或者影响启动时序。如果你遇到上电闪灯的“灵异事件”优先考虑换一颗普通GPIO。3. 灯控节点代码逐段拆解从LED驱动到OnOff模型很多教程贴直接放一整段main.c读者看完只知道能跑不知道为什么。我把例程改写成最小灯控版本按逻辑拆开讲。3.1 工程逻辑节点侧需要自己写什么BLE Mesh网络里手机nRF Mesh是配网器兼控制端我们的ESP32则是被配网的灯控节点。节点侧要做的核心事情只有三件暴露未配网广播让手机找到自己配网完成后自动完成AppKey绑定和组地址订阅响应Generic OnOff Set消息控制LED。ESP-IDF的generic_onoff例程里底层协议栈已经把这些流程封装得比较完善了我们要改的通常在board.c和main.c两个文件里。3.2 配网完成的回调自动绑定AppKey和订阅组地址设备配网完成的标志是ESP_BLE_MESH_NODE_PROV_COMP_EVT事件触发。在这个回调里我最推荐做两个动作把AppKey绑定到灯控模型上让模型具备收发应用消息的能力把模型订阅到预先规划好的组地址这样后续手机往组地址发消息这盏灯就能收到。static void example_ble_mesh_prov_cb(esp_ble_mesh_prov_cb_event_t event, esp_ble_mesh_prov_cb_param_t *param) { switch (event) { case ESP_BLE_MESH_PROV_REGISTER_COMP_EVT: ESP_LOGI(TAG, Provisioning register completed); break; case ESP_BLE_MESH_NODE_PROV_COMP_EVT: ESP_LOGI(TAG, Node provisioned, addr 0x%04x, param-node_prov_comp.addr); // 绑定AppKey到onoff server模型 esp_ble_mesh_model_bind_app_key_to_model( onoff_server_model, admin_key_idx, app_key_idx); // 订阅组地址0xC001代表“客厅灯”组 esp_ble_mesh_model_subscribe_group_addr( onoff_server_model, admin_key_idx, 0xC001); break; default: break; } }这段代码是通用写法实际工程里你还要判断返回值、记录绑定状态。有一点要特别注意这里用的app_key_idx必须和nRF Mesh里创建网络时生成的AppKey索引对得上默认情况下nRF Mesh新网络会生成一个索引为0的AppKey所以例程里一般直接用0。3.3 Generic OnOff Server消息处理控制LED的点亮熄灭设备入网后协议栈收到Generic OnOff Set消息会触发Generic Server回调。我们在回调里读取灯的状态并操作GPIO。static void example_ble_mesh_generic_server_cb( esp_ble_mesh_generic_server_cb_event_t event, esp_ble_mesh_generic_server_cb_param_t *param) { switch (event) { case ESP_BLE_MESH_GENERIC_SERVER_STATE_CHANGE_EVT: if (param-state_change.msg-opcode ESP_BLE_MESH_MODEL_OP_GEN_ONOFF_SET) { uint8_t onoff param-state_change.value.onoff_set.onoff; ESP_LOGI(TAG, Received GEN_ONOFF_SET, onoff%d, onoff); board_led_operation(onoff); // 点亮或熄灭LED } break; case ESP_BLE_MESH_GENERIC_SERVER_RECV_GET_MSG_EVT: // 手机查询状态时协议栈会主动返回当前状态这里只需记录日志 ESP_LOGI(TAG, Received GEN_ONOFF_GET); break; default: break; } }这个回调的触发核心是state_change事件。协议栈收到Set消息后会先内部更新模型状态再通过回调通知业务层所以业务层不需要自己维护状态变量直接用param-state_change.value.onoff_set.onoff即可。这点很关键我自己刚开始写的时候在这层逻辑上绕了很久总想在业务层另外保存一份开关标志结果状态不同步造成各种怪问题。3.4 编译、烧录与日志观察代码写好以后连接开发板执行编译烧录idf.py build idf.py -p /dev/ttyUSB0 flash monitor串口日志里看到以下输出说明设备已进入未配网广播状态I (xxx) example_ble_mesh_prov: BLE Mesh Node registered I (xxx) example_ble_mesh_prov: Provisioning started I (xxx) example_ble_mesh_prov: Advertising with device name: ESP-BLE-MESH注意看最后一行nRF Mesh里扫到的设备名就来自这里。如果日志里没出现Provisioning started多半是BLE Mesh组件没编译进去回menuconfig检查开关。多个灯节点怎么做很简单把同一份固件烧到第二块、第三块开发板上。每块板子在配网时都会从配网器获得不同的单播地址但它们只要加入同一个网络、绑定同一个AppKey、订阅同一个组地址就能被同一个组地址消息统一控制。这比每台设备单独烧不同固件要省事得多。4. nRF Mesh配网全流程点每一步之前先搞懂逻辑4.1 nRF Mesh在系统里的角色与安装准备nRF Mesh是Nordic推出的手机端应用它是整个网络里的Provisioner和调试控制端。很多做ESP32开发的同学第一反应是“Nordic的工具能不能配ESP32”能BLE Mesh是标准协议只要设备严格按规范实现配网器与设备之间不存在芯片厂之间的兼容问题。ESP32的ESP-BLE-MESH例程按标准协议实现nRF Mesh可以正常配网和控制。安装上直接在应用商店搜索“nRF Mesh”下载即可。打开之后首先要确保两件事手机蓝牙打开Android系统把定位权限授权给nRF Mesh。后者经常被忽略但Android 6.0之后扫描BLE设备必须要有定位权限没有权限的表现就是扫描列表永远为空。4.2 从扫描到配网设备如何“入网”打开nRF Mesh如果这是第一次使用应用会引导你新建一个网络。新建网络时会自动生成NetKey和AppKey这个网络密钥体系后面不要手动乱改。然后进入扫描界面正常情况下可以看到名为ESP-BLE-MESH的未配网设备。正式配网前我强烈建议先点一下Identifying。这个动作会让设备执行Element自带的识别行为比如闪烁板载LED几秒钟目的是确认你正在配置的确实是面前这盏灯而不是邻居家同型号的另一盏灯。确认无误后点击Provision开始配网。配网认证方式我建议调试阶段选择No OOB最省事。如果你在做量产产品至少用Static OOB或Output OOB把密钥烧进固件里否则任何人都能配你的设备安全性等于没有。配网过程中手机和设备的蓝牙天线要尽量靠近避免配网超时。配网成功的标志是ESP32串口打印节点已分配的单播地址nRF Mesh的设备列表里也多出一个已连接状态的节点。从这一刻起这块ESP32就是网络里的正式成员了它不会再出现在未配网扫描列表里。4.3 AppKey绑定、模型订阅与组地址设置配网只是拿到了“身份证”设备还不会处理控制消息。接下来在nRF Mesh里进入节点详情页你会看到节点下的元素元素下面是一堆模型。这时要做两件事在Generic OnOff Server模型上绑定AppKey给模型配置订阅的组地址。绑定AppKey就是告诉这个模型“你可以处理用这个密钥加密的应用消息了”。不绑定密钥控制消息发过来模型解不开所以灯不会响应。订阅组地址则是告诉模型“你应该关心发到这个地址上的消息”。组地址可以是标准的应用组地址也可以是在软件的Groups功能里创建的命名组。一个模型可以订阅多个组地址这样一盏灯既可以属于“客厅”也可以属于“全屋”。这一步操作顺序不重要但两个动作必须在发送控制指令前全部完成。我见过不少新手只绑定AppKey不订阅组地址发单播能亮发组播没反应查了半天才发现是订阅没配。4.4 发送控制指令单播、组播与全屋广播nRF Mesh的Control/Dashboard界面可以发送各种模型消息。选Generic OnOff Set目标地址选刚配好的节点单播地址数据段填0x01发送灯应该就亮了再发0x00灯灭。接下来做组控在Groups里创建一个组绑定之前规划的组地址0xC001然后把刚才那个节点的模型订阅到这个组地址上。再次发送Generic OnOff Set目标地址选这个组多台订阅了同一组地址的设备会同时动作。这就是灯控网络的核心玩法——不需要一台台设备轮流控制。全屋广播也很简单目标地址填0xFFFF所有在当前网络里的节点都会收到消息。这个地址不推荐在灯很多的生产环境里乱用因为全网广播会触发大量节点同时进行Relay转发网络拥塞时可就不止“灯不亮”这么简单了。5. nRF Mesh避坑实录高频问题与完整排查链路这一章是我真正想写的。nRF Mesh本身很好用但配置过程中你一定会遇到几个看起来毫无逻辑的坑。我按从高到低的出现频率把这些问题和排查链路完整列出来。5.1 扫不到未配网设备从权限到信标的逐层检查这是我被问到最多的一个问题nRF Mesh扫描界面一片空白ESP32串口明明在打印“Advertising with device name”。出现这种情况按下面顺序逐级排查。第一检查设备是否已经配过网了。前面说过节点入网后不再广播未配网信标。很多开发板flash里存着上一次配网信息重新上电后直接作为节点工作自然不会被扫到。解决方式是执行全擦除重置idf.py -p /dev/ttyUSB0 erase-flash然后重新烧录固件。或者代码里主动调用esp_ble_mesh_node_local_reset()做本地复位。第二检查手机定位权限。这是Android平台最高频的坑nRF Mesh第一次启动请求定位权限时被拒绝后果就是扫描列表永远为空。去系统设置里给nRF Mesh授予定位权限然后杀掉App重开。第三用另一款BLE调试工具交叉验证。我习惯用nRF Connect先扫描一遍如果nRF Connect能看到设备而nRF Mesh看不到问题基本锁定在nRF Mesh侧如果两个工具都看不到继续往设备端查看看是不是广播信标被代码关闭了。5.2 配网失败或卡在Identify一次配不上的处理套路现象是点击Provision后长时间转圈或者识别闪烁中途断开。这个问题的典型原因是认证方式不匹配比如手机选择了Static OOB但设备的OOB数据为空或者双方不一致。调试期统一走No OOB能规避大部分这类问题。更常见的是配网状态机被上一次的失败残留卡住了。配网失败一次后如果没有正确复位设备会停留在半配网状态。处理套路固定为手机端退出网络或关闭蓝牙重开开发板断电重启必要时擦除flash再烧录。不要在一个状态卡住的时候反复点配网越点越乱。还有一次我遇到一个非常罕见的原因开发板和手机距离太远。看起来离谱但BLE Mesh的配网过程也有信号强度要求隔了三五米又隔着墙体配网帧在传输中丢了几包状态机就对不上了。把开发板放到手机旁边问题立刻解决。5.3 配网成功但灯不响应按日志分层排查这是最让人抓狂的设备已经配好了nRF Mesh里能看到节点AppKey也绑了组地址也订阅了但发消息就是没反应。出现这个问题千万不要在手机界面里反复点发送那是在盲猜。正确的做法是按照“物理层、网络层、应用层”的顺序在ESP32串口日志里找答案。首先看设备有没有收到消息。在Generic Server回调里加日志如果收到消息会打印“Received GEN_ONOFF_SET, onoff1”。如果完全没有这条日志说明消息没到达应用层。此时要检查目标地址对不对模型是否订阅了该地址TTL是不是太小。如果收到了日志但灯不亮问题在GPIO控制代码用按键自测一遍确认GPIO操作本身没问题。还有一个常被忽略的问题不同设备使用了不一致的网络密钥。两个ESP32都用nRF Mesh分别配网但第一次配置时一个加入了网络A、一个加入了网络B表面上都“配置成功”实际完全不互通。遇到多设备组网不通先统一删除nRF Mesh里的旧网络把所有开发板擦除重新创建单一网络再逐个配网。5.4 手机蓝牙缓存与旧网络残留被忽视的隐形坑手机长时间扫描BLE设备后系统的蓝牙缓存会出现异常。表现是其他App能正常用蓝牙但nRF Mesh扫描时把设备名获取成乱码或者点击配置后一直连接不上。这个时候最简单有效的办法是关闭手机蓝牙再打开通常能恢复正常。更顽固的情况需要去系统设置里找到“蓝牙共享”或者“蓝牙”应用清除它的存储和缓存然后重启手机。这两个操作只影响蓝牙服务本身不会影响手机数据可以放心做。旧网络残留是最隐蔽的坑。nRF Mesh里如果保存了好几个旧网络每个网络有自己的NetKey和AppKey而ESP32 flash里又存着之前加入其他网络的信息那么App看到的设备和实际设备可能不在同一个网络里。我的习惯是每开始一个新项目先在nRF Mesh里把不需要的网络删除再用erase-flash重置所有节点最后从“新建网络”这一步开始。5.5 一个真实案例组播地址没对上拿我最近一次实测举例。三个ESP32灯节点前面两个配好之后组控正常第三个节点配完网单播控制也正常但发组地址消息就是没反应。当时我按上面的分层排查逻辑查了一遍串口日志发现目标组地址的消息根本没在第三个节点上打印。后来进nRF Mesh节点详情页看订阅列表才发现第三个节点订阅的不是0xC001而是一个看起来差不多的地址。原因是当时创建“客厅灯”分组时nRF Mesh自动分配了一个组地址我没有手动改成预定的0xC001然后就直接把订阅绑定到了这个自动分组上。前后两个节点订阅的组地址不一致导致第三个灯收不到组控消息。这个案例本身不复杂但它说明了一个容易被忽略的操作纪律组地址的规划必须在配网前确定并且每配置一个节点都要核对订阅的组地址是不是既定值。你在nRF Mesh里可以随时手动输入组地址养成配完一个节点就核对一遍“模型订阅地址列表”的习惯能避免大部分组控失灵问题。6. 多灯组网的进阶设计分区规划、远程配网与量产考虑6.1 组址规划从第一盏灯开始就要想清楚灯控项目从第一盏灯开始就应该有一个组地址规划表。我用过的规划思路是这样的0xC001到0xC00F分配给物理区域组比如客厅、主卧、次卧、厨房0xC010到0xC01F分配给场景组比如观影模式、全屋关灯、夜间起夜。模型可以订阅多个组地址所以一盏客厅灯既订阅0xC001客厅区域又订阅0xC020全屋通过全屋广播指令0xFFFF就能一键全关。没有规划就配网等到设备数量上来了你会在nRF Mesh里看到一堆无意义的组地址那时再回头改订阅关系非常费劲。地址表建议写在项目文档第一页每配一台设备就在表上打一个勾。6.2 远程配网Remote Provisioning节点不在手机旁边怎么办实际使用中会遇到一个问题灯已经装到天花板上了人够不着手机也扫不到设备怎么配网这就涉及到BLE Mesh 1.1引入的Remote Provisioning特性。简单理解它允许通过一个已经在网络里的节点去给远处的未配网设备远程配网不需要配网器直接接触到那台设备。这个方向很有价值但目前各家协议栈的支持还在稳步推进中。ESP-IDF也提供了远程配网相关的例程但手机端nRF Mesh对远程配网操作的UI支持还不够顺手。我的建议是如果你不是做商业产品第一版先别碰远程配网把基础配置流程跑顺最重要如果确实要做优先研究官方例程里Remote Provisioning Server/Client的配合逻辑以及整个流程中消息如何在Proxy连接下转发。这个功能将来会成为BLE Mesh设备批量部署的标配能力提前了解协议细节对你设计节点软件架构有好处。6.3 多组联动、低功耗与量产落地多组联动说到根上就是“一个元素订阅多个组地址”。比如某个开关节点按键1发送消息到客厅组地址0xC001按键2发送到卧室组地址0xC002按键长按发送到全屋地址。这就是一个最简单的双控多组联动的开关面板不需要网关参与。低功耗设计方面不要指望BLE Mesh适合纯电池设备。BLE Mesh节点需要周期性接收网络消息、参与中继功耗天然不低。真正要低功耗的话协议栈提供了Low Power Node和Friend机制让低功耗节点只在特定时间窗口监听消息但代价是实时性下降。灯控项目基本都是市电供电直接插电用就行不用为了LPN功能把简单事情复杂化。量产落地时除了功能还要考虑三件事一是每台设备出厂前必须处于未配网状态flash里不能残留测试网络信息二是设备唯一标识的分配要纳入生产线流程避免两台设备UUID冲突三是安全级别至少要达到Static OOB级别不能像调试阶段一样全裸奔。BLE Mesh协议本身对Mesh网络的安全机制设计得比较完善只要把密钥管理做好不用过于担心被轻易攻击。这套环境我从零开始搭过好几遍也帮朋友排查过类似的问题。如果你正在做灯控项目我的建议核心很简单先单节点跑通、再双节点组网、最后再考虑批量部署每一步都在串口日志和nRF Mesh里确认网络状态。把基础链路理解扎实之后你会发现BLE Mesh做灯控确实比传统方案省心得多。
返回列表