2.功能實(shí)現(xiàn)
2.1設(shè)計(jì)思路
從官方下載的SDK開發(fā)包project/example目錄下有基本功能實(shí)現(xiàn)的示例代碼,更多的開發(fā)應(yīng)用指南可以參考芯之聯(lián)文檔中心的應(yīng)用指南和開發(fā)指南等。
本次測(cè)評(píng)實(shí)現(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實(shí)現(xiàn)SoftAp配網(wǎng)。softap 配網(wǎng)是將設(shè)備切換為 AP 模式,然后創(chuàng)建一個(gè) webserver,手機(jī)通過瀏覽器輸入AP 的ip 地址來訪問webserver,手機(jī)瀏覽器通過 post 的方式將填寫好的 ssid 和 psk 發(fā)送到 webserver,設(shè)備接收到ssid和psk后,切換為 STA 模式去連接網(wǎng)絡(luò)。
2.2源碼參考
該功能實(shí)現(xiàn)參考工程 example/soft_ap_config,此工程根據(jù)測(cè)試的效果來看只是完成了基本的解析請(qǐng)求,能夠解析出在瀏覽器填寫的ssid和psk,后續(xù)并沒有完成wlan的STA連接,為了更好的展現(xiàn)效果,在此基礎(chǔ)上增加STA連接功能,后續(xù)還會(huì)增加MQTT功能,實(shí)現(xiàn)切換場(chǎng)景后可以通過移動(dòng)設(shè)備瀏覽器便可以完成所處場(chǎng)景wifi的切換,并實(shí)現(xiàn)基于MQTT的遠(yuǎn)程控制功能。
核心代碼如下:
#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ā)板初次上電會(huì)處于AP模式,電腦連接到設(shè)備
在瀏覽器輸入AP的ip地址(具體地址可以通過串口查看設(shè)備的輸出信息),初次登錄需要輸入用戶名和密碼,例程中用戶名和密碼都默認(rèn)設(shè)置為admin
登錄后就進(jìn)入配置頁面,此處輸入手機(jī)熱點(diǎn)信息,點(diǎn)擊save,即可通過 post 的方式將填寫好的ssid和psk發(fā)送到webserver,然后在設(shè)備端進(jìn)行解析
完成配置后,即可通過串口看到手機(jī)熱點(diǎn)的ip,手機(jī)端也能查看到設(shè)備已經(jīng)連接到手機(jī)熱點(diǎn)
4.總結(jié)
當(dāng)前只是基本實(shí)現(xiàn)了SoftAp配網(wǎng)實(shí)現(xiàn)驗(yàn)證,如果網(wǎng)絡(luò)配置錯(cuò)誤或網(wǎng)絡(luò)信息發(fā)生更改導(dǎo)致STA狀態(tài)下無法連接到網(wǎng)絡(luò),就無法回到AP模式下重新配置,只能復(fù)位重新進(jìn)行配置。后續(xù)可以增加無法連接到網(wǎng)絡(luò)時(shí)自動(dòng)開啟AP模式重新進(jìn)行配網(wǎng),并且通過將網(wǎng)絡(luò)信息存儲(chǔ)到flash等方式避免每次上電都需要重新配置的問題。
-
FreeRTOS
+關(guān)注
關(guān)注
12文章
493瀏覽量
64359 -
STA
+關(guān)注
關(guān)注
0文章
52瀏覽量
19307 -
MQTT協(xié)議
+關(guān)注
關(guān)注
0文章
99瀏覽量
5952
發(fā)布評(píng)論請(qǐng)先 登錄
【XR806開發(fā)板適用】基于多源信息融合的糧食霉變檢測(cè)系統(tǒng)設(shè)計(jì)

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

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

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

XR806芯片、XR806開源鴻蒙開發(fā)板簡(jiǎn)介
XR806芯片、XR806開源鴻蒙開發(fā)板簡(jiǎn)介
有哪位大神可以分享一下XR806開發(fā)板/模組的資料呢
全志XR806基于FreeRTOS的SoftAp配網(wǎng)實(shí)現(xiàn)
簡(jiǎn)述XR806開發(fā)板與STAR-MC1處理器
【XR806開發(fā)板試用】留言板功能開發(fā)
【XR806開發(fā)板試用】FreeRTOS創(chuàng)建任務(wù)測(cè)試

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

XR806串口驅(qū)動(dòng)CM32M對(duì)小廚寶的控制實(shí)驗(yàn)

評(píng)論