27 鸿蒙LiteOS RK2206 设备连路由器完整实战(配网+联网验证+网络连通性测试)
2026/6/9 19:47:58 网站建设 项目流程

鸿蒙LiteOS RK2206 设备连路由器完整实战(配网+联网验证+网络连通性测试)

B站 配套视频教程【鸿蒙 LiteOS 实战 13】设备连路由器完整实战(配网+联网验证+网络连通性测试)

前言

很多刚入手凌智RK2206鸿蒙开发板的同学,都会卡在三个核心问题:

  1. 怎么让RK2206自动连接家里路由器WiFi?
  2. 怎么代码层面判断设备已经连上路由?
  3. 怎么验证设备真正能上网、网络通路正常?

本文基于官方config_network完整源码,从零拆解:默认配网参数、STA模式自动连路由、联网状态检测、IP/网关打印、断网重连、网络连通性验证,全程可直接照搬运行,适配OpenHarmony LiteOS RK2206平台。

适用平台:凌智RK2206 小凌派 | OpenHarmony 3.0 LTS | LiteOS内核
核心功能:WiFi STA配网、自动连路由器、状态打印、断网自动重连、网络可用性验证


一、整体业务逻辑概述

这份源码是RK2206官方标准配网组件,核心做了三件事:

  1. 固化默认WiFi参数:内置路由器SSID、密码、AP模式热点账号密码;
  2. Flash持久化配置:把WiFi模式、MAC、IP、网关、SSID/密码存在本地Flash;
  3. 双模式自动切换
    • STA模式:开发板作为站点,连接家用路由器
    • AP模式:开发板自身发射热点,手机连设备;
  4. 自动重连机制:WiFi掉线后5秒自动重试连接路由器;
  5. 联网信息上报:连上路由后自动打印IP、网关、子网掩码、WiFi信号列表。

二、关键默认配置参数解读(直接改这里就能用)

// STA模式:设备要连接的家用路由器WiFi#defineROUTE_SSID"阿千-友谊"#defineROUTE_PASSWORD"aabbcc123"// AP模式:设备自身发射的热点WiFi#defineAP_SSID"rk2206_nano"#defineAP_PASSWORD"88888888"

使用方法:
直接修改ROUTE_SSIDROUTE_PASSWORD你家里路由器的WiFi名称和密码,编译烧录即可自动联网。


三、问题1:如何让RK2206设备连接到路由器

3.1 核心流程

  1. 系统初始化读取Flash中WiFi配置;
  2. 若Flash无有效配置,加载set_default_wifi_config()默认参数;
  3. 配置为STA模式,关闭原有AP/WiFi;
  4. 开启WiFi、扫描周边WiFi、匹配预设路由SSID;
  5. 填入SSID/密码/BSSID,发起WiFi连接;
  6. 循环等待获取IP,拿到IP即表示连上路由器。

3.2 关键核心函数

1. 入口函数

ExternalTaskConfigNetwork();

开机调用后自动读取配置、判断模式、创建任务自动连网。

2. STA模式任务入口

TaskConfigWifiModeEntry()

执行逻辑:关闭AP→关闭旧WiFi→开启并连接路由器→循环检测网络状态,断网自动重连。

3. 核心联网函数

SetWifiModeOn()
  • 加载路由SSID/密码;
  • 开启WiFi硬件;
  • 扫描周边WiFi;
  • 匹配目标路由并保存BSSID;
  • 发起WiFi连接;
  • 等待获取IP、网关、子网掩码。

3.3 编译运行后自动联网

只要修改宏定义里的路由WiFi名称和密码,烧录上电:
开发板自动 → 开启WiFi → 扫描路由 → 自动输入密码 → 连上路由器。


四、问题2:如何证明设备已经成功连接到路由器

通过串口日志 + 代码状态检测双重验证。

4.1 串口日志关键标识(连上路由必有这些打印)

rknetwork SetWifiModeOn rknetwork g_wificonfig.ssid 阿千-友谊 rknetwork g_wificonfig.psk aabbcc123 rknetwork EnableWifi done rknetwork Scan done rknetwork GetScanResult done ConnectTo (阿千-友谊) done rknetwork IP (192.168.1.105) rknetwork GW (192.168.1.1) rknetwork NETMASK (255.255.255.0)

出现IP地址、网关、子网掩码三条打印,百分百已经连上路由器

4.2 代码函数判断联网状态

wifi_get_connect_status_internal()
  • 返回值为1:已正常连接路由器;
  • 非1:断网/未联网。

源码里自带断网重连逻辑:

if(wifi_get_connect_status_internal()!=1){LOS_Msleep(5000);printf("wifi disconnect, try reconnect...\r\n");gotoinit;}

检测到掉线,5秒后自动重新连路由器。


五、问题3:如何证明设备网络是通的(能上网)

连上路由器≠能上网,只能说明局域网通,还要验证外网通路

5.1 现有代码可做的网络依据

  1. 成功获取路由器分配的静态/动态IP
  2. 能读到网关地址、子网掩码
  3. WiFi底层链路已握手、认证通过;

以上证明:设备 ↔ 路由器 局域网完全互通

5.2 增加网络连通性验证(可直接加代码)

在同局域网的其他设备上,ping 地址即可验证网络连通性。


六、源码核心模块功能总结

函数作用
set_default_wifi_config加载默认WiFi、MAC、IP、网关配置
set_wifi_config / get_wifi_config读写WiFi配置到Flash,持久化保存
set_wifi_config_route_ssid/passwd动态设置要连接的路由器账号密码
SetWifiModeOnSTA模式开启、连路由器、获取IP
SetApModeOnAP模式开启,设备自身开热点
TaskConfigWifiModeEntrySTA任务:自动联网+断网重连
wifi_get_connect_status_internal查询WiFi是否已连上路由

七、实操使用步骤

  1. 修改源码中ROUTE_SSIDROUTE_PASSWORD为自家路由WiFi;
  2. 编译烧录固件到RK2206;
  3. 打开串口工具,复位开发板;
  4. 观察日志:出现IP/网关即连上路由器;
  5. 依赖wifi_get_connect_status_internal做业务断网重连;
  6. 新增ping外网逻辑,验证真正上网能力。

八、常见问题避坑

  1. SSID密码写错:能扫描到WiFi但一直连不上,无IP打印;
  2. 未改默认路由参数:一直连不上自己家路由器;
  3. 串口有IP但无法上网:路由器未联网、设备被路由拉黑;
  4. 频繁断网重连:WiFi信号弱、密码错误、路由DHCP地址满。

九、总结

本文基于RK2206官方config_network源码,一次性解决你三个核心疑问:

  1. 改宏定义即可自动连接家用路由器,底层扫描、认证、获取IP全封装;
  2. 通过串口IP/网关日志 + wifi_get_connect_status_internal函数,双重证明设备已连上路由;
  3. 有局域网IP仅代表内网通,增加ping外网即可验证全网连通性,支撑后续MQTT、HTTP、TCP业务开发。

整套代码无需大幅修改,直接改WiFi名称密码就能落地使用,是RK2206鸿蒙WiFi配网入门必学工程。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询