0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【XR806開發(fā)板試用】基于FreeRTOS的SoftAp配網(wǎng)實現(xiàn)

冬至子 ? 來源:PurplePill ? 作者:PurplePill ? 2023-10-16 18:21 ? 次閱讀

2.功能實現(xiàn)

2.1設(shè)計思路

從官方下載SDK開發(fā)包project/example目錄下有基本功能實現(xiàn)的示例代碼,更多的開發(fā)應(yīng)用指南可以參考芯之聯(lián)文檔中心的應(yīng)用指南和開發(fā)指南等。

本次測評實現(xiàn)SoftAp配網(wǎng)主要參考文檔中心的開發(fā)指南文檔中的WLAN應(yīng)用相關(guān)文檔《XRADIO_WLAN_Config_Developer_Guide-CN》
根據(jù)文檔所描述,目前 Xradio SDK 支持 4 種配網(wǎng)方式,分別為 AirKiss 配網(wǎng)、SmartConfig 配網(wǎng)、VoicePrint 配網(wǎng)和SoftAp配網(wǎng)。相比于其他三種配網(wǎng)方式,SoftAp本人之前用的比較多,就想嘗試基于XR806實現(xiàn)SoftAp配網(wǎng)。softap 配網(wǎng)是將設(shè)備切換為 AP 模式,然后創(chuàng)建一個 webserver,手機通過瀏覽器輸入AP 的ip 地址來訪問webserver,手機瀏覽器通過 post 的方式將填寫好的 ssid 和 psk 發(fā)送到 webserver,設(shè)備接收到ssid和psk后,切換為 STA 模式去連接網(wǎng)絡(luò)。

2.2源碼參考

該功能實現(xiàn)參考工程 example/soft_ap_config,此工程根據(jù)測試的效果來看只是完成了基本的解析請求,能夠解析出在瀏覽器填寫的ssid和psk,后續(xù)并沒有完成wlan的STA連接,為了更好的展現(xiàn)效果,在此基礎(chǔ)上增加STA連接功能,后續(xù)還會增加MQTT功能,實現(xiàn)切換場景后可以通過移動設(shè)備瀏覽器便可以完成所處場景wifi的切換,并實現(xiàn)基于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.效果展示

完成編譯燒錄后,開發(fā)板初次上電會處于AP模式,電腦連接到設(shè)備

title=

在瀏覽器輸入AP的ip地址(具體地址可以通過串口查看設(shè)備的輸出信息),初次登錄需要輸入用戶名和密碼,例程中用戶名和密碼都默認設(shè)置為admin

title=

登錄后就進入配置頁面,此處輸入手機熱點信息,點擊save,即可通過 post 的方式將填寫好的ssid和psk發(fā)送到webserver,然后在設(shè)備端進行解析

title=

完成配置后,即可通過串口看到手機熱點的ip,手機端也能查看到設(shè)備已經(jīng)連接到手機熱點

title=

4.總結(jié)

當(dāng)前只是基本實現(xiàn)了SoftAp配網(wǎng)實現(xiàn)驗證,如果網(wǎng)絡(luò)配置錯誤或網(wǎng)絡(luò)信息發(fā)生更改導(dǎo)致STA狀態(tài)下無法連接到網(wǎng)絡(luò),就無法回到AP模式下重新配置,只能復(fù)位重新進行配置。后續(xù)可以增加無法連接到網(wǎng)絡(luò)時自動開啟AP模式重新進行配網(wǎng),并且通過將網(wǎng)絡(luò)信息存儲到flash等方式避免每次上電都需要重新配置的問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61859
  • STA
    STA
    +關(guān)注

    關(guān)注

    0

    文章

    51

    瀏覽量

    18927
  • MQTT協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    95

    瀏覽量

    5325
收藏 人收藏

    評論

    相關(guān)推薦

    XR806開發(fā)板適用】基于多源信息融合的糧食霉變檢測系統(tǒng)設(shè)計

    XR806開發(fā)板具有強大的數(shù)據(jù)處理和傳輸能力,廣泛應(yīng)用于物聯(lián)網(wǎng)和嵌入式系統(tǒng)開發(fā)。
    的頭像 發(fā)表于 10-27 17:06 ?850次閱讀
    【<b class='flag-5'>XR806</b><b class='flag-5'>開發(fā)板</b>適用】基于多源信息融合的糧食霉變檢測系統(tǒng)設(shè)計

    基于全志XR806開發(fā)板的家用環(huán)境監(jiān)測傳感器設(shè)計

    本文來自全志XR806開發(fā)板評測活動文章,作者使用XR806開發(fā)板制作一個簡單的家用環(huán)境監(jiān)測傳感器,可以獲取當(dāng)前的溫度、濕度、氣壓、海拔這四個參數(shù),同時能夠通過外部的屏幕實時顯示刷新。
    的頭像 發(fā)表于 12-03 10:20 ?602次閱讀
    基于全志<b class='flag-5'>XR806</b><b class='flag-5'>開發(fā)板</b>的家用環(huán)境監(jiān)測傳感器設(shè)計

    如何使用XR806開發(fā)板來設(shè)計一個糧食霉變檢測系統(tǒng)?

    XR806開發(fā)板具有強大的數(shù)據(jù)處理和傳輸能力,廣泛應(yīng)用于物聯(lián)網(wǎng)和嵌入式系統(tǒng)開發(fā),
    的頭像 發(fā)表于 01-05 17:30 ?742次閱讀
    如何使用<b class='flag-5'>XR806</b><b class='flag-5'>開發(fā)板</b>來設(shè)計一個糧食霉變檢測系統(tǒng)?

    OpenHarmony南向嵌入式:【XR806開發(fā)板指導(dǎo)文檔】

    XR806_OpenHarmony開發(fā)板是基于XR806芯片設(shè)計開發(fā)的參考評估,身集成了XR806
    的頭像 發(fā)表于 04-14 09:25 ?712次閱讀
    OpenHarmony南向嵌入式:【<b class='flag-5'>XR806</b><b class='flag-5'>開發(fā)板</b>指導(dǎo)文檔】

    XR806芯片、XR806開源鴻蒙開發(fā)板簡介

    ??蓮V泛滿足 智能家居、智慧樓宇、工業(yè)互聯(lián)、兒童玩具、電子競賽、極客DIY 等領(lǐng)域的無線連接需求。芯片框圖芯片參數(shù)XR806開源鴻蒙開發(fā)板介紹XR806開發(fā)板是基于
    發(fā)表于 11-15 17:08

    XR806芯片、XR806開源鴻蒙開發(fā)板簡介

    ??蓮V泛滿足 智能家居、智慧樓宇、工業(yè)互聯(lián)、兒童玩具、電子競賽、極客DIY 等領(lǐng)域的無線連接需求。芯片框圖芯片參數(shù)XR806開源鴻蒙開發(fā)板介紹XR806開發(fā)板是基于
    發(fā)表于 11-15 18:32

    有哪位大神可以分享一下XR806開發(fā)板/模組的資料呢

    XR806開發(fā)板/模組的硬件包含哪幾個部分?XR806開發(fā)板/模組的硬件該怎樣去設(shè)計呢?
    發(fā)表于 12-28 06:51

    請問大佬XR806鴻蒙開發(fā)板怎么樣?

    請問大佬XR806鴻蒙開發(fā)板怎么樣?
    發(fā)表于 12-29 07:06

    全志XR806基于FreeRTOSSoftAp網(wǎng)實現(xiàn)

    1.環(huán)境搭建 由于電腦上之前就有開發(fā)其他設(shè)備用的ubuntu18.06虛擬機環(huán)境,就在此環(huán)境基礎(chǔ)上進行開發(fā)?;经h(huán)境搭建參考官方文檔進行:全志XR806開發(fā)板
    發(fā)表于 11-03 10:32

    簡述XR806開發(fā)板與STAR-MC1處理器

    全志XR806開發(fā)板基于XR806芯片設(shè)計,搭載了安謀中國的星辰系列STAR-MC1處理器。該開發(fā)板體積較小,具備WiFi、低功耗藍牙技術(shù)等功能,技術(shù)集成度高,成本低,支持鴻蒙系統(tǒng),能
    的頭像 發(fā)表于 04-11 18:08 ?3060次閱讀

    XR806開發(fā)板試用】留言功能開發(fā)

    XR806開源鴻蒙開發(fā)板是一款基于XR806芯片設(shè)計,高度集成WiFi/BLE/常用外設(shè),可供開發(fā)者進行方案評估、DIY或小規(guī)模產(chǎn)品研發(fā),可廣泛應(yīng)用于智能家居、智能樓宇、智能城市和工業(yè)
    的頭像 發(fā)表于 10-08 10:58 ?589次閱讀

    XR806開發(fā)板試用FreeRTOS創(chuàng)建任務(wù)測試

    這篇來學(xué)習(xí)下,XR806開發(fā)板FreeRTOS系統(tǒng)下創(chuàng)建兩個任務(wù)測試,由于沒有找到學(xué)習(xí)的文檔,試著參考例程來測試。
    的頭像 發(fā)表于 10-10 11:47 ?592次閱讀
    【<b class='flag-5'>XR806</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>試用</b>】<b class='flag-5'>FreeRTOS</b>創(chuàng)建任務(wù)測試

    XR806開發(fā)板試用】基于FreeRTOS的UART1串口雙向通信測試

    XR806是全志科技設(shè)計開發(fā)的一款支持WiFi和BLE的高集成度無線MCU芯片。之前已經(jīng)支持了鴻蒙系統(tǒng),現(xiàn)在又支持了FreeRTOS,可玩性又大大增強了。
    的頭像 發(fā)表于 10-17 11:25 ?1316次閱讀
    【<b class='flag-5'>XR806</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>試用</b>】基于<b class='flag-5'>FreeRTOS</b>的UART1串口雙向通信測試

    XR806串口驅(qū)動CM32M對小廚寶的控制實驗

    非常感謝基于安謀科技STAR-MC1的全志XR806 Wi-Fi+BLE開源鴻蒙開發(fā)板試用活動,并獲得開發(fā)板試用。
    的頭像 發(fā)表于 10-23 11:39 ?513次閱讀
    <b class='flag-5'>XR806</b>串口驅(qū)動CM32M對小廚寶的控制實驗

    全志XR806開發(fā)板原理圖

    全志XR806開發(fā)板原理圖
    發(fā)表于 10-19 15:11 ?11次下載