Wi-Fi R-Mesh 配网

在实际应用中,某些 R-Mesh 节点(如智能灯泡等)可能不具备触控屏、键盘等输入设备,因此无法通过直接输入 WLAN SSID 和密码的方式加入 WLAN。这样的节点可以通过以下两种配网方式加入 WLAN:

方式 1: 辅助配网

通过手机 APP ( MGravitation )将 WLAN 的密码用蓝牙传送给待配网的 R-Mesh 节点,如图所示,主要步骤如下:

../../_images/rmesh_ble_assisted_provisioning.svg

辅助配网

  1. 手机与 R-Mesh 节点建立蓝牙连接

  2. 被连接的 R-Mesh 节点扫描周围的 WLAN,将附近的 WLAN SSID 列表通过蓝牙发送给手机显示

  3. 用户在手机上选择要让 R-Mesh 节点加入的 WLAN,并输入其密码,手机将此 WLAN 的 SSID 和密码通过蓝牙发送给 R-Mesh 节点

  4. R-Mesh 节点利用刚收到的 SSID 和密码加入 WLAN

方式 2: ZRPP 配网

待配网的 R-Mesh 节点可以通过 WLAN 信道扫描来检测附近是否有已连网的 R-Mesh 节点,如果有,就可自动通过 R-Mesh 零配协议(Zero R-Mesh Provisioning Protocol, 以下简称 ZRPP)向此已连网的 R-Mesh 节点询问其所在 WLAN 的 SSID 和密码,从而加入此 WLAN。

备注

“零”意为“零接触”,即本配网方式不需要用户的任何手动输入,全部由 R-Mesh 节点自动完成,在待配网节点较多的情况下可极大的节省配网时间。

ZRPP 的主要步骤如下:

../../_images/rmesh_zrpp.svg

R-Mesh 零配协议

  1. 待配网的 R-Mesh 节点依次扫描所有 WLAN 信道,若在某个信道上检测到了已连网的 R-Mesh 节点,则立即停止扫描并停留在该信道

  2. 待配网的 R-Mesh 节点向刚发现的已连网的 R-Mesh 节点发送 ZRPP 请求(特定格式的 WLAN 数据帧)

  3. 已连网的 R-Mesh 节点向待配网的 R-Mesh 节点发送 ZRPP 响应(特定格式的 WLAN 数据帧),其中包含了 WLAN SSID 和密码

  4. 待配网的 R-Mesh 节点利用刚收到的 SSID 和密码加入 WLAN

案例演示

本节展示了如何利用配网的方式建立一个 R-Mesh 网络。

一般的配网流程(即本案例)有两个阶段:

  • 阶段一(辅助配网):利用移动端可视化演示工具( MGravitation )对一个 R-Mesh 节点进行辅助配网;

  • 阶段二(ZRPP):剩余的 R-Mesh 节点利用第一阶段已配网的节点,通过 ZRPP 自动加入网络。

通过此示例,您可以了解配网的流程以及 MGravitation 的使用方法;您也可以参考此案例重新开发自己的应用。

编译与烧录

  1. 通过 {sdk}/component/soc/usrcfg/amebaxxx/ameba_wificfg.c 配置参数:

wifi_user_config.fast_reconnect_en = 0;
  1. 使能 R-Mesh 以及 Socket

  2. {sdk}/amebadxxx_gcc_project 下执行 ./menuconfig.py,按如下配置:

----Connectivity config----
CONFIG WHC INTF  --->
...
CONFIG BT  --->
   [*] Enable BT
   [ ]     BT Advanced Feature (NEW)
   [*]     BT Example Demo
   [ ]         BLE Peripheral (NEW)
   ...
   [ ]         BLE Transfer Module (NEW)
   [*]         BLE WiFiMate Device
   [*]         BLE WiFiMate Configurator
   [ ]         BLE OTA Central (NEW)
   ...
  1. {sdk}/amebadxxx_gcc_project 下执行 ./build.py -a wifi_rpp

  2. 参考 标准流程 给节点下载固件

阶段一:辅助配网

备注

实验前请确保手机蓝牙功能开启,且将手机 Wi-Fi 连接至 AP

先给所有 R-Mesh 节点一起上电,再打开 MGravitation 应用程序,手机蓝牙便会扫描到附近所有 R-Mesh 节点,并展示 R-Mesh 节点列表:

../../_images/rmesh_mgravitation_ble_scan.jpg

MGravitation 扫描到的 R-Mesh 节点列表

选择其中一个节点后,手机会与该节点建立蓝牙连接,并命令其做一次 WLAN 扫描,将扫描到的 SSID 列表通过蓝牙连接返回给手机显示:

../../_images/rmesh_mgravitation_wifi_scan.jpg

R-Mesh 节点扫描到的 WLAN SSID 列表

接下来选择想要连接的 WLAN SSID,输入密码,点击“连接”按钮:

../../_images/rmesh_mgravitation_wifi_connect.jpg

MGravitation 令 R-Mesh 节点连接到目标 WLAN

一段时间过后,该 R-Mesh 节点连接 WLAN 成功:

../../_images/rmesh_mgravitation_wifi_connect_success.jpg

R-Mesh 节点通过 MGravitation 连接 WLAN 成功

阶段二:ZRPP

其他 R-Mesh 节点发现第一个节点连线成功后,会通过 ZRPP 自动连上 WLAN,此过程无需用户操作,过一段时间后,拓扑图上会显示所有 R-Mesh 节点都已成功连上 WLAN:

../../_images/rmesh_mgravitation_zrpp_topology.jpg

所有 R-Mesh 节点通过 ZRPP 连接 WLAN 成功