WIFI智能配网简介及操作流程说明,智能wifi

1.WIFI智能配网简介

Wi-Fi 配网,指由外部向 Wi-Fi 设备提供 SSID 和密码(PSW),让 Wi-Fi 设备可以连接指定的热点或路由器,并加入后者所建立的 Wi-Fi 网络。
对于具备丰富人机界面包括屏幕/键盘的设备,例如电脑或手机,可以直接输入 SSID/PSW 进行连接。
对于不具备丰富人机交互界面的物联网 Wi-Fi 设备,例如智能灯、扫地机器人等,则可以借助手机等智能设备,以某种配网方式将 SSID/PSW 传递该设备。

配网有多种方式,包括 SmartConfig、softAP、Airkiss 等,各自的特点比较如下:

配网方式特点
WPS存在安全性问题
SmartConfig较便捷,但一般为各厂商采用私有协议,兼容性和互操作性较差
softAP适配性兼容性较好,但手机端需要做两次 Wi-Fi 连接设置的切换,步骤较复杂
Airkiss操作便捷无需热点配置,但为微信客户端私有协议,需设备端适配兼容
ble combo操作便捷,但需要设备端支持 Wi-Fi+BLE 的 Combo 芯片方案

下面我们将以SmartConfig配网模式为例实战应用。相关操作步骤可参考腾讯云平台SmartConfig 配网开发文档

SmartConfig 配网开发文档:https://cloud.tencent.com/document/product/1081/48405

SmartConfig智能配网主要便于物联网设备接入云平台,只需相应app或者相关微信小程序(例腾讯连连)即可让设备快速入围,接入服务器。下面以微信小程序腾讯连连、云平台为腾讯云服务器,接入协议为MQTT3.1为例说明。

2.配网流程

1.在腾讯云平台选择智能配网模式。

2.通过腾讯连连小程序进入配网模式,则可以在物联网开发平台服务获取到当次配网的 Token值;

3.配网调试信息

4.微信小程序腾讯连连查看设备信息

3.软件设计

3.1 设置WIFI工作模式为:STA+TCPClinet,获取wifi连接状态,连接失败则进入配网模式,最终实现腾讯云平台连接

/****************STA+TCPclinet初始化*************/u8 Esp8266_STA_TCPclinet_Init(u8 *wifi_name,u8 *wifi_key,u8 *server_ip,u16 server_port){char buff[100];/*退出透传模式*/u16 i=0; u8 stat=0;for(i=0;i"))return 8;if(stat)return 0x80;//进入配网模式并且正常退出 else return 0;//未进入配网模式,正常退出}

3.2 smartconfig配网函数

本函数主要共能为配置WIFI 模式为Smart配网模式,连接WIFI热点,获取token信息上报到服务器。

/*开启Smart模式*/u8 ESP8266_SetSmartMode(void){ char buff[200]; printf("1.进入smart配网模式rn"); u32 time1=0,time2=0; if(Esp8266_SendCmdCheckStat("AT+CWSTARTSMARTrn","OK"))return 0x81;//开启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"))//连接热点成功 { usart3_cnt=0; usart3_flag=0; printf("2.关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)//配网模式100ms闪烁一次 { time2=0; LED1=!LED1; } if(time1>=1000*300)return 0x83;//超时退出 } printf("3.显示端口rn"); if(Esp8266_SendCmdCheckStat("AT+CIPDINFO=1rn","OK"))return 0x84; printf("4.查询IPrn"); if(ESP8266_GetIP())return 0x85; printf("5.设置要连接的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.网络数据解析rn"); if(ESP8266_NetworkConfig())return 7; printf("7.模块复位rn"); if(Esp8266_SendCmdCheckStat("AT+RSTrn","OKrn"))return 0x87; Delay_Ms(1000); Delay_Ms(1000); return 0;}

3.3.微信小程序配网数据订阅与发布

通过订阅微信小程序信息,获取token值,将获取到的信息上报到微信小程序,从而实现设备配网。

//微信小程序配网数据订阅与发布#define SET_WEIXIN_TOPIC "$thing/down/service/LA54WTHWL3/Smart_123"//订阅#define POST_WEIXIN_TOPIC "$thing/up/service/LA54WTHWL36/Smart_123"//发布

3.4 主函数

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);//通过定时器2辅助串口接收数据,20msTIMx_Init(TIM4,72,20000);//通过定时器2辅助串口接收数据,20msDS18B20_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("服务器连接成功rn");while(1){MQTT_Init();if(MQTT_Connect(ClientID,Username,Password)==0)break;Delay_Ms(500);printf("正在连接....rn");}printf("连接成功rn"); if(stat==0x80)//进入配网模式需要给微信小程序返回token值 { //订阅微信topic if(MQTT_SubscribeTopic(SET_WEIXIN_TOPIC,0,1))printf("订阅失败rn"); //返回平台数据,告知微信连连连接服务器成功 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"} 配网成功后微信小程序返回数据 } //订阅物联网平台数据 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();//发送心跳包}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++)>审核编辑:汤梓红

相关推荐

相关文章