Wi-Fi 配網(wǎng),指由外部向 Wi-Fi 設(shè)備提供 SSID 和密碼(PSW),讓 Wi-Fi 設(shè)備可以連接指定的熱點(diǎn)或路由器,并加入后者所建立的 Wi-Fi 網(wǎng)絡(luò)。
對于具備豐富人機(jī)界面包括屏幕/鍵盤的設(shè)備,例如電腦或手機(jī),可以直接輸入 SSID/PSW 進(jìn)行連接。
對于不具備豐富人機(jī)交互界面的物聯(lián)網(wǎng) Wi-Fi 設(shè)備,例如智能燈、掃地機(jī)器人等,則可以借助手機(jī)等智能設(shè)備,以某種配網(wǎng)方式將 SSID/PSW 傳遞該設(shè)備。
1. SoftAP模式簡介
設(shè)備備通過 softAP 方式創(chuàng)建一個(gè) Wi-Fi 熱點(diǎn),手機(jī)連接該熱點(diǎn),再通過數(shù)據(jù)通道例如 TCP/UDP 通訊,將目標(biāo) Wi-Fi 路由器的 SSID/PSW 傳遞該設(shè)備,設(shè)備獲取后,即可連接 Wi-Fi 路由器從而連接互聯(lián)網(wǎng)。同時(shí),為了對設(shè)備進(jìn)行綁定,手機(jī) App 可以利用該 TCP/UDP 數(shù)據(jù)通道,將后臺提供的配網(wǎng) Token 發(fā)送給設(shè)備,并由設(shè)備轉(zhuǎn)發(fā)至物聯(lián)網(wǎng)后臺,依據(jù) Token 可以進(jìn)行設(shè)備綁定。本文檔主要指導(dǎo)您如何使用softAP 方式配網(wǎng)開發(fā)。
2.SoftAP配網(wǎng)步驟
1.騰訊連連小程序進(jìn)入配網(wǎng)模式后,則可以在物聯(lián)網(wǎng)開發(fā)平臺服務(wù)獲取到當(dāng)次配網(wǎng)的 Token。
2.配置WiFi 模式位softAP 配網(wǎng)模式。
3.小程序按照提示依次獲取 Wi-Fi 列表,輸入家里目標(biāo)路由器的 SSID/PSW,再選擇設(shè)備 softAP 熱點(diǎn)的 SSID/PSW。
4.手機(jī)連接設(shè)備 softAP 熱點(diǎn)成功后,小程序作為 UDP 客戶端會連接 Wi-Fi 設(shè)備上面的 UDP 服務(wù)(默認(rèn) IP 為192.168.4.1,端口為8266)。
5.小程序給設(shè)備 UDP 服務(wù),發(fā)送目標(biāo) Wi-Fi 路由器的 SSID/PSW 以及配網(wǎng) Token。
6.如果2秒之內(nèi),未收到設(shè)備回復(fù),則重復(fù)步驟5,UDP 客戶端重復(fù)發(fā)送目標(biāo) Wi-Fi 路由器的 SSID/PSW 及配網(wǎng) Token。(如果重復(fù)發(fā)送5次,都沒有收到回復(fù),則認(rèn)為配網(wǎng)失敗,Wi-Fi 設(shè)備有異常)
7.如果步驟5收到設(shè)備回復(fù),則說明設(shè)備端已收到 Wi-Fi 路由器的 SSID/PSW 及 Token,正在連接 Wi-Fi 路由器,并上報(bào) Token。此時(shí)小程序會提示手機(jī)也將連接 Wi-Fi 路由器,并通過 Token 輪詢物聯(lián)網(wǎng)后臺,來確認(rèn)配網(wǎng)及設(shè)備綁定是否成功。
7.設(shè)備端在成功連接 Wi-Fi 路由器后,需要通過 MQTT 連接物聯(lián)網(wǎng)后臺,并將小程序發(fā)送的配網(wǎng) Token。
3.硬件設(shè)置與WIFI接入
1.登錄騰訊云平臺,進(jìn)入交互開發(fā),選擇配網(wǎng)引導(dǎo)。
2.選擇配網(wǎng)方式為AirKiss協(xié)議配網(wǎng)。點(diǎn)保存后即可生成二維碼。
3.微信小程序daunt配網(wǎng)引導(dǎo)。
4.開始配網(wǎng),配置熱點(diǎn)信息。
5.開始配網(wǎng),等待配網(wǎng)完成。
? 6. 配網(wǎng)調(diào)試信息
4.程序設(shè)計(jì)
softAP模式配置
/*SoftAP配網(wǎng)*/
u8 ESP8266_SoftAP_MOde(void)
{
u8 token[]="{"cmdType":2,"productId":"LA57WTHWi2","deviceName":"Smart_123","protoVersion":"2.0"}rn";//連接狀態(tài)信息
char *p=NULL;
char data[256];
char buff[100];
u8 i=0;
u32 time1=0,time2=0;
usart3_cnt=0;
usart3_flag=0;
while(1)
{
if(usart3_flag)
{
usart3_rx_buff[usart3_cnt]='?';
printf("rx=%s",usart3_rx_buff);
//+IPD,97,192.168.4.2,52021:{"cmdType":1,"ssid":"wbyq_wifi","password":"12345678","token":"df4a4c90abee98c9a443ae8ffd8cc16b"
p=strstr((char *)usart3_rx_buff,"+IPD");
if(p)
{
strcpy(data,p);//將接收到的數(shù)據(jù)拷貝一份保存
p+=strlen("+IPD");
p+=1;
while(*p!=',' && *p!='?')p++;
p++;//跳過字符',',獲取到IP地址起始位置
i=0;
//IP地址解析
while(*p!=',' && *p!='?')
{
buff[i++]=*p++;
}
buff[i]='?';
strcpy((char *)esp8266_info.esp8266_ip,buff);
//端口號解析
p++;
i=0;
while(*p!=':' && *p!='?')
{
buff[i++]=*p++;
}
buff[i]='?';
esp8266_info.esp8266_prot=atoi(buff);//字符串轉(zhuǎn)整數(shù)
//printf("ip=%s:%drn",esp8266_info.esp8266_ip,esp8266_info.esp8266_prot);
printf("ret:%drn",Esp8266_UDP_SendData((u8*)esp8266_info.esp8266_ip,esp8266_info.esp8266_prot,token));//上報(bào)連接狀態(tài)
}
ESP8266_GetData(data,(char *)esp8266_info.esp8266_name,"ssid");//WIFI名
ESP8266_GetData(data,(char *)esp8266_info.esp8266_key,"password");//密碼
ESP8266_GetData(data,(char *)esp8266_info.token,"token");//token數(shù)據(jù),需要返回給平臺
// printf("wifi_name:%srn",esp8266_info.esp8266_name);
// printf("wifi_key:%srn",esp8266_info.esp8266_key);
// printf("wifi_token:%srn",esp8266_info.token);
LED1=1;
return 0;
}
Delay_Ms(1);
time1++;
time2++;
if(time2>=100)
{
time2=0;
LED1=!LED1;
}
if(time1>=1000*300)
{
LED1=1;
break;//超時(shí)退出
}
}
return 1;
}
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44557瀏覽量
372750 -
WIFI
+關(guān)注
關(guān)注
81文章
5296瀏覽量
203565
發(fā)布評論請先 登錄
相關(guān)推薦
評論