51单片机与ESP8266-01s模块通讯点灯

前言

          本文章为方便新手上手直接用最简单的点灯展示,关于ESP8266-01s的AT指令类就上网搜有很多这就不多讲了。

接线

ESP-01SUSB转TTL51单片机
VCC3.3V3.3V
GNDGNDGND
EN3.3V3.3V
TXRXP3.0
RXTXP3.1
IO0(注刷固件时插)GND(注刷固件时插)


一、ESP8266-01S接USB转TTL

如果是要刷固件的话ESP8266-01s的IO0接要接上USB的地,其余时候是不需要接的。


二、ESP8266-01S接51单片机

单片机烧录文件的时候需要拔掉TX和RX,不然会冲突无法烧录,烧录完成后插回去,然后按下复位键即可。如是需要在接51单片机在用串口助手去给ESP8266打指令的话就把51的RX和TX接是ESP8266-01s的RX和TX,也就是正插,平常使用都是和模块的RX与TX反插。

三、所用到AT指令

AT+CWMODE=2

AT+CWSAP="8266","123456789",1,3

AT+UART_DEF=9600,8,1,0,0

AT+CIPMUX=1

AT+CIPSERVER=1,8080

四、固件问题

固件一般新买的都有默认固件,一般需要刷固件的是EPS8266-01s变成砖头打不进指令才需要刷固件,固件有两种一种是出厂固件,一种是升级固件,一般不需要很多特殊指令的话就不用刷升级固件,出厂固件够用。

五、具体流程

1.首先从刷固件开始(若能打指令就跳过这到打指令部分)

需要的文件本博文结尾提供下载

工具

 选择第一个

 

 

 固件路径

原装出厂固件库\Ai-Thinker_ESP8266_AT_Firmware_DOUT_v1.5.4.1-a_20171130\Ai-Thinker_ESP8266_DOUT_8Mbit_v1.5.4.1-a_20171130

 

 等进度条完成后就ok了就关掉,在打开串口调试工具。

2.调试指令部分

AT指令不懂意思的话百度直接搜有很多解释

 输入3条指令即可,这三条指令保存到Flash,掉电不删除此配置。每输入一条ESP8266-01s都会回一个ok,因为剩下两条AT指令断电会自动重置掉所以直接代码里写入。也可以全部指令在代码里写入,这部分就可跳过。

六、 代码部分

源代码如下:

#include <REGX52.H>
unsigned char Recive_table[15];        //用于接收wifi模块反馈到MCU上的数据
char Recive_state = 0;
bit uart_busy = 0;

/* ----------------------
	  延时5毫秒
---------------------- */
void delay5ms() {
    unsigned char a,b;
    for(b=101;b>0;b--)
        for(a=147;a>0;a--);
}

/* ----------------------
	  初始化串口,波特率9600
---------------------- */
void Init_uart(void) {  
	TMOD = TMOD | 0x20;    //定时器1工作在方式2  8位自动重装  
	SCON = SCON | 0x50;    //串口1工作在方式1  10位异步收发 REN=1允许接收  
	TH1 = 0xFd;            //定时器1初值  
	TL1 = TH1;  
	TR1 = 1;               //定时器1开始计数  
	EA =1;                 //开总中断  
	ES =1;                 //开串口1中断  
}


/* ----------------------
	串口发送数据方法
---------------------- */
void Uart_SendByteData(unsigned char msg){
	while(uart_busy); //等待上一个数据发送完成
	SBUF=msg;		  
	uart_busy = 1;	 //串口发送置忙
}
void Uart_SendStrData(unsigned char *msg){
	while(*msg){
		Uart_SendByteData(*msg++);
	}
}


/* ----------------------
	初始化WIFI模块
---------------------- */
void Init_ESP01S(){   
	Uart_SendStrData("AT+CIPMUX=1\r\n");            // 设置多连接
	delay5ms();   
	Uart_SendStrData("AT+CIPSERVER=1,8080\r\n");      // 配置服务器,监听8080端口
	delay5ms();
}


void main(){
	Init_uart();
	Init_ESP01S();    // Init_ESP01S 与 Init_uart调用的顺序不能改变
	P1_0 = 1;
	while(1){
		if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P'))//MCU接收到的数据为+IPD时进入判断控制0\1来使小灯亮与灭,网络中的无线设备发送到ESP-01S的数据信息固定格式+IPD,<客户ID>,<信息长度>:<信息内容>。
		{	
				 if((Recive_table[3]=='D')&&(Recive_table[6]==','))
			{
					  if(Recive_table[9]=='0')
				{
								P1_0 = 0;
				}
						if(Recive_table[9]=='1')
				{
								P1_0 = 1;
				}
			}
		}
 Recive_state = 0;
}
}


/* ----------------------
	  串口中断
---------------------- */
void UART_Interrupt(void) interrupt 4 {
	static char i=0;
	
if(RI==1){
				ES = 0;
        RI=0;
        Recive_table[i]=SBUF;    //MCU接收wifi模块反馈回来的数据
        i++;
				if(Recive_table[i-1]=='\n')
        {
            Recive_table[i]='\0';
            i=0;  //遇到换行 重新装值
            Recive_state = 1;
					  }
        ES = 1;
    }
    else TI=0;
			uart_busy = 0;
}

七、网络测试

烧录代码完成后按下复位键就可以打开网络调试助手能连上能发信息就可以了。

八、文件下载

固件库+调试软件 (提取码:yyds)

  • 10
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: 要将ESP8266-01S连接到32单片机,需要进行以下步骤: 1. 准备好ESP8266-01S模块和32单片机。 2. 将ESP8266-01S模块的VCC引脚连接到32单片机的3.3V电源引脚,GND引脚连接到32单片机的GND引脚。 3. 将ESP8266-01S模块的TX引脚连接到32单片机的RX引脚,RX引脚连接到32单片机的TX引脚。 4. 将ESP8266-01S模块的CH_PD引脚连接到32单片机的任意IO引脚,将ESP8266-01S模块的RST引脚连接到32单片机的任意IO引脚。 5. 在32单片机上编写代码,使用串口通信ESP8266-01S模块进行通信,实现WiFi功能。 需要注意的是,ESP8266-01S模块的工作电压为3.3V,不能直接连接到5V的单片机引脚上,否则可能会损坏模块。同时,ESP8266-01S模块的RX引脚和TX引脚需要使用逻辑电平转换器进行转换,以保证与32单片机通信正常。 ### 回答2: ESP8266-01S是一款Wi-Fi模块,它可以实现通过无线方式连接互联网。32单片机是一种低功耗、高性能的单片机,它可以用来控制各种电子元件进行各种任务。如果将ESP8266-01S与32单片机连接起来,可以实现通过Wi-Fi控制32单片机,将其连入互联网。 首先,将ESP8266-01S连接到32单片机的串口上,使用串口通信协议进行通信,以便在32单片机程序中进行对ESP8266-01S的控制。然后,在32单片机程序中使用类似AT指令的代码来对ESP8266-01S进行配置,包括设置Wi-Fi SSID和密码等。这些配置信息可以在开机时自动加载,以便ESP8266-01S可以自动连接到Wi-Fi网络。 接下来,可以用32单片机来控制ESP8266-01S输出HTTP请求,以便向外部的Web服务器访问各种资源。在32单片机中,可以使用HTTP客户端库来实现HTTP请求的发送和接收,以便接收来自服务器的响应。在此过程中,ESP8266-01S负责将数据通过Wi-Fi传输到外部服务器,并将服务器的响应传回给32单片机。 最后,可以通过32单片机程序来实现设备的控制和数据的收集/发送。例如,可以将32单片机用于控制家庭设备,然后通过ESP8266-01S连接到互联网,以便远程访问和控制这些设备,或者以便发送数据到外部服务器以进行数据分析等操作。 总之,ESP8266-01S和32单片机的连接为物联网的实现提供了便利的方案。可以实现无线连接到互联网世界,并将嵌入式设备带到新的高度。 ### 回答3: ESP8266-01S模块是一种低成本的Wi-Fi模块,主要用于连接无线网络。同时,ESP8266-01S模块也可以作为一个智能芯片,通过串口通信控制其他单片机。其中,32单片机是一种低功耗、高性能的ARM架构微控制器,通常用于嵌入式系统中。在实际应用中,我们可以通过以下步骤将ESP8266-01S模块和32单片机连接起来。 第一步,准备好硬件连接。ESP8266-01S模块和32单片机之间可以通过串口连接。我们可以通过将ESP8266-01S模块的TX引脚连接到32单片机的RX引脚,将ESP8266-01S模块的RX引脚连接到32单片机的TX引脚来实现串口连接。 第二步,编写ESP8266-01S模块的代码。我们可以使用AT指令来控制ESP8266-01S模块,从而实现与32单片机之间的通信。首先,我们需要将ESP8266-01S模块设置为AP模式或STA模式,以实现Wi-Fi连接。接着,我们可以使用AT+CIPSTART指令来建立TCP连接,然后使用AT+CIPSEND指令发送数据。发送的数据可以是字符串、二进制数据等等。 第三步,编写32单片机的代码。我们需要使用32单片机的串口模块来接收ESP8266-01S模块发送的数据。在接收到数据后,我们可以对数据进行处理,执行一些特定的操作。 总之,通过以上步骤,我们可以将ESP8266-01S模块与32单片机连接起来,从而实现无线网络通信和其他应用。在实际应用中,我们可以将32单片机作为主控芯片,连接多个ESP8266-01S模块,实现更加复杂的控制和通信
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值