ATK-ESP8266实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zyq_hh/article/details/53215623

在很多基于单片机的项目中,都会使用到无线通信。通过无线向向服务器发送数据,通过无线实现远程控制等等。

ESP266支撑AP和STA模式。简单的来说就是:

AP:可以将ESP8266作为热点,可以让其他的设备连接上它。

STA:可以连接上当前环境下的WIFI热点。

通常情况下,我们使用ESP8266接入路由器或者电脑热点,将ESP8266配置成TCP 客户端模式,将自己的云服务器或者电脑或者手机等设置成TCP服务端模式,ESP8266将数据发送给服务端,这样就实现了远程通信。

ESP8266这个模块的实例在网上已经有好多很全面的代码,大家可以在网上找,我这里是把我个人整合的代码贴出来,实现了模块和服务器的连接,同时可以收发数据。

"common.h"需要额外添加,这个库里有很多wifi模块的函数,需要添加到我们的程序里去。

在执行wifi_sta_connect()之前,需要初始化usart3,因为单片机与EPS8266之间是串口通信的,我这里用到了串口3。

#include "common.h"
#include "stdlib.h"
void wifi_sta_connect(){
	u8 *p;
        while(atk_8266_send_cmd("AT","OK",20))//检查wifi是否在线
	{
		atk_8266_quit_trans();//退出透传
		atk_8266_send_cmd("AT+CIPMODE=0","OK",200);  //关闭透传模式
		delay_ms(800);
		printf("trying connect");
	} 
	atk_8266_send_cmd("AT+CWMODE=1","OK",50);		//设置wifi为STA模式
	atk_8266_send_cmd("AT+RST","OK",20);		//DHCP服务关闭(在AP模式下才有效)
	delay_ms(1000);        //等待重启
	delay_ms(1000);
	delay_ms(1000);
	delay_ms(1000);
	atk_8266_send_cmd("AT+CWJAP=\"AAA\",\"12345678\"","WIFI GOT IP",300);		//热点:AAA,密码:12345678
	atk_8266_send_cmd("AT+CIPMUX=0","OK",20);   //0:单连接 1:多连接
	while(atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"***.**.***.***\",8081","OK",200)); //服务器IP:***.**.***.***  端口号:8081
	atk_8266_send_cmd("AT+CIPMODE=1","OK",200); 
	printf("connect success");
	atk_8266_quit_trans();
	atk_8266_send_cmd("AT+CIPSEND","OK",20);         //开始透传,已连接       
        u3_printf("my name is ESP8266");
	LCD_ShowString(60,190,200,16,16,"wifi connect");	
}
以上代码就可以实现与远程通信了。

common.h头文件在原子哥提供的源程序里有,自行下载整理就可以了

虽然8266连接上路由器后,与路由器直接构成了局域网,8266的ip是内网IP,但是依然是可以连接得上公网IP的,只要在服务器端配置端口监听即可。

猜你喜欢

转载自blog.csdn.net/zyq_hh/article/details/53215623