【XR806开发板试用】基于FreeRTOS的SoftAp配网实现

2023-10-15
关注

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 < stdio.h >
#include < string.h >
#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      0

wlan_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_TEST
char *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();

}
#endif

static 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等方式避免每次上电都需要重新配置的问题。

您觉得本篇内容如何
评分

相关产品

Honeywell 霍尼韦尔智能工业 在线/便携烟气分析仪专用传感器 气体传感器

CO 传感器;SO2传感器;NO2 传感器;NO传感器;氧气传感器

南方泰科 TGM 压力传感器

TGM是一款SOP8封装的压阻式MEMS压力传感器,其压力传感器芯片封装在 SOP8 塑封壳内。在传感器压力量程内,当用固定电压供电时,传感器产生毫伏输出电压,正比于输入压力。压力传感器芯片为绝压,可提供不同的压力量程的SOP8 压力传感器。

Huba Control 富巴 525系列 压力传感器

525系列压力传感器采用集公司20多年研发经验的陶瓷压力传感器芯片技术。该系列压力传感器可选压力范围大,电气连接形式多。最小量程为50mbar。大批量使用具有很好的性价比。

Cubic 四方光电 PM3009BP 室外粉尘传感器

PM3009BP是一款专门针对餐饮油烟监测的油烟传感器,其采用旁流采样方式,自带除水雾装置,结合智能颗粒物识别算法,确保传感器能够快速准确的检测油烟浓度的变化,同时创新的镜头自清洁技术的应用,能够长效防护传感器油烟污染,大幅度延长传感器的使用寿命。

Winsen 炜盛科技 MH-410D 红外CO2气体传感器 红外传感器

MH-410D红外气体传感器是通用型、智能型、微型传感器,该红外传感器利用非色散红外(NDIR)原理对空气中存在的CO2进行探测,具有很好的选择性,无氧气依赖性,性能稳定、寿命长。内置温度补偿。该红外传感器是通过将成熟的红外吸收气体检测技术与微型机械加工、精良电路设计紧密结合而制作出的小巧型高性能红外传感器。该红外传感器可广泛应用于暖通制冷与室内空气质量监控、工业过程及安全防护监控、农业及畜牧业生产过程监控。

Alliance 莱恩&联众传感线缆 Aurora Tool Cable 医疗电线 医疗线缆

用于连接两个5DOF传感器或一个6DOF传感器的电缆。 可重复使用 用于电磁跟踪系统

RAYCOH 锐科智能 30GM系列 IO-Link输出 2EP-IO,IUEP-IO 超声波测距传感器和接近开关

RAYCOH 锐科智能30GM系列 IO-Link输出 超声波线性位置传感器和开关

评论

您需要登录才可以回复|注册

提交评论

提取码
复制提取码
点击跳转至百度网盘