在我们做项目开发中,经常会用到WiFi,这次给大家分享一下我在使用WiFi的过程中总结的一些经验,这次用到的是esp8266WiFi模块,如图所示。
GND:接地
GPIO16:其实是RST,低电平复位,为了正常工作,直接连接VCC。
VCC:接3.3V,注意:接5V会烧坏模块。
UTXD:接单片机或USB转串口模块的RXD
URXD:接单片机或USB转串口模块的TXD
GPIO2、GPIO0:悬空
CH_PD:可以直接接VCC,一般串联一个电阻再接VCC
1、AT+RST :复位
2、AT+CWMODE= mode //设置模式,注意:要重新复位AT+RST才能生效
说明:mode:1-Station模式,2-AP模式,3-AP兼Station模式
Station模式:作为客户端去连接热点,AP模式:可作为热点让其它设备连接
3、AT+CWJAP=
说明:ssid--WiFi名称,pwd--WiFi密码
4、AT+CIPMUX=mode
说明:mode:0-单路连接模式,1-多路连接模式
5、AT+CIPMODE=mode //mode:0--缺省模式,1--透传模式
6、AT+CIPSERVER=mode[,port]
说明:mode:0-关闭server模式,1-开启server模式,port--端口号
7、AT+CIPSTART=
说明:type连接类型:TCP/UDP,addr--远程服务器IP地址,port--远程服务器端口号
8、AT+CIPSEND=
说明:id--连接序号,length--数据长度
9、AT+CIFSR //查看本模块ip
调试用的是USB转串口模块,根据上面的引脚连接配合面包板进行连接。波特率一般是9600或115200。在串口助手勾发送新行,然后发送AT+RST,如果先出现一堆乱码最后带个ready则说明试对了,接下来就可以调试模块了。
模块作为客户端:
AT+CWMODE=1
AT+RST
AT+CWJAP="wifi","012345678"
AT+CIPMUX=0
AT+CIPMODE=1
AT+CIPSTART="TCP","192.168.99.188",8080
AT+CIPSEND=1,8
模块作为服务端
AT+CWMODE=1
AT+RST
AT+CWJAP="wifi","012345678"
AT+CIPMUX=1
AT+CIPSERVER=1,8080
AT+CIFSR
注意:服务端要想和客户端通信两个设备必须处于同一网络
写代码和在串口上调试原理相同,都是通过串口发送AT指令,注意:在串口调试助手调好后,连接在单片机上时不需要再连接热点和设置模式,只需重启模块自会连接,并且每条指令后面必须加回车换行。
51单片机上设置服务端
void Uart1Sends(uchar *str)//串行口连续发送char型数组,遇到终止号/0将停止
{
while(*str!='\0')
{
SBUF=*str;
while(!TI);//等待发送完成信号(TI=1)出现
TI=0;
str++;
}
}
void esp8266_init()
{
Uart1Sends("AT+RST\r\n");
delay(10000);
Uart1Sends("AT+CIPMUX=1\r\n");
delay(10000);
Uart1Sends("AT+CIPSERVER=1,8080\r\n");
delay(10000);
}
STM32单片机上设置客户端
void esp8266_init(void)
{
printf("AT+RST\r\n");
delay_ms(1000);
printf("AT+CIPMODE=1\r\n");
delay_ms(4000);
printf("AT+CIPSTART=\"TCP\",\"139.199.176.32\",8080\r\n");
delay_ms(4000);
printf("AT+CIPSEND\r\n");
delay_ms(4000);
}