Wi-Fi 配网,指由外部向 Wi-Fi 设备提供 SSID 和密码(PSW),让 Wi-Fi 设备可以连接指定的热点或路由器,并加入后者所建立的 Wi-Fi 网络。
对于具备丰富人机界面包括屏幕/键盘的设备,例如电脑或手机,可以直接输入 SSID/PSW 进行连接。
对于不具备丰富人机交互界面的物联网 Wi-Fi 设备,例如智能灯、扫地机器人等,则可以借助手机等智能设备,以某种配网方式将 SSID/PSW 传递该设备。
SoftAP模式配网
原理介绍请参考腾讯云物联网开发文档SoftAP配网开发
腾讯云平台接入参考:ESP8266接入腾讯云
ESP8266_UDP通信配置UDP传输示例
腾讯云物联网平台网页端配置
1.登录腾讯云平台,进入交互开发,选择配网引导。
2.选择配网方式为AirKiss协议配网。点保存后即可生成二维码。
3.使用微信扫一扫二维码,或者通过微信小程序腾讯连连扫一扫二维码,进行配网。
4.开始配网,配置热点信息。
5.开始配网,等待配网完成。
6. 配网调试信息.
7. 查看设备是否上线
程序设计
2.SoftAP配网函数
/*SoftAP配网*/
u8 ESP8266_SoftAP_MOde(void)
{
u8 token[]="{"cmdType":2,"productId":"LA57WTHWi2","deviceName":"Smart_123","protoVersion":"2.0"}rn";//连接状态信息
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);//将接收到的数据拷贝一份保存
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);//字符串转整数
//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));//上报连接状态
}
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数据,需要返回给平台
// 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;//超时退出
}
}
return 1;
}
3.微信小程序配网数据订阅与发布
//微信小程序配网数据订阅与发布
#define SET_WEIXIN_TOPIC "$thing/down/service/LA54WTHWL3/Smart_123"//订阅
#define POST_WEIXIN_TOPIC "$thing/up/service/LA54WTHWL36/Smart_123"//发布
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辅助串口接收数据,20ms
TIMx_Init(TIM4,72,20000);//通过定时器2辅助串口接收数据,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("服务器连接成功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;iusart3_cnt;i++)
{
printf("%c",usart3_rx_buff[i]);
}
printf("rn");
usart3_cnt=0;
usart3_flag=0;
}
Delay_Ms(1);
time++;
cnt++;
if(time>=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);
}
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net