Wi-Fi R-Mesh SDK 与功能验证
本节展示了如何建立一个 R-Mesh 网络,并实现节点间的数据通信。通过此示例您可以熟悉 R-Mesh 的基本用法。
获取 SDK
SDK 下载: IoT SDK
备注
默认 SDK 中根节点只可以连接 2 个节点,如希望根节点可连接更多节点,请按以下步骤:
获取 R-Mesh WLAN lib(联系我们)
替换
{sdk}/amebaxxx_gcc_project/project_km4/asdk/lib/application路径下的lib_wifi_whc_ap.a替换
{sdk}/amebaxxx_gcc_project/project_km0/asdk/lib/application路径下的lib_wifi_common.a,lib_wifi_fw.a和lib_wifi_whc_np.a
R-MESH 使能
在``{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
...
通过
{sdk}/component/soc/usrcfg/amebaxxx/ameba_wificfg.c配置参数:
wifi_user_config.wtn_en = 1;
更多设置请参考 通用
RNAT 使能
备注
若不需要使用 RNAT 功能则跳过此步骤
通过
{sdk}/component/soc/usrcfg/amebaxxx/ameba_wificfg.c配置参数:
wifi_user_config.wtn_rnat_en = 1;
若需要该节点固定为 RNAT,则设置如下参数:
wifi_user_config.wtn_fixed_rnat_node = 1;
备注
当前版本必须设置,自动决策 RNAT 算法正在开发中
在
{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:0x1AIP 地址为
192.168.2.102
更多说明请参考 Gravitation
备注
tool 显示了各个节点的连接关系,但是无法反应节点的物理位置,您可以:
可以取消右下角的“自动布局”
手动拖动节点使其符合真实的位置。
切换验证
为了验证切换行为,您可以:
将其中 2 个节点远离 AP (如下图将右侧的 62 和 6D 节点)
可以观察到由于 AP 的信号强度变差,6D 节点自动切换到了 62 节点
通信验证
方法 1: 执行 ping cmd 去 ping 任意节点
AT+PING=192.168.2.102
方法 2: 使用 Gravitation tool 的 ping 测试功能可方便的发起所有节点的 ping 测试
节点上方的 ping 信息为 Ping: 成功包数/失败包数 - 丢包率/RTT
例如左下角节点的 Ping 信息为 P:29/2-6.5%/20 表示:
成功 29 笔
失败 2 笔
丢包率 6.5%
RTT 20ms