ESP8266WiFi模块使用(STA+连接TCP Server在单片机上使用)

ESP8266WiFi模块使用(STA+连接TCP Server在单片机上使用)

1.引脚说明

VCC连接正极,GND连接负极

RXD:数据的接收端

TXD:数据的发送端

RST: 复位,低电平有效

IO_0:用于进入固件烧写模式,低电平->烧写,高电平->运行模式(默认)

2.功能介绍

1、STA模式:该模块通过路由器连接网络,手机或者电脑实现该设备的远程控制。
2、AP模式:该模块作为热点,手机或者电脑连接wifi与该模块通信,实现局域网的无线控制。
3、STA+AP模式:两种模式共存,既可以通过路由器连接到互联网,也可以作为WiFi热点,使其他设备连接到这个模块,实现广域网与局域网的无缝切换。

3.STA+连接TCP Server

准备工作

1、将线连接好,VCC、GND、TXD、RXD要连接好,其他线可以悬空。
2、准备好串口助手,用来接受发送数据。波特率一般是115200,设置软件的波特率为115200。
3、准备网络调试助手,同样用来发送接收数据。
注:在进行前先将防火墙关闭。

具体步骤:

1、配置网络调试助手
ESP8266WiFi模块使用(STA+连接TCP Server在单片机上使用)_第1张图片
协议类型:TCP Server
本地主机地址:通过cmd,ipconfig指令查看
本地主机端口:自己选择
打开开关

2.配置串口助手
ESP8266WiFi模块使用(STA+连接TCP Server在单片机上使用)_第2张图片
串口:可以去设备管理器查看相应串口号
波特率:一般为115200
其它保持默认
打开串口

3.用AT指令配置WiFi模块
1,AT+CWMODE_DEF=1                !!工作在单station模组,设置参数保存到flash

2,AT+CWJAP_DEF=“newifi_F8A0”,“anxinke123”   !!连接路由器,保存到flash
注:“” 里面填写的是要连接的WiFi名称和密码

3,AT+CIPSTART=“TCP”,“192.168.99.217”,6001   !!连接TCP服务器,本实验用网络调试助手进行测试
注:填写格式为:“TCP”,“通过ipconfig查看到的地址”,端口号

4,AT+CIPSEND=5                  !!方式一:发送指定数据长度的数据(Data:test1),

5,AT+CIPMODE=1                  !!方式二:使用透传模式发送数据

6,AT+CIPSEND                   !!发送数据(Data:Test2)
注:串口助手上出现“>”符号,表示可以互相发送接收消息
ESP8266WiFi模块使用(STA+连接TCP Server在单片机上使用)_第3张图片
7,发送:+++                   !!退出透传发送三个连续的+++,不要勾选新行(\r\n)
ESP8266WiFi模块使用(STA+连接TCP Server在单片机上使用)_第4张图片

8,退出成功,即可发送AT指令
ESP8266WiFi模块使用(STA+连接TCP Server在单片机上使用)_第5张图片

STA+连接TCP Server在单片机上使用

具体步骤

1、为单片机选择波特率为115200的模式

void init_115200()
{
	SCON = 0x50;
	T2CON |= 0X30;
	TH1 = 0xFF;
	TL1 = 0xFD;
	RCAP2H = 0XFF;
	RCAP2L = 0XFD;
	TR2 = 1;
	ES = 1;
	EA = 1;
	ET0=1;
}

2、通过单片机发送AT指令给WiFi模块,完成配置

预设AT指令

void wifi()
 {
 	 upt("AT+CWMODE_DEF=1\r\n");
	 delay(1000);
	 upt("AT+CWJAP_DEF=\"nxa\",\"24162812\"\r\n");
	 delay(2000);
	 upt("AT+CIPSTART=\"TCP\",\"172.20.10.8\",8080\r\n");
	 delay(500);
	 upt("AT+CIPMODE=1\r\n");
	 delay(500);
	 upt("AT+CIPSEND\r\n");
	 delay(500);
 }	  

延时函数,为WiFi模块的连接提供足够时间

void delay(unsigned long time )
 {
 	int i;
	int j;
 	for( i = 0;i<100;i++)
		for( j = 0;j

输出函数,将AT指令一句句输出给WiFi模块

void shuchu(char c)
 {

	SBUF = c;
	while(TI==0);
	TI = 0;
		   
	}
 void upt(char *p)
 {
 	while(*p != '\0'){
	shuchu(*p);
	p++;
	}
 }

3、完善代码

主函数:判断接收值,反馈预定值

int main()
 {	
 	upt("hello");
 	str = chus;
	init_115200();
	wifi();
 	while(1){
		if(str == commane){
		   upt("hello\r\n");
		   str = chus;
	     }else if(str == com){
		   upt("world\r\n");
		   str = chus;
	}
   }
 	return 0;
}

中断函数

void zhongduan(void) interrupt 4 
{

	  if(RI == 1){
		RI = 0;
	 	str = SBUF;

	 }
	 if(TI == 1);
}

全局变量

#define chus  -1
 #define commane  1
 #define com  0
 char str;

调试

ESP8266WiFi模块使用(STA+连接TCP Server在单片机上使用)_第6张图片
将单片机、WiFi模块、PC机按图示相连,可以在串口助手上看到代码运行情况,方便及时调试,改正错误

ESP8266WiFi模块使用(STA+连接TCP Server在单片机上使用)_第7张图片
确认代码无误之后,将单片机与WiFi模块相连,用网络调试助手发送预定值,可以接收到返回值

你可能感兴趣的:(嵌入式,单片机)