赞
踩
Esp8266算是一个傻瓜式的wifi通信模块,前前后后也用过好几次,这次隔了好久没用有些东西都忘了,所在这里记录一下,防止以后用的时候又忘了。
话不多说,先上电路连接图。本次使用的是ESP-01S,也适用于ESP-01。下面是使用手册的连接图:
但实际上使用时,一般将此模块的EN和VCC接口都接上5V的电压上,能保证通信的稳定,不过有一个问题就是容易发热,此时可以参考使用手册上给EN和5V电压之间加上一个小电阻。
本次我们使用esp8266作为TCP通信的客户端,在局域网中连接主服务器,并实现通信。具体初始化步骤如下:
_Bool ResetWifi = False; //判断是否需要更改默认wifi连接 void ESP8266_Init(void) { u8 i ; u8 at_rst[] = "AT+RST\x0D\x0A"; //重启esp u8 at_cwmode[] = "AT+CWMODE=1\0x0D\0x0A"; //配置为Station模式 u8 at_cwjap[] = "AT+CWJAP_DEF=\"Mi20\",\"12345678\"\x0D\x0A"; //连接wifi 参数:热点名字+密码 u8 at_cipmux[] = "AT+CIPMUX=0\x0D\x0A"; //设置单主机模式 参数:0 u8 at_cipstart[] = "AT+CIPSTART=\"TCP\",\"192.168.43.1\",8080\x0D\x0A"; //连接到服务器 参数:ip地址+端口号 u8 at_cipmode[] = "AT+CIPMODE=1\x0D\x0A"; //透传模式 参数:1 u8 at_cipsend[] = "AT+CIPSEND\x0D\x0A"; for(i = 0; at_rst[i]!='\0'; i++){ USART2->DR = at_rst[i];//送出AT+RST(回车) while((USART2->SR & 0x40) == 0);//直到发送成功 } delay_ms(3000); if(ResetWifi){ //重置wifi无线连接 for(i = 0; at_cwmode[i]!='\0'; i++){ USART2->DR = at_cwmode[i];//送出AT+CWMODE=1(回车) while((USART2->SR & 0x40) == 0);//直到发送成功 } delay_ms(2000); for(i = 0; at_cwjap[i]!='\0'; i++){ USART2->DR = at_cwjap[i];//送出AT+CWJAP_DEF="Redmi","87654321" while((USART2->SR & 0x40) == 0);//直到发送成功 } delay_ms(10000); for(i = 0; at_cipmux[i]!='\0'; i++){ USART2->DR = at_cipmux[i];//AT+CIPMUX=0 while((USART2->SR & 0x40) == 0);//直到发送成功 } delay_ms(2000); } for(i = 0; at_cipstart[i]!='\0'; i++){ USART2->DR =at_cipstart[i];//AT+CIPSTART="TCP","192.168.43.33",8080(回车) while((USART2->SR & 0x40) == 0);//直到发送成功 } delay_ms(2000); for(i = 0; at_cipmode[i]!='\0'; i++){ USART2->DR = at_cipmode[i];//AT+CIPMODE=1 while((USART2->SR & 0x40) == 0);//直到发送成功 } delay_ms(800); for(i = 0; at_cipsend[i]!='\0'; i++){ USART2->DR = at_cipsend[i];//AT+CIPSEND 开启透传 while((USART2->SR & 0x40) == 0);//直到发送成功 } delay_ms(800); UART_send_string("wifi connected! \n", USART2); IS_unvantra = 1; //开启透传 }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。