2.功能实现2.1设计思路从官方下载的sdk开发包project/example目录下有基本功能实现的示例代码,更多的开发应用指南可以参考芯之联文档中心的应用指南和开发指南等。
本次测评实现softap配网主要参考文档中心的开发指南文档中的wlan应用相关文档《xradio_wlan_config_developer_guide-cn》
根据文档所描述,目前 xradio sdk 支持 4 种配网方式,分别为 airkiss 配网、smartconfig 配网、voiceprint 配网和softap配网。相比于其他三种配网方式,softap本人之前用的比较多,就想尝试基于xr806实现softap配网。softap 配网是将设备切换为 ap 模式,然后创建一个 webserver,手机通过浏览器输入ap 的ip 地址来访问webserver,手机浏览器通过 post 的方式将填写好的 ssid 和 psk 发送到 webserver,设备接收到ssid和psk后,切换为 sta 模式去连接网络。
2.2源码参考该功能实现参考工程 example/soft_ap_config,此工程根据测试的效果来看只是完成了基本的解析请求,能够解析出在浏览器填写的ssid和psk,后续并没有完成wlan的sta连接,为了更好的展现效果,在此基础上增加sta连接功能,后续还会增加mqtt功能,实现切换场景后可以通过移动设备浏览器便可以完成所处场景wifi的切换,并实现基于mqtt的远程控制功能。
核心代码如下:
#include common/framework/platform_init.h#include common/framework/sys_ctrl/sys_ctrl.h#include common/framework/net_ctrl.h#include soft_ap_config.h#include kernel/os/os.h#include #include #include net/wlan/wlan.h#include net/wlan/wlan_defs.h#include lwip/inet.h#define sta_mode_test 1#define sta_mode_use_wpa2_only 0wlan_sta_states_t state;static char *softap_ssid = xradio_soft_ap_config_test;static soft_ap_config_result soft_ap_result;static soft_ap_config_sta soft_ap_state;#if sta_mode_testchar *sta_ssid = 00;char *sta_psk = 00;void sta_test(void){ /* switch to sta mode */ net_switch_mode(wlan_mode_sta);#if sta_mode_use_wpa2_only /* set ssid and password to wlan, only use wpa2 mode to connect ap. */ wlan_sta_config((uint8_t *)sta_ssid, strlen(sta_ssid), (uint8_t *)sta_psk, 0);#else /* set ssid and password to wlan, use wpa2|wpa3 compatible mode to connect ap. */ wlan_sta_set((uint8_t *)sta_ssid, strlen(sta_ssid), (uint8_t *)sta_psk);#endif /* start scan and connect to ap automatically */ wlan_sta_enable();}#endifstatic void soft_ap_config_callback(soft_ap_config_result *result, soft_ap_config_sta state){ /* copy the result and state */ memcpy(&soft_ap_result, result, sizeof(soft_ap_result)); soft_ap_state = state; printf(ssid:%s psk:%s state:%dn, result- >ssid, result- >psk, state);}int main(void){ int soft_ap_has_start = 0; platform_init(); /* set to ap mode */ net_switch_mode(wlan_mode_hostap); wlan_ap_disable(); wlan_ap_set((unsigned char *)softap_ssid, strlen(softap_ssid), null); wlan_ap_enable(); /* set soft_ap_config callback */ soft_ap_config_set_cb(soft_ap_config_callback); struct netif *nif = wlan_netif_get(wlan_mode_none); while (1) { if (netif_is_available(nif) && !soft_ap_has_start) { /* if the network is up, start the soft_ap_config */ soft_ap_config_start(); soft_ap_has_start = 1; } if(soft_ap_result.ssid[0] != 0){ sta_ssid = soft_ap_result.ssid; sta_psk = soft_ap_result.psk; #if sta_mode_test sta_test(); #endif } os_msleep(10000); } return 0;}3.效果展示完成编译烧录后,开发板初次上电会处于ap模式,电脑连接到设备
在浏览器输入ap的ip地址(具体地址可以通过串口查看设备的输出信息),初次登录需要输入用户名和密码,例程中用户名和密码都默认设置为admin
登录后就进入配置页面,此处输入手机热点信息,点击save,即可通过 post 的方式将填写好的ssid和psk发送到webserver,然后在设备端进行解析
完成配置后,即可通过串口看到手机热点的ip,手机端也能查看到设备已经连接到手机热点
4.总结当前只是基本实现了softap配网实现验证,如果网络配置错误或网络信息发生更改导致sta状态下无法连接到网络,就无法回到ap模式下重新配置,只能复位重新进行配置。后续可以增加无法连接到网络时自动开启ap模式重新进行配网,并且通过将网络信息存储到flash等方式避免每次上电都需要重新配置的问题。
民族品牌的骄傲!金立M6携手神州十一号遨游太空改写航天史篇章
LiDAR赋予无人驾驶汽车对复杂交通环境的感知能力
无人机遥感数据的处理与滑坡信息提取
区块链私有链的优点介绍
小LCD屏幕应用日渐普及,安森美半导体推出两款新的图像信号处理器
【XR806开发板试用】基于FreeRTOS的SoftAp配网实现
360F5手机上架官网 配置曝光 开售时间计日可期
用555制作的声控延时电路
一种用于光盘伺服控制系统的通用滤波器的设计
安捷伦将高性能示波器带入低价位
到底什么样的REST才是最佳REST?
解析富满电子的电源管理专利
光纤连接技术在综合布线中有着什么样的作用
保证小米6的资料不外泄?小米6设计图却来了
高速PCB中偏移源的分析与解决方法
关于元器件名称、符号和封装的命名问题
云计算的安全解决方案
L4级自动驾驶出行公司文远知行完成 3.1亿美元B轮融资
微软新专利WP或采用免触控技术
2009年最新电池国家标准批准发布公告