首页 > 其他分享 >STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台

时间:2023-03-19 21:34:55浏览次数:56  
标签:info esp8266 ESP8ESP8266 SoftAP STM32 token 配网 printf buff

      Wi-Fi 配网,指由外部向 Wi-Fi 设备提供 SSID 和密码(PSW),让 Wi-Fi 设备可以连接指定的热点或路由器,并加入后者所建立的 Wi-Fi 网络。

     对于具备丰富人机界面包括屏幕/键盘的设备,例如电脑或手机,可以直接输入 SSID/PSW 进行连接。

    对于不具备丰富人机交互界面的物联网 Wi-Fi 设备,例如智能灯、扫地机器人等,则可以借助手机等智能设备,以某种配网方式将 SSID/PSW 传递该设备。

  SoftAP模式配网

  原理介绍请参考腾讯云物联网开发文档​​SoftAP配网开发​​  

  腾讯云平台接入参考:​​ESP8266接入腾讯云​​  

  ESP8266_UDP通信配置​​UDP传输示例​

 腾讯云物联网平台网页端配置

  1.登录腾讯云平台,进入交互开发,选择配网引导。

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台_一键配网


  2.选择配网方式为AirKiss协议配网。点保存后即可生成二维码。

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台_ESP8266_02

  3.使用微信扫一扫二维码,或者通过微信小程序腾讯连连扫一扫二维码,进行配网。

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台_一键配网_03

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台_SoftAP_04

 4.开始配网,配置热点信息。

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台_SoftAP_05

  5.开始配网,等待配网完成。

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台_SoftAP_06

  6. 配网调试信息.

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台_SoftAP_07

​  7. 查看设备是否上线

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台_ESP8266_08

  程序设计

  2.SoftAP配网函数

/*SoftAP配网*/
u8 ESP8266_SoftAP_MOde(void)
{
u8 token[]="{\"cmdType\":2,\"productId\":\"LA57WTHWi2\",\"deviceName\":\"Smart_123\",\"protoVersion\":\"2.0\"}\r\n";//连接状态信息
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]='\0';
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!='\0')p++;
p++;//跳过字符',',获取到IP地址起始位置
i=0;
//IP地址解析
while(*p!=',' && *p!='\0')
{
buff[i++]=*p++;
}
buff[i]='\0';
strcpy((char *)esp8266_info.esp8266_ip,buff);
//端口号解析
p++;
i=0;
while(*p!=':' && *p!='\0')
{
buff[i++]=*p++;
}
buff[i]='\0';
esp8266_info.esp8266_prot=atoi(buff);//字符串转整数
//printf("ip=%s:%d\r\n",esp8266_info.esp8266_ip,esp8266_info.esp8266_prot);
printf("ret:%d\r\n",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:%s\r\n",esp8266_info.esp8266_name);
// printf("wifi_key:%s\r\n",esp8266_info.esp8266_key);
// printf("wifi_token:%s\r\n",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"//发布

STM32+ESP8ESP8266+SoftAP一键配网接入物联网平台_初始化_09

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("初始化完成\r\n");
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=%d\r\n",stat);
}
printf("服务器连接成功\r\n");
while(1)
{
MQTT_Init();
if(MQTT_Connect(ClientID,Username,Password)==0)break;
Delay_Ms(500);
printf("正在连接....\r\n");
}
printf("连接成功\r\n");
if(stat==0x80)//进入配网模式需要给微信小程序返回token值
{
//订阅微信topic
if(MQTT_SubscribeTopic(SET_WEIXIN_TOPIC,0,1))printf("订阅失败\r\n");
//返回平台数据,告知微信连连连接服务器成功
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("订阅失败\r\n");
while(1)
{
if(usart3_flag)
{
for(i=0;i<usart3_cnt;i++)
{
printf("%c",usart3_rx_buff[i]);
}
printf("\r\n");
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);
}
}
}


标签:info,esp8266,ESP8ESP8266,SoftAP,STM32,token,配网,printf,buff
From: https://blog.51cto.com/u_15688123/6131344

相关文章