解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码

  1. ESP8266模块(新版本&旧版本)
    解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第1张图片 解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第2张图片

引脚说明:
• VCC接3.3v,接5v时间长了可能会烧
• UTXD,URXD和其它的TXD,RXD接时注意交叉接就行了
• CH_PD要给高电平模块才工作
• GPIO0一般不用管,烧录固件时要接地
• RST低电平复位,高电平工作(默认高)
• GPIO2必须为高电平,内部默认已拉高,不用管

配置模块时,下载器与模块连线图:
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第3张图片
烧写固件时,下载器与模块连线图:
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第4张图片

ESP8266有三种工作模式:

1、 Station模式
2、 SoftAP模式
3、 Station + SoftAP模式
出厂设置为第三种,上电后,蓝灯微弱闪烁后熄灭(新版:红灯长亮 ,旧版:红灯熄灭)

  1. 解读三种模式
    2.1 ESP8266 在 Station 模式

    ESP8266 作为 Station,通过路由器(AP) 连入 internet ,可向云端服务器上传、 下载数据。用户可随时使用移动终端(手机、 笔记本等) ,通过云端监控 ESP8266 模块的状况, 向 ESP8266 模块发送控制指令。
    解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第5张图片

2.2 ESP8266 在 SoftAP 模式

ESP8266 作为 SoftAP,手机、 电脑、 用户设备、 其他 ESP8266 Station 接口等均可以作为 Station 连入ESP8266, 组建成一个局域网。
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第6张图片

2.3 ESP8266 在 SoftAP + station 共存模式

ESP8266 支持 SoftAP + Station 共存的模式,用户设备、 手机等可以作为Station 连入 ESP8266 的 SoftAP 接口,同时, 可以控制 ESP8266 的 Station接口通过路由器(AP) 连入 internet。
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第7张图片

  1. 解读透传功能

    透传, 即透明传输功能。 Host 通过 uart 将数据发给 ESP8266, ESP8266 再通过无线网络将数据传出去; ESP8266 通过无线网络接收到的数据,同理通过uart 传到 Host。 ESP8266 只负责将数据传到目标地址,不对数据进行处理,发送方和接收方的数据内容、 长度完全一致,传输过程就好像透明一样。
    透传需要先建立连接:
    无线网络参数:
    网络名称(SSID)
    安全模式
    密钥(password)
    TCP 连接参数
    协议类型
    连接类型(client)
    目的 IP 地址
    目的端口
    串口参数
    波特率
    数据位
    检验位
    停止位
    硬件流控

  2. UART 成帧机制

ESP8266 判断 UART 传来的数据时间间隔,若时间间隔大于 20ms, 则认为一帧结束;否则, 一直接收数据到上限值 2KB, 认为一帧结束。 ESP8266 模块判断UART 来的数据一帧结束后, 通过 WIFI 接口将数据转发出去。
成帧时间间隔为 20ms, 一帧上限值为 2KB。

  1. 无线遥控应用

Phone 作为 Station, 连入 ESP8266 提供的 SoftAP, ESP8266 可通过 UART 与设备相连,进行无线控制。
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第8张图片

  1. 远程连接应用

ESP8266 作为 Station, 通过无线路由(AP) 连入 internet,可以向云端服务器上传数据、 下载固件更新;移动终端(手机、笔记本等) 也可以通过云端服务器, 远程控制 ESP8266。
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第9张图片

  1. 透明串口

用户设备的主 IC 作为 Host, 通过 UART 向 ESP8266 发送数据, ESP8266 再将数据通过无线网络传输给目的地址, 实现透明传输的功能。
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第10张图片

  1. 设置波特率:(新版本出厂波特率115200,旧版本不确定可以挨个试)

解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第11张图片
执行过上面那两条指令后,关闭串口并把串口波特率从9600换为115200,这时在重新打开串口,发送指令AT,若没出现乱码,则说明波特率修改完成。
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第12张图片

解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第13张图片
9. 模式的配置
9.1 模块SoftAP模式下做tcp server(意思就是模块是服务器,客户端去连模块)

AT+CWMODE=2 开启 AP 模式
AT+RST 重启指令,设置新的工作模式后需重启才能生效。我的模块不需要这条指令也行
AT+CWSAP=“ESP8266”,“0123456789”,11,0 设置模块的 wifi 、密码、通道号、加密方式
AT+CIPMUX=1 打开多连接
AT+CIPSERVER=1,8899 设置模块服务器端口,连接模块建立的无线网ESP8266.打开手机网络调试助手,在tcp client模式下,输入模块的 ip 和设置的端口。如图模块默认的 ip 为 192.168.4.1,端口为自己设定的 8899(默认的为 333) .
AT+CIPSEND=0,10 进入数据发送模式为十个字节
> 进入发送模式
0123456789 发送的 10 个数据

把WiFi模块与下载器连接后,再用串口线把下载器连接到PC机,打开安信可串口调试助手,选择正确的串口号及波特率,然后打开串口,按上面的指令开始配置。如下图:
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第14张图片
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第15张图片

执行到第5条AT+CIPSERVER=1,8899指令后,就可以打开手机连接这个热点了。
wifi
连上后,打开手机上的网络调试助手app,在下面第二幅图片中的IP是服务器的IP。我们可以发送AT+CIFSR指令查看服务器IP,然后输入到第二幅图的IP栏,端口号是我们在上面的指令中自己设置的,设置完成后点击Connect。
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第16张图片 解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第17张图片
完成上述操作后,串口调试助手会显示“0,CONNET”其中0表示连入的这个client的id,指令AT+CIPSEND=0,10中的0就是指的这个客户端,给它发10字节数据
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第18张图片
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第19张图片

9.2模块在SoftAP模式下做tcp client(意思就是模块是客户端,模块去连服务器)

AT+CWMODE=2 设置AP模式
AT+CWSAP=“ESP8266”,“0123456789”,11,0 设置模块的 wifi 、密码、通道号、加密方式
AT+CIPMUX=1 开启多连接模式
AT+CIPSTART=2,“TCP”,“192.168.4.2”,8081 手机网络调试助手tcp server模式下 ip 192.168.4.2 和端口 8081,先设置再去查看监听,设置成功后再通过串口发送这条指令进行连接。
AT+CIPSEND=2,6 向服务器发送6字节数据
> 进入发送模式
123456 发送的6字节数据

9.3 模块Station+SoftAP模式下做tcp server

AT+CWMODE=3 设置 AP 和 STA 共存模式
AT+RST 重启指令,设置新的工作模式后需重启才能生效,我的模块不需要这条指令
AT+CWLAP 查询附近 wifi
AT+CWJAP=“1”,“2580147369” 连接附近知道密码的wifi
AT+CIFSR 查看路由器分配的 IP,例如 192.168.4.1
AT+CIPMUX=1 打开多连接
AT+CIPSERVER=1,8899 设置模块服务器端口,端口 8899(默认的为 333),打开手机网络调试助手,在tcp client模式下连接模块的 ip 和端口号。
AT+CIPSEND=0,10 进入数据发送模式为十个字节
> 进入发送模式
0123456789 发送的 10 个数据
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第20张图片

执行AT+CIPSERVER=1,8899指令后,就可以打开手机连接热点。那么我们是连接热点“ESP8266”还是热点“1”呢?
我们输入指令AT+CIFSR得到以下信息:
+CIFSR:APIP,“192.168.4.1”
+CIFSR:APMAC,“1a:fe:34:0a:54:97”
+CIFSR:STAIP,“192.168.1.102”
+CIFSR:STAMAC,“18:fe:34:0a:54:97”
从这些信息中,我们可以知道当我们连接热点“ESP8266”时,我们打开手机网络调试助手,在tcp client模式下,这时我们输入服务器ip就是192.168.4.1,端口号8899。
当我们连接的热点是“1”时,在tcp client模式下,我们输入服务器IP就是192.168.1.102,端口号8899。
wifi
连上后,打开手机上的网络调试助手app
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第21张图片 解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第22张图片
完成上述操作后,串口调试助手会显示“0,CONNET”其中0表示连入的这个client的id,指令AT+CIPSEND=0,10中的0就是指的这个客户端,给它发10字节数据解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第23张图片
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第24张图片

9.4 模块在ap+sta模式下tcp client透传模式

AT+CWMODE=3 设置 AP 和 STA 共存模式
AT+RST 重启指令,设置新的工作模式后需重启才能生效,我的模块不需要这条指令
AT+CWLAP 查询附近 wifi
AT+CWJAP=“1”,“2580147369” 连接附近你知道密码的 wifi
AT+CIFSR 查看路由器分配的 IP,例如 192.168.4.1
AT+CIPMUX=0 设置单连接
AT+CIPMODE=1 设置透传模式
AT+CIPSTART=“TCP”,“192.168.1.101”,8890 手机 server 端的 ip 192.168.1.101 和端口 8890,先设置再去查看监听,设置成功后再通过串口去发送连接指令进行连接。
AT+CIPSEND 开始发送数据
> 进入发送模式
+++ 注意退出透传,直接发送。取消发送新行

注意透传只能在单连接模式下进行,所以在建立连接之前一定要用(AT+CIPMUX=0
设置单连接),但是模块处于服务器模式下时,必须要多链接,由于冲突,所以模块开启服务器模式不能做 tcp 透传!
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第25张图片
当执行到第7条AT+AT+CIPMODE=1指令时,这时手机连接热点名为“1”,密码为“2580147369”的热点。
1
再接着打开手机上的网络调试助手app,在tcp server模式下,我们把端口设置为8890,然后点击“Connect”,点击后变为下面的第二个界面。
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第26张图片 解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第27张图片
然后,接着发第8、9、10条指令,网络调试助手app发8266:
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第28张图片 解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第29张图片
要退出透传的话,把“发送新行”前的对号去掉,然后发送第10条指令。

9.5 模块Station模式下做tcp server

AT+CWMODE =1 开启Station模式
AT+CWJAP=”1”,”2580147369” 加入无线网络
AT+CIPMUX=1 开多连接模式
AT+CIPSERVER=1,8081 创建服务器
AT+CIFSR 查看本地IP地址
AT+CIPSEND=0,6 给ID为0的客户端发6个字节数据
> 进入发送模式
012345 发送的数据
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第30张图片解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第31张图片

9.6 模块Station模式下做tcp client

AT+CWMODE =1 开启Station模式
AT+CWJAP=”1”,”2580147369” 加入无线网络
AT+CIPMUX=1 开多连接模式
AT+CIPSTART=2,”TCP”,”192.168.1.101”,8088 建立TCP连接,在执行这条指令之前,先在网络调试助手tcp server 模式下,创建服务器。
AT+CIPSEND=2,6 给服务器2,发6字节数据
> 发送数据模式
012345 发送的数据
解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第32张图片解读ESP8266三种工作模式并提供模块配置步骤与截图,最后附上模块对stc8单片机的简单控制代码_第33张图片

代码部分:
uart3.h文件

#ifndef __UART3_H__
#define __UART3_H__

extern bit busy3;

void Uart3Init(void);
void Uart3_Byte(char dat);
void Uart3_String(char *s);

#endif

uart3.c文件

#include "stc8.h"
#include "uart3.h"

bit busy3;

// 串口3初始化
void Uart3Init(void)		// [email protected]
{
	S3CON = 0x10;		    // 8位数据,可变波特率
	S3CON &= 0xBF;		    // 串口3选择定时器2为波特率发生器
	AUXR |= 0x04;		    // 定时器2时钟为Fosc,即1T
	T2L = 0xE6;		        // 设定定时初值
	T2H = 0xFF;		        // 设定定时初值
	AUXR |= 0x10;		    // 启动定时器2
	IE2 = ES3;              // 使能串口3中断
	EA = 1;                 // 开总中断
}

/******** 发送一个字节数据 **********/
void Uart3_Byte(char dat)
{
	while(busy3);
	busy3 = 1;
	S3BUF = dat;
}

/********  发送一个字符串 **********/
//void Uart3_String(char *s)
//{
//	while(*s != '\0')
//	{
//		Uart3_Byte(*s++);
//	}
//}

char putchar(char c)
{
	Uart3_Byte(c);
	return c;
}

SoftAP模式的main.c文件

#include 
#include  // 在uart3.c文件中重写putchar方法后,再加上这个头文件,就可以使用printf
#include "uart3.h"

sbit LED1=P6^0;
typedef unsigned int  uint;
typedef unsigned char uchar;
uchar receive[2];
uchar sign=0;

void Delay_ms(uint  xms)   
{
    uint i, j;
	for(i=xms;i>0;i--)
		for(j=921;j>0;j--);
}

// 单片机向ESP8266模块发送AT指令
void wifi_init()
{
	// 如果ESP8266之前,已经配置过下列语句
	
	printf("AT+CWMODE=2\r\n");
	Delay_ms(1000);                     // 延时一下
	printf("AT+CWSAP=\"ESP8266\",\"0123456789\",11,0\r\n");
	Delay_ms(1000);
	
	// 那么只要下面两条语句也行
	
	printf("AT+CIPMUX=1\r\n");
	Delay_ms(1000);                       
	printf("AT+CIPSERVER=1,8899\r\n");
	Delay_ms(1000);
}

void wifi_data()
{
	if(receive[0]=='A')     
		LED1=0;                           // 亮
	if(receive[0]=='B')    
		LED1=1;                           // 灭
}   
void main()
{
	P_SW2 = 0x02;                         // RXD3_2/P5.0, TXD3_2/P5.1
	Uart3Init();                          // 串口3初始化
	wifi_init();                          // ESP8266初始化
	while(1)
	{
		wifi_data();
	}
}
// 中断程序,此程序只把+IPD,x,x:后的有用数据存进receive数组里
void Uart3_isr() interrupt 17
{
	if(S3CON & S3RI)
	{
		S3CON &= ~S3RI;
		if(sign==1)
		{
			receive[0] = S3BUF;
			sign = 0;                    // 保存receive[0]的数据
		}
		if(S3BUF==':')       
			sign = 1;
	}
	if(S3CON & S3TI)
	{
		S3CON &= ~S3TI;
		busy3 = 0;
	}
}

Station+SoftAP模式的main.c文件

#include 
#include  // 在uart3.c文件中重写putchar方法后,再加上这个头文件,就可以使用printf
#include "uart3.h"

sbit LED1=P6^0;
typedef unsigned int  uint;
typedef unsigned char uchar;
uchar receive[2];
uchar sign=0;

void Delay_ms(uint  xms)   
{
    uint i, j;
	for(i=xms;i>0;i--)
		for(j=921;j>0;j--);
}

// 单片机向ESP8266模块发送AT指令
void wifi_init()
{
	// 如果ESP8266之前,已经配置过下列语句
	
	printf("AT+CWMODE=3\r\n");
	Delay_ms(1000);                     // 延时一下
	printf("AT+CWLAP\r\n");
	Delay_ms(1000); 
	
	// 下面这个热点“1”是可以上网的热点,也就是它能被ESP8266查询到
	
	printf("AT+CWJAP=\"1\",\"2580147369\"\r\n");
	Delay_ms(1000);
	printf("AT+CIFSR");
	Delay_ms(1000); 
	
	// 那么只要下面两条语句也行
	
	printf("AT+CIPMUX=1\r\n");
	Delay_ms(1000);                       
	printf("AT+CIPSERVER=1,8899\r\n");
	Delay_ms(1000);
}

void wifi_data()
{
	if(receive[0]=='A')     
		LED1=0;                           // 亮
	if(receive[0]=='B')    
		LED1=1;                           // 灭
}   
void main()
{
	P_SW2 = 0x02;                         // RXD3_2/P5.0, TXD3_2/P5.1
	Uart3Init();                          // 串口3初始化
	wifi_init();                          // ESP8266初始化
	while(1)
	{
		wifi_data();
	}
}
// 中断程序,此程序只把+IPD,x,x:后的有用数据存进receive数组里
void Uart3_isr() interrupt 17
{
	if(S3CON & S3RI)
	{
		S3CON &= ~S3RI;
		if(sign==1)
		{
			receive[0] = S3BUF;
			sign = 0;                    // 保存receive[0]的数据
		}
		if(S3BUF==':')       
			sign = 1;
	}
	if(S3CON & S3TI)
	{
		S3CON &= ~S3TI;
		busy3 = 0;
	}
}

安信可串口调试助手、网络调试助手app(Android版本)、网络调试助手(PC版本)、烧录WiFi固件工具四个软件的下载地址:https://download.csdn.net/download/weixin_43915898/11617094

你可能感兴趣的:(备忘录,ESP8266,STC8单片机,简单控制)