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

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

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

WIFI智能配網(wǎng)簡(jiǎn)介及操作流程說(shuō)明

嵌入式技術(shù) ? 來(lái)源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-05-26 14:09 ? 次閱讀

1.WIFI智能配網(wǎng)簡(jiǎn)介

Wi-Fi 配網(wǎng),指由外部向 Wi-Fi 設(shè)備提供 SSID 和密碼(PSW),讓 Wi-Fi 設(shè)備可以連接指定的熱點(diǎn)或路由器,并加入后者所建立的 Wi-Fi 網(wǎng)絡(luò)。
對(duì)于具備豐富人機(jī)界面包括屏幕/鍵盤的設(shè)備,例如電腦手機(jī),可以直接輸入 SSID/PSW 進(jìn)行連接。
對(duì)于不具備豐富人機(jī)交互界面的物聯(lián)網(wǎng) Wi-Fi 設(shè)備,例如智能燈、掃地機(jī)器人等,則可以借助手機(jī)等智能設(shè)備,以某種配網(wǎng)方式將 SSID/PSW 傳遞該設(shè)備。

配網(wǎng)有多種方式,包括 SmartConfig、softAP、Airkiss 等,各自的特點(diǎn)比較如下:

配網(wǎng)方式 特點(diǎn)
WPS 存在安全性問(wèn)題
SmartConfig 較便捷,但一般為各廠商采用私有協(xié)議,兼容性和互操作性較差
softAP 適配性兼容性較好,但手機(jī)端需要做兩次 Wi-Fi 連接設(shè)置的切換,步驟較復(fù)雜
Airkiss 操作便捷無(wú)需熱點(diǎn)配置,但為微信客戶端私有協(xié)議,需設(shè)備端適配兼容
ble combo 操作便捷,但需要設(shè)備端支持 Wi-Fi+BLE 的 Combo 芯片方案

下面我們將以SmartConfig配網(wǎng)模式為例實(shí)戰(zhàn)應(yīng)用。相關(guān)操作步驟可參考騰訊云平臺(tái)SmartConfig 配網(wǎng)開(kāi)發(fā)文檔

SmartConfig 配網(wǎng)開(kāi)發(fā)文檔:https://cloud.tencent.com/document/product/1081/48405

SmartConfig智能配網(wǎng)主要便于物聯(lián)網(wǎng)設(shè)備接入云平臺(tái),只需相應(yīng)app或者相關(guān)微信小程序(例騰訊連連)即可讓設(shè)備快速入圍,接入服務(wù)器。下面以微信小程序騰訊連連、云平臺(tái)為騰訊云服務(wù)器,接入?yún)f(xié)議為MQTT3.1為例說(shuō)明。

2.配網(wǎng)流程

1.在騰訊云平臺(tái)選擇智能配網(wǎng)模式。

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

2.通過(guò)騰訊連連小程序進(jìn)入配網(wǎng)模式,則可以在物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái)服務(wù)獲取到當(dāng)次配網(wǎng)的 Token值;

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

3.配網(wǎng)調(diào)試信息

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_centerwatermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

4.微信小程序騰訊連連查看設(shè)備信息

watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

3.軟件設(shè)計(jì)

3.1 設(shè)置WIFI工作模式為:STA+TCPClinet,獲取wifi連接狀態(tài),連接失敗則進(jìn)入配網(wǎng)模式,最終實(shí)現(xiàn)騰訊云平臺(tái)連接

/****************STA+TCPclinet初始化*************/
u8 Esp8266_STA_TCPclinet_Init(u8 *wifi_name,u8 *wifi_key,u8 *server_ip,u16 server_port)
{
	char buff[100];
	/*退出透?jìng)髂J?/
	u16 i=0;
    u8 stat=0;
	for(i=0;i<5;i++)
	{
		Usartx_SendString(USART3,(u8 *)"+++");//退出透?jìng)髂J?		Delay_Ms(500);
		if(Esp8266_SendCmdCheckStat("ATrn","OKrn")==0)
		{
			i=0;
			break;
		}
	}
	if(i!=0)
	{
		printf("1.退出透?jìng)髂J绞n");
		return 0x7f;
	}
	printf("2.模塊復(fù)位rn");
	if(Esp8266_SendCmdCheckStat("AT+RSTrn","OKrn"))return 1;	
	Delay_Ms(1000);
	Delay_Ms(1000);
	printf("3.關(guān)回顯rn");
	if(Esp8266_SendCmdCheckStat("ATE0rn","OKrn"))return 2;   
	printf("4.設(shè)置模式STArn");
	if(Esp8266_SendCmdCheckStat("AT+CWMODE=1rn","OK"))return 4;
	if(ESP8266_GetWifi_Stat())//查詢WIFI連接狀態(tài),未連接成功則進(jìn)入配網(wǎng)模式
    {
        BEEP=1;
        Delay_Ms(100);
        BEEP=0;
        Delay_Ms(100);
        BEEP=1;
        Delay_Ms(100);
        BEEP=0;
        stat=1;//進(jìn)入配網(wǎng)模式標(biāo)志位         
        if(ESP8266_SetSmartMode())return 4;//配網(wǎng)失敗  
    }
	printf("5.設(shè)置單連接rn");
	if(Esp8266_SendCmdCheckStat("AT+CIPMUX=0rn","OK"))return 5;		
	snprintf(buff,sizeof(buff),"AT+CIPSTART="TCP","%s",%drn",server_ip,server_port);
//	printf("buff:%srn",buff);
	printf("6.連接服務(wù)器rn");
	if(Esp8266_SendCmdCheckStat(buff,"OK"))return 6;	  
	printf("7.配置透?jìng)髂J絩n");
	if(Esp8266_SendCmdCheckStat("AT+CIPMODE=1rn","OKrn"))return 7;	
	printf("8.開(kāi)始發(fā)送數(shù)據(jù)rn");
	if(Esp8266_SendCmdCheckStat("AT+CIPSENDrn",">"))return 8;	
	if(stat)return 0x80;//進(jìn)入配網(wǎng)模式并且正常退出
    else return 0;//未進(jìn)入配網(wǎng)模式,正常退出
}

3.2 smartconfig配網(wǎng)函數(shù)

本函數(shù)主要共能為配置WIFI 模式為Smart配網(wǎng)模式,連接WIFI熱點(diǎn),獲取token信息上報(bào)到服務(wù)器。

/*開(kāi)啟Smart模式*/
u8 ESP8266_SetSmartMode(void)
{
    char buff[200];
    printf("1.進(jìn)入smart配網(wǎng)模式rn");
    u32 time1=0,time2=0;
    if(Esp8266_SendCmdCheckStat("AT+CWSTARTSMARTrn","OK"))return 0x81;//開(kāi)啟Smart失敗
    usart3_cnt=0;
    usart3_flag=0;
    while(1)
    {
        if(usart3_flag)
        {
            usart3_rx_buff[usart3_cnt]='?';
            printf("rx:%srn",usart3_rx_buff);
            if(strstr((char *)usart3_rx_buff,"smartconfig connected wifi"))//連接熱點(diǎn)成功
            {
                usart3_cnt=0;
                usart3_flag=0;
                printf("2.關(guān)Smart模式rn");
                if(Esp8266_SendCmdCheckStat("AT+CWSTOPSMARTrn","OK"))return 0x82;  
                break;
            }
            else
            {
                usart3_cnt=0;
                usart3_flag=0;
                memset(usart3_rx_buff,0,sizeof(usart3_rx_buff));
            }
        }
        Delay_Ms(1);
        time1++;
        time2++;
        if(time2>=100)//配網(wǎng)模式100ms閃爍一次
        {
            time2=0;
            LED1=!LED1;
        }
        if(time1>=1000*300)return 0x83;//超時(shí)退出
    }
    printf("3.顯示端口rn");
    if(Esp8266_SendCmdCheckStat("AT+CIPDINFO=1rn","OK"))return 0x84;
    printf("4.查詢IPrn");
    if(ESP8266_GetIP())return 0x85; 
    printf("5.設(shè)置要連接的UDPrn"); 
    snprintf(buff,sizeof(buff),"AT+CIPSTART="UDP","%s",8266,8266,0rn",esp8266_info.esp8266_ip);
    if(Esp8266_SendCmdCheckStat(buff,"OKrn"))return 0x86; 
    printf("6.網(wǎng)絡(luò)數(shù)據(jù)解析rn");
    if(ESP8266_NetworkConfig())return 7;  
    printf("7.模塊復(fù)位rn");
    if(Esp8266_SendCmdCheckStat("AT+RSTrn","OKrn"))return 0x87;	
    Delay_Ms(1000);
    Delay_Ms(1000);    
    return 0;
}

3.3.微信小程序配網(wǎng)數(shù)據(jù)訂閱與發(fā)布

通過(guò)訂閱微信小程序信息,獲取token值,將獲取到的信息上報(bào)到微信小程序,從而實(shí)現(xiàn)設(shè)備配網(wǎng)。

//微信小程序配網(wǎng)數(shù)據(jù)訂閱與發(fā)布
#define SET_WEIXIN_TOPIC  "$thing/down/service/LA54WTHWL3/Smart_123"http://訂閱
#define POST_WEIXIN_TOPIC "$thing/up/service/LA54WTHWL36/Smart_123"http://發(fā)布 
watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ1MzY5NA==,size_16,color_FFFFFF,t_70#pic_center

3.4 主函數(shù)

int main()
{
    int i=0,key;
	u8 stat=0;
	u32 time=0;
	u16 cnt=0;
	float temp;
	Beep_Init();//蜂鳴器初始化
	Led_Init();//LED初始化
	Key_Init();//按鍵初始化
	Usartx_Init(USART1,115200,72);
	Usartx_Init(USART3,115200,36);
	TIMx_Init(TIM2,72,20000);//通過(guò)定時(shí)器2輔助串口接收數(shù)據(jù),20ms
	TIMx_Init(TIM4,72,20000);//通過(guò)定時(shí)器2輔助串口接收數(shù)據(jù),20ms
	DS18B20_Init();	
//	RTC_Init();//RTC初始化
	printf("初始化完成rn");
	while(1)
	{
		stat=Esp8266_STA_TCPclinet_Init((u8 *)WIFI_NAME,(u8 *)WIFI_PASSWORD,(u8 *)SERVER_IP,SERVER_PORT);
		if(stat==0 || stat==0x80)break;
		printf("stat=%drn",stat);  
	}
	printf("服務(wù)器連接成功rn");
	while(1)
	{
		MQTT_Init();
		if(MQTT_Connect(ClientID,Username,Password)==0)break;
		Delay_Ms(500);
		printf("正在連接....rn");
	}
	printf("連接成功rn");
    if(stat==0x80)//進(jìn)入配網(wǎng)模式需要給微信小程序返回token值
    {
          //訂閱微信topic
         if(MQTT_SubscribeTopic(SET_WEIXIN_TOPIC,0,1))printf("訂閱失敗rn"); 
        //返回平臺(tái)數(shù)據(jù),告知微信連連連接服務(wù)器成功
        snprintf(mqtt_message,sizeof(mqtt_message),"{"method":"app_bind_token","clientToken":"client-1234","params": {"token":"%s"}}",esp8266_info.token);
        MQTT_PublishData(POST_WEIXIN_TOPIC,mqtt_message,0);
        //Smart_home{"method":"app_bind_token_reply","clientToken":"client-1234","code":0,"status":"success"} 配網(wǎng)成功后微信小程序返回?cái)?shù)據(jù)
    }
    //訂閱物聯(lián)網(wǎng)平臺(tái)數(shù)據(jù)
    stat=MQTT_SubscribeTopic(SET_TOPIC,0,1);
    if(stat)printf("訂閱失敗rn");   
	while(1)
	{
		if(usart3_flag)
		{
            for(i=0;i=5000)
		{
			time=0;
			MQTT_SentHeart();//發(fā)送心跳包
		}
		if(cnt>=2000)
		{
			cnt=0;
			temp=DS18B20_GetTemp()*0.0625;
			sprintf(mqtt_message,"{"method":"report","clientToken":"123","params":{"LED1":1,"temp":%.2f,"L":356}}",temp);//溫度
			MQTT_PublishData(POST_TOPIC,mqtt_message,0);
		}
	}
}
;i++)>


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

    關(guān)注

    12

    文章

    8975

    瀏覽量

    85098
  • wi-fi
    +關(guān)注

    關(guān)注

    14

    文章

    2098

    瀏覽量

    124247
  • 智能配電
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    9932
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    掃碼網(wǎng)時(shí),LCD出現(xiàn)分屏是什么原因?qū)е碌模?/a>

    在掃碼網(wǎng)或者智能網(wǎng)時(shí),中間看串口好像是少了6,7幀畫(huà)面,如圖下圖日志所示,應(yīng)該是WIFI寫f
    發(fā)表于 06-11 06:27

    根據(jù)espesp-idfexampleswifismart_config例程來(lái)編寫的智能網(wǎng),怎么做才能判斷智能網(wǎng)連接是否失敗?

    (wifi_config_t)); /* 將結(jié)構(gòu)體數(shù)據(jù)清零 */ /* 將智能網(wǎng)設(shè)備發(fā)送來(lái)的WiFi的ssid、password及MAC
    發(fā)表于 06-19 07:00

    ESP32C3 wifi網(wǎng)失敗的原因?

    1, 采用官方提供的at固件,固件版本V2.4.2; 2,發(fā)送AT+CWSTARTSMART進(jìn)入WiFi網(wǎng),啟動(dòng)app網(wǎng); 問(wèn)題:在2
    發(fā)表于 06-26 06:00

    迪文屏網(wǎng)說(shuō)明

    。 DGUS 2平臺(tái)支持手動(dòng)網(wǎng)和一鍵網(wǎng)兩種網(wǎng)絡(luò)配置方式,適用于智能家居、智慧建筑、檢測(cè)儀表等多種應(yīng)用場(chǎng)景中。
    發(fā)表于 04-29 16:05

    wifi模塊網(wǎng)問(wèn)題

    在網(wǎng)上搜了索到了兩種網(wǎng)方式,不過(guò)都還有一下疑惑, 在這里請(qǐng)教一下大家:1 AP 模式連接疑問(wèn)地方: 設(shè)備設(shè)置為AP模式,創(chuàng)建了一個(gè)沒(méi)有密碼的SSID,設(shè)備需要進(jìn)入怎樣的環(huán)境才能收到手機(jī)端發(fā)過(guò)來(lái)
    發(fā)表于 06-04 02:14

    鴻蒙直播:WiFi IoT 彈出式網(wǎng)

    `主題:WiFi IoT 彈出式網(wǎng)簡(jiǎn)介:本次課程由鴻蒙社區(qū)活躍、資深的項(xiàng)目經(jīng)理來(lái)給大家?guī)?lái),在WiFi IoT 開(kāi)發(fā)板上實(shí)現(xiàn)的彈出式
    發(fā)表于 03-15 10:43

    網(wǎng)流程概述

    網(wǎng)流程概述網(wǎng)協(xié)議網(wǎng)承載層(Provisioni
    發(fā)表于 07-22 08:53

    智能設(shè)備zigbee網(wǎng)模式

    智能設(shè)備網(wǎng)有AP個(gè)EZ兩種模式,如果有Zigbee網(wǎng)關(guān),添加設(shè)備時(shí)在APP網(wǎng)關(guān)界面點(diǎn)添加設(shè)備,按下設(shè)備網(wǎng)叫鍵就能添加設(shè)備,這是不是EZ
    發(fā)表于 12-08 15:32

    Hi3861:智能錄音筆【環(huán)境搭建+網(wǎng)

    直接入網(wǎng)(flash存儲(chǔ)掉電WIFI信息),若不能直接聯(lián)網(wǎng)則進(jìn)行網(wǎng)操作,此時(shí)拒絕聯(lián)網(wǎng)只能實(shí)現(xiàn)基礎(chǔ)錄音放音功能,當(dāng)使用數(shù)字管家進(jìn)行
    發(fā)表于 12-31 10:35

    在使用智能網(wǎng)時(shí)如果輸入WiFi的密碼是錯(cuò)的,為什么會(huì)反復(fù)嘗試連接WiFi

    我是根據(jù)\esp\esp-idf\examples\wifi\smart_config例程來(lái)編寫的智能網(wǎng),如果輸入密碼是錯(cuò)的,程序也不會(huì)返回信息給手機(jī)APP,要怎么做才能判斷
    發(fā)表于 02-17 07:07

    JDBC操作流程說(shuō)明

    JDBC操作流程說(shuō)明JDBC操作流程說(shuō)明JDBC操作
    發(fā)表于 11-10 15:32 ?4次下載

    【技術(shù)分享】WiFi模塊常見(jiàn)的網(wǎng)方式簡(jiǎn)介

    網(wǎng)方式。WiFi模塊常見(jiàn)的WiFi模塊網(wǎng)方式,一般可以歸類為直接
    的頭像 發(fā)表于 05-07 22:54 ?7861次閱讀
    【技術(shù)分享】<b class='flag-5'>WiFi</b>模塊常見(jiàn)的<b class='flag-5'>配</b><b class='flag-5'>網(wǎng)</b>方式<b class='flag-5'>簡(jiǎn)介</b>

    關(guān)于Wifi設(shè)備的網(wǎng)問(wèn)題

    今天寫個(gè)物聯(lián)網(wǎng)的技術(shù)文章——關(guān)于Wifi設(shè)備為什么網(wǎng)失敗。這相信是很多做過(guò)Wifi產(chǎn)品的制造業(yè)企業(yè)遇到的客訴最多的問(wèn)題——消費(fèi)者因Wifi
    的頭像 發(fā)表于 06-04 14:09 ?7455次閱讀
    關(guān)于<b class='flag-5'>Wifi</b>設(shè)備的<b class='flag-5'>配</b><b class='flag-5'>網(wǎng)</b>問(wèn)題

    WIFI模塊的各種網(wǎng)方式之比較(串口AT、SmartConfig、微信Airkiss、WEB網(wǎng)頁(yè)網(wǎng)....)

    不夠好的WIFI模組,在使用智能網(wǎng)時(shí),經(jīng)常會(huì)遇到很難成功的情形。而在終端用戶那邊,因?yàn)?b class='flag-5'>操作的復(fù)雜性,導(dǎo)致
    的頭像 發(fā)表于 08-09 19:22 ?5776次閱讀

    涂鴉智能聯(lián)手亞馬遜,推出藍(lán)牙無(wú)感知網(wǎng)解決方案

    “每次買智能設(shè)備,最煩的就是第一次網(wǎng),流程太麻煩了,操作步驟少說(shuō)也有9步左右,中間還很容易連接錯(cuò)誤之類的,但凡一個(gè)步驟不對(duì),都需要從頭開(kāi)始
    的頭像 發(fā)表于 11-21 09:50 ?759次閱讀
    涂鴉<b class='flag-5'>智能</b>聯(lián)手亞馬遜,推出藍(lán)牙無(wú)感知<b class='flag-5'>配</b><b class='flag-5'>網(wǎng)</b>解決方案