Wi-Fi R-Mesh SDK 与功能验证

本节展示了如何建立一个 R-Mesh 网络,并实现节点间的数据通信。通过此示例您可以熟悉 R-Mesh 的基本用法。

获取 SDK

SDK 下载: IoT SDK

备注

默认 SDK 中根节点只可以连接 2 个节点,如希望根节点可连接更多节点,请按以下步骤:

  1. 获取 R-Mesh WLAN lib(联系我们)

  2. 替换 {sdk}/amebaxxx_gcc_project/project_km4/asdk/lib/application 路径下的 lib_wifi_whc_ap.a

  3. 替换 {sdk}/amebaxxx_gcc_project/project_km0/asdk/lib/application 路径下的 lib_wifi_common.alib_wifi_fw.alib_wifi_whc_np.a

R-MESH 使能

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

----Connectivity config----
CONFIG WHC INTF  --->
CONFIG WIFI  --->
   ...
   [*]     Enable R-mesh
   [ ]         Enable R-NAT
   [ ]         Enable R-mesh Socket
   [ ]             Enable R-mesh OTA
...
  1. 通过 {sdk}/component/soc/usrcfg/amebaxxx/ameba_wificfg.c 配置参数:

wifi_user_config.wtn_en = 1;

更多设置请参考 通用

RNAT 使能

备注

若不需要使用 RNAT 功能则跳过此步骤

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

wifi_user_config.wtn_rnat_en = 1;
  1. 若需要该节点固定为 RNAT,则设置如下参数:

wifi_user_config.wtn_fixed_rnat_node = 1;

备注

当前版本必须设置,自动决策 RNAT 算法正在开发中

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

----Connectivity config----
CONFIG WHC INTF  --->
CONFIG WIFI  --->
   ...
   [*]     Enable R-mesh
   [*]         Enable R-NAT
   [ ]         Enable R-mesh Socket
   [ ]             Enable R-mesh OTA
...
CONFIG LWIP  --->
   [ ] Enable Fast DHCP
   [*] Enable NAT REPEATER
   [*] Enable LWIP NETCONN SEM PER THREAD
   [ ] Enable LWIP Debug
...

更多 RNAT 设置请参考 RNAT 相关

Socket 使能

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

----Connectivity config----
CONFIG WHC INTF  --->
CONFIG WIFI  --->
   ...
   [*]     Enable R-mesh
   [*]         Enable R-NAT
   [*]         Enable R-mesh Socket
   [ ]             Enable R-mesh OTA
...

备注

该选项是为了配合本案例中使用到的演示工具 Gravitation , 若用户实际中不需要用 Gravitation。

编译与烧录

请参考标准编译流程: 编译流程

Gravitation(可视化演示工具)

为直观展示 R-Mesh 节点的拓扑信息,我们提供了 Gravitation tool, 请参考 Gravitation

加入网络

方法 1: 使用 ATCMD 将所有节点都加入网络:

AT+WLCONN=ssid,rmesh_test,pw,12345678

方法 2: 使用 RPP(R-mesh Provision Protocol)加入网络, 请参考: ZRPP

拓扑显示

节点加入网络后,会自动发信息给 Gravitation tool,如下图所示有 4 个节点与 AP 连接成功。

节点上方显示一些基本信息: MAC_Addr[5]:IP(更新时间)

例如下图左上角的节点显示: 1A:192.168.2.102(2:26) 表示:

  • MAC 地址为 XX:XX:XX:XX:0x1A

  • IP 地址为 192.168.2.102

../../_images/rmesh_tool_nodes_connect_ap.png

更多说明请参考 Gravitation

备注

tool 显示了各个节点的连接关系,但是无法反应节点的物理位置,您可以:

  • 可以取消右下角的“自动布局”

  • 手动拖动节点使其符合真实的位置。

切换验证

为了验证切换行为,您可以:

  • 将其中 2 个节点远离 AP (如下图将右侧的 62 和 6D 节点)

  • 可以观察到由于 AP 的信号强度变差,6D 节点自动切换到了 62 节点

../../_images/rmesh_tool_nodes_switch.png

通信验证

方法 1: 执行 ping cmd 去 ping 任意节点

AT+PING=192.168.2.102

方法 2: 使用 Gravitation tool 的 ping 测试功能可方便的发起所有节点的 ping 测试

../../_images/rmesh_tool_ping.png

节点上方的 ping 信息为 Ping: 成功包数/失败包数 - 丢包率/RTT

例如左下角节点的 Ping 信息为 P:29/2-6.5%/20 表示:

  • 成功 29 笔

  • 失败 2 笔

  • 丢包率 6.5%

  • RTT 20ms