300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > STM32 ESP8266 微信Airkiss智能配网连接WiFi并接入OneNET

STM32 ESP8266 微信Airkiss智能配网连接WiFi并接入OneNET

时间:2024-02-20 13:05:17

相关推荐

STM32 ESP8266 微信Airkiss智能配网连接WiFi并接入OneNET

你是否还在直接将wifi的ssid和密码直接写入STM32程序中通过串口发送给ESP8266?本文教你用微信Airkiss协议实现可视化地为ESP8266发送WiFi ssid和密码信息并连接WiFi,并使STM32主控设备接入OneNET。

微信Airkiss协议是微信提供的一款为设备配网的技术。它为ESP8266配网的原理可以简单理解为:微信尽管不知道我们所使用的ESP8266的物理地址,但以Airkiss协议发送WiFi信息后,只要ESP8266工作在Station混杂模式下(开启了SmartConfig功能),它就能把所有数据包都抓取下来并进行分析,而不管这个数据包是不是发送给它的,直到找到需要的WiFi信息。

目前,微信对Airkiss协议的支持并不是很完善,微信小程序似乎暂不支持Airkiss协议,但可以使用公众号实现。安信可科技公众号提供了微信Airkiss配网的功能,可以直接用这个公众号或者自己申请一个公众号。

使用流程:手机先连接到你想要让ESP8266连接的那个WiFi,进入公众号,点击应用开发-微信配网,输入WiFi密码,然后等待一段时间之后ESP8266就能连接上这个WiFi了,此时手机上会显示连接成功。

注意:这个功能只有安信可科技开发的ESP8266模组支持,正点原子的ESP8266由于也使用了安信可的模组,所以也是支持的。但是像ESP8266-01s是不支持的。

上述的配网过程需要ESP8266开启了SmartConfig模式,如果你使用STM32作为主控连接ESP8266,那么其中一种方式是在上电之后通过串口发送AT指令,使ESP8266开启SmartConfig功能。

查阅ESP8266 AT指令文档:

1.AT+CWSTARTSMART开启SmartConfig功能

但这个指令仅支持ESP8266在单station模式下使用,因此在使用该指令前,需要将ESP8266配置为STATION模式。

2.AT+CWMODE=1配置为station模式

当然在发送这些指令之前惯例采用以下命令做个初始化

3.AT+RST 重启ESP8266

连上WiFi之后,需要关闭SmartConfig才能使用其他AT指令,如果WiFi连接成功,会通过串口返回connected,以此作为判断依据。

4.AT+CWSTOPSMART

接下来就可以使用其他指令配置ESP8266与OneNET连接了。

主函数:

void Net_Init(){ESP8266_Init_SmartConfig();while(strstr((char *)esp8266_buf, "connected") == NULL)delay_ms(500);//每500ms检测一次是否成功连接wifiESP8266_Init_after_SmartConfig(); //成功连接wifi后,与onenet服务器建立TCP连接while(OneNet_DevLink())//每500ms尝试接入OneNET一次,直至成功delay_ms(500);LED0 = 0;//入网成功,LED0亮}

SmartConfig配置以及OneNET连接的实现:

void ESP8266_Init_SmartConfig(void){ESP8266_Clear();/* AT测试 */printf("0. AT\r\n");ESP8266_SendCmd("AT\r\n","OK",200);delay_ms(500);/* 重启 */printf("1. RST\r\n");ESP8266_SendCmd("AT+RST\r\n","OK",200);delay_ms(500);/* 设置WiFi模式* 1:Station 模式* 2:SoftAP 模式* 3:SoftAP+Station 模式*/printf("3. CWMODE\r\n");while(ESP8266_SendCmd("AT+CWMODE=1\r\n","OK",200))delay_ms(500);/* 开启SmartConfig */printf("4. CWSTARTSMART\r\n");while(ESP8266_SendCmd("AT+CWSTARTSMART=3\r\n","OK",200))delay_ms(500);}

void ESP8266_Init_after_SmartConfig(void){ESP8266_Clear();/* 关闭SmartConfig */printf("1. CWSTOPSMART\r\n");while(ESP8266_SendCmd("AT+CWSTOPSMART\r\n", "OK",200))delay_ms(500);/* 开启 DHCP */printf("AT+CWDHCP\r\n");while(ESP8266_SendCmd("AT+CWDHCP=1,1\r\n", "OK", 200)) //开启DHCPdelay_ms(500);/* 建立与OneNet服务器的TCP连接 */printf("CIPSTART\r\n");while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT", 200)) delay_ms(500);printf("ESP8266 Init OK\r\n"); }

点击下载完整的Keil工程文件:

完整的Keil工程

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。