0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

冬至子 来源:PurplePill 作者:PurplePill 2023-10-16 18:21 次阅读

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模式,电脑连接到设备

title=

在浏览器输入AP的ip地址(具体地址可以通过串口查看设备的输出信息),初次登录需要输入用户名和密码,例程中用户名和密码都默认设置为admin

title=

登录后就进入配置页面,此处输入手机热点信息,点击save,即可通过 post 的方式将填写好的ssid和psk发送到webserver,然后在设备端进行解析

title=

完成配置后,即可通过串口看到手机热点的ip,手机端也能查看到设备已经连接到手机热点

title=

4.总结

当前只是基本实现了SoftAp配网实现验证,如果网络配置错误或网络信息发生更改导致STA状态下无法连接到网络,就无法回到AP模式下重新配置,只能复位重新进行配置。后续可以增加无法连接到网络时自动开启AP模式重新进行配网,并且通过将网络信息存储到flash等方式避免每次上电都需要重新配置的问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FreeRTOS
    +关注

    关注

    12

    文章

    484

    浏览量

    62166
  • STA
    STA
    +关注

    关注

    0

    文章

    51

    浏览量

    18961
  • MQTT协议
    +关注

    关注

    0

    文章

    97

    浏览量

    5365
收藏 人收藏

    评论

    相关推荐

    XR806开发板适用】基于多源信息融合的粮食霉变检测系统设计

    XR806开发板具有强大的数据处理和传输能力,广泛应用于物联网和嵌入式系统开发
    的头像 发表于 10-27 17:06 937次阅读
    【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>适用】基于多源信息融合的粮食霉变检测系统设计

    基于全志XR806开发板的家用环境监测传感器设计

    本文来自全志XR806开发板评测活动文章,作者使用XR806开发板制作一个简单的家用环境监测传感器,可以获取当前的温度、湿度、气压、海拔这四个参数,同时能够通过外部的屏幕实时显示刷新。
    的头像 发表于 12-03 10:20 673次阅读
    基于全志<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>的家用环境监测传感器设计

    如何使用XR806开发板来设计一个粮食霉变检测系统?

    XR806开发板具有强大的数据处理和传输能力,广泛应用于物联网和嵌入式系统开发
    的头像 发表于 01-05 17:30 834次阅读
    如何使用<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>来设计一个粮食霉变检测系统?

    OpenHarmony南向嵌入式:【XR806开发板指导文档】

    XR806_OpenHarmony开发板是基于XR806芯片设计开发的参考评估,身集成了XR806
    的头像 发表于 04-14 09:25 771次阅读
    OpenHarmony南向嵌入式:【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b>指导文档】

    XR806芯片、XR806开源鸿蒙开发板简介

    。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY 等领域的无线连接需求。芯片框图芯片参数XR806开源鸿蒙开发板介绍XR806开发板是基于
    发表于 11-15 17:08

    XR806芯片、XR806开源鸿蒙开发板简介

    。可广泛满足 智能家居、智慧楼宇、工业互联、儿童玩具、电子竞赛、极客DIY 等领域的无线连接需求。芯片框图芯片参数XR806开源鸿蒙开发板介绍XR806开发板是基于
    发表于 11-15 18:32

    有哪位大神可以分享一下XR806开发板/模组的资料呢

    XR806开发板/模组的硬件包含哪几个部分?XR806开发板/模组的硬件该怎样去设计呢?
    发表于 12-28 06:51

    请问大佬XR806鸿蒙开发板怎么样?

    请问大佬XR806鸿蒙开发板怎么样?
    发表于 12-29 07:06

    全志XR806基于FreeRTOSSoftAp实现

    1.环境搭建 由于电脑上之前就有开发其他设备用的ubuntu18.06虚拟机环境,就在此环境基础上进行开发。基本环境搭建参考官方文档进行:全志XR806开发板
    发表于 11-03 10:32

    简述XR806开发板与STAR-MC1处理器

    全志XR806开发板基于XR806芯片设计,搭载了安谋中国的星辰系列STAR-MC1处理器。该开发板体积较小,具备WiFi、低功耗蓝牙威廉希尔官方网站 等功能,威廉希尔官方网站 集成度高,成本低,支持鸿蒙系统,能
    的头像 发表于 04-11 18:08 3189次阅读

    XR806开发板试用】留言功能开发

    XR806开源鸿蒙开发板是一款基于XR806芯片设计,高度集成WiFi/BLE/常用外设,可供开发者进行方案评估、DIY或小规模产品研发,可广泛应用于智能家居、智能楼宇、智能城市和工业
    的头像 发表于 10-08 10:58 672次阅读

    XR806开发板试用FreeRTOS创建任务测试

    这篇来学习下,XR806开发板FreeRTOS系统下创建两个任务测试,由于没有找到学习的文档,试着参考例程来测试。
    的头像 发表于 10-10 11:47 644次阅读
    【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b><b class='flag-5'>试用</b>】<b class='flag-5'>FreeRTOS</b>创建任务测试

    XR806开发板试用】基于FreeRTOS的UART1串口双向通信测试

    XR806是全志科技设计开发的一款支持WiFi和BLE的高集成度无线MCU芯片。之前已经支持了鸿蒙系统,现在又支持了FreeRTOS,可玩性又大大增强了。
    的头像 发表于 10-17 11:25 1475次阅读
    【<b class='flag-5'>XR806</b><b class='flag-5'>开发板</b><b class='flag-5'>试用</b>】基于<b class='flag-5'>FreeRTOS</b>的UART1串口双向通信测试

    XR806串口驱动CM32M对小厨宝的控制实验

    非常感谢基于安谋科技STAR-MC1的全志XR806 Wi-Fi+BLE开源鸿蒙开发板试用活动,并获得开发板试用
    的头像 发表于 10-23 11:39 575次阅读
    <b class='flag-5'>XR806</b>串口驱动CM32M对小厨宝的控制实验

    全志XR806开发板原理图

    全志XR806开发板原理图
    发表于 10-19 15:11 12次下载