esp8266与51单片机通信(看完不会你打我)用手机控制led灯的亮灭

第一步:所需材料:

 

既然你刷到我这篇学习总结了

那说明你必然有

1、51单片机(多数然应该是开发板,我用的是普中A7)————最好还有最小开发系统板

2、esp8266-01S

3、USB转TTL模块:这个模块并不是一定得有,你有开发板那就说明可以打开串口给单片机烧录程序了,但是有了也挺好,可以了解到这个模块接线的快乐,还可能遇到因为电压不足无法正常运行esp8266的问题,不踩坑就没办法进步,反正我是踩过了(无语)

4、杜邦线若干

5、数据线——进行数据传送,两根最好,但是要有开发板的电源线也是一样的,一根数据线一根电源线或数据线

附图一张👇

 第二步:PC端通过USB转TTl配置esp8266——AT指令

1、先说USB转TTLesp8266的接法

 USB转TTL模块 esp8266
RXD TX
TXD RX
GND GND
3.3V 3.3V
VCC EV

说明

1.TXD发送引脚、RXD接收引脚,发送对接收,所以USB转TTL与esp8266的RXD、TXD交叉相接。

2.3.3V相接后可能无法启动esp8266,这是因为USB转TTL的3.3V引脚并没有真的达到3.3V,不要慌直接将esp8266的3.3V引脚接入USB转TTL的5V引脚,如果esp8266突然就发热并且烫的无法触摸,立马拔掉,如果说温度你的触感还能接受,那就没问题,毕竟牛X的esp8266没那么脆弱。

3.esp8266的EV引脚有些可能会标注成CH_PD,不要怕功能一样的,接线方式也是一样的

附图一张👇

 既然连接好了就说说怎么用吧

        连接好之后插入电脑的USB接口,然后打开XCOM(串口助手)串口助手网络上有好多种,说这个好用那个好用的,我只相信官方,去安信可科技官网下载串口助手,好不好用是否适合你不清楚,但是我知道他是官方的!!!官方的!!!

        下载好之后直接可以打开,串口会自动刷新已连接的串口号,但是可能你电脑连接了多个,那你打开自己的计算机管理器->设备管理器->端口查看就行,一般情况下直接刷新了串口点击选择即可,我的端口是COM4,波特率115200就可以,因为esp8266出场固件波特率就是115200,而后打开串口,如下图👇

 而后直接点击发送就行,然后巴拉巴拉的返回一些数据最后返回ready!就说明你已经连接成功了,很恭喜恭喜!如果不返回数据,仔细检查你线路连接,如果都连接正确,还是不返回数据,把线拔了在连一次,还是无法发送,把EV引脚拔了,还是不行,去安信可科技官网重新刷一遍你的固件。要注意的是:在使用多个软件使用串口时需关闭其他软件串口,因为一个串口只能被一个软件打开。如果串口打不开可能是电脑缺少CH340驱动。

安信可科技官网里面这些基础的资料都有自己慢慢探索~~~

 现在进行用电脑对esp8266进行At指令配置(我只讲我用的AT指令,至于每条AT指令什么意思自己多去看看AT指令集,网上很多自己查吧)

1——首先发送  AT+CWMODE=3 既然是WiFi模块 他就既可以作为客户端连接别人的热点,也可以做服务端让别人连接它的热点 。

AT+CWMODE=1 1 Station 模式
AT+CWMODE=2 2 AP 模式
AT+CWMODE=3 3 AP 兼 Station 模式

AP模式:提供无线网络接入服务,允许其他无线设备连接其网络,类似无线路由器。
Station模式:本身不提供无线接入服务,可以连接AP,类似无线终端设备。

先跟着我的步骤走,连接成功了在一步一步尝试别的模式

2——其次发送   AT+CWSAP="ESP8266","12345678",11,3(里面的参数可以自行修改

该指令的说明如下图👇

 3——因为单片机的波特率最高就9600,所以为了后面单片机和esp8266正常通信,还要发送一条指令修改esp8266的波特率 AT+CIOBAUD=9600,8,1,0,0 返回ok后  记得将串口先断开然后把串口助手的波特率也进行修改 9600

4——最后一步 发送AT+RST 重启esp8266就完事了  然后你就可以把USB转TTL的线全部拆了  突然感觉轻松好多吧哈哈哈

第三步:单片机与esp8266通信

        网上有好多示例点灯的,他们的侧重点好像都是在程序上,程序自然很重要,但是程序要与实际的开发板电路原理图相匹配才可以,要不然你程序写的无论多么规范,都完成不了你所需要实现的内容。

        也是因为查阅好多资料都在讲程序怎么样怎么样,导致我一直觉得是我程序的问题,也是废了好大的劲才完成最最最基本的点灯实验。下面就开始讲我遇到的坑吧。

        为了写这篇文章,我自己编写了一个最最最简单的点灯程序(别人的程序都是判断这个判断哪个 一共七八个灯一起亮,太麻烦了 对我这样的小白来说就像天书一样)

#include<reg51.h>

#define uint unsigned int
#define uchar unsigned char

sbit led1=P1^1;
sbit led2=P1^2;
sbit led3=P1^3;

uchar Recive_table[15];
uint i;
void delay_ms(uint ms)
{
	uchar i,j;
	for(i=ms;i>0;i--)
	for(j=120;j>0;j--);
}

void delay_us(uchar us)
{
	while(us--);
}

void Usart_Init()//初始化51单片机
{
	SCON = 0x50;//串行口中断方式一,且启动串行口接受(REN=1)
	TMOD = 0x20;//计数器1工作方式2,自动重装载
	
	TH1 = 0xfd;//设置波特率与esp8266达成一致
	TL1 = TH1;
	
	PCON = 0;//波特率不加倍
	
	TR1 = 1;//启动计数器
	EA = 1;//开总中断
}

void SENT_At(uchar *At_Comd)//指针指向At指令
{
	ES = 0;//关闭串口中断
	while(*At_Comd!='\0')
	{
		SBUF = *At_Comd;
		while(!TI);//等待该字节发送完毕,发送完后硬件自动置一TI
		TI = 0;//硬件之以后必须软件置零才能进行下一次数据传送
		delay_us(5);
		At_Comd++;//指向下一个字节
	}
}
void WIFI_Init()//通过单片机配置AT指令
{
	SENT_At("AT+CIPMUX=1\r\n");//多连接模式
	delay_ms(1000);
	led1=0;//发送成功后亮灯
	SENT_At("AT+CIPSERVER=1,8080\r\n");//设置端口号
	delay_ms(1000);
	led2=0;//设置成功后亮2号灯
	ES = 1;
}

void main()
{
	Usart_Init();
	WIFI_Init();
	while(1);
}

void Uart() interrupt 4 //中断程序
{
	if(RI==1)//接受一帧完成后由硬件置一
	{
		RI = 0;//软件清零,防止下次未接收完成就执行程序
		Recive_table[i] = SBUF; //将接受数据存入数组
		if(Recive_table[0]=='+')
		  i++;
		else
			i = 0;
		if(i>=10)
		{
			if((Recive_table[0]=='+')&&(Recive_table[1]=='I')&&(Recive_table[2]=='P')&&(Recive_table[3]=='D'))
			{
				if(Recive_table[9]=='1')//输入1亮灯
					led3 = 0;
				if(Recive_table[9]=='0')//输入0关灯
					led3 = 1;
			}
			i = 0;//如果不清零 就无法达到变化
		}
	}
	else
   TI = 0;		
}

是时候讲讲我遇到的最大的坑了,就是我开发板(普中A7)

 

 

 

 

 由图我们可以看得出单片机的TXD、RXD两个引脚分别要出两个公引脚  一对是P3^0/P3^1 还有一对是开发板上USB转TTl的J44、J39排针上,所以当你USB转TTL上的跳线帽没有摘的时候,你把esp8266上的RXD、TXD引脚接入P3^0/P3^1引脚上的时候单片机就不知道你到底要给谁发送数据了,单片机也不知道自己到要接受谁的数据,单片机就会说,这啥啊这是!!!哈哈哈

        所以正确的做法是把开发板上USB转TTL的跳线帽拔掉然后,插上esp8266的数据线就可以啦

        但是有些开发板可能没有跳线帽是PCB内部接线,这就是开头所说到的,要一个开发板最小系统

 

第四步:网络调试助手

最后一步啦

打开手机上的网络调试助手,这个时候是不是又在想用哪一款网络调试助手呢,回答是一样的安信可科技,自己上官网搜索,虽然它里面有些性能真的不太好,但是他的界面我太爱了,官网就是牛X!

打开:点击左侧三条杠                                                          点击TCP Client                    

                                               

 输入以下IP地址 和 端口号                                                     发送1led3亮   发送0led3 灭 

                                            

 注意:打开手机上网络助手时,应该先连接esp8266所建立的热点,进入网络助手后记得单片机重新上电,使单片机程序At指令重新配置esp8266.连接esp8266wifi后记得关闭自己手机的流量!!!

最后说明:::

        我也是查了好多资料总完成的通信,每个人的开发板都不同,所用元器件也不一样,但是原理是一样的,特别感谢   赶路人的星光  他写的文章中有一篇也是关于点灯的 超级详细 

        这个文章也是我刚刚完成点灯后写的学习记录心得,肯定有说错讲错的地方,如果本人有让您刷到这篇文章了,可以积极评论,指出我的不足或者您的疑问,看到消息后会第一时间回复

刚开始使用博客,如果本文章对大家有用,希望大家关注走一波,有机会共同学习进步。

版权声明:本文为CSDN博主「吃土长大的娃」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/River_and_lake/article/details/121431164

生成海报
点赞 0

吃土长大的娃

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

STC89C51驱动0.96寸oled避坑教程(I2C)

51单片机 一.前言 说起51,可以说是老古董了,刚开始接触单片机就是从51开始,今天就来用51单片机驱动oled显示屏,oled显示屏采用i2c的接口,因为51的代码看