草庐IT

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

吃土长大的娃 2023-07-15 原文

第一步:所需材料:

我录制了关于此课程的视频,在b站,大家可以前往b站观看视频bandicam 2022-05-16 11-45-49-495_哔哩哔哩_bilibili

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

那说明你必然有

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

2、esp8266-01S

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

4、杜邦线若干

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

附图一张👇

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

1、先说USB转TTLesp8266的接法

 USB转TTL模块esp8266
RXDTX
TXDRX
GNDGND
3.3V3.3V
VCCEV

说明

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=11 Station 模式
AT+CWMODE=22 AP 模式
AT+CWMODE=33 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后记得关闭自己手机的流量!!!

最后说明:::

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

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

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

有关esp8266与51单片机通信(看完不会你打我)用手机控制led灯的亮灭的更多相关文章

  1. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  2. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  3. C51单片机——实现用独立按键控制LED亮灭(调用函数篇) - 2

    说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时

  4. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  5. ruby-on-rails - prawnto 显示新页面时不会中断的表格 - 2

    我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.

  6. ruby-on-rails - 使用 ApplicationController.renderer.render 从 Controller 外部渲染的 Rails 5 不会在自身上设置变量 - 2

    我正在使用Rails5ApplicationController.renderer.render方法从模型中进行渲染。我需要将一些变量传递给我的布局,这是我使用locals选项完成的;如果直接访问此变量,则该变量在布局中可用,但不能通过self访问。这是我设置渲染的方式html_string=ApplicationController.renderer.render(file:"/#{template_path}/base/show",:formats=>[:pdf,:html],locals:{:@routing_form=>self,:controller_name=>contro

  7. ESP32学习入门:WiFi连接网络 - 2

    目录一、ESP32简单介绍二、ESP32Wi-Fi模块介绍三、ESP32Wi-Fi编程模型四、ESP32Wi-Fi事件处理流程 五、ESP32Wi-Fi开发环境六、ESP32Wi-Fi具体代码七、ESP32Wi-Fi代码解读6.1主程序app_main7.2自定义代码wifi_init_sta()八、ESP32Wi-Fi连接验证8.1测试方法8.2服务器模拟工具sscom58.3测试代码8.4测试结果前言为了开发一款亚马逊物联网产品,开始入手ESP32模块。为了能够记录自己的学习过程,特记录如下操作过程。一、ESP32简单介绍ESP32是一套Wi-Fi(2.4GHz)和蓝牙(4.2)双模解决方

  8. micropython复现经典单片机项目(二)可视化音频 频谱解析(基本搞定) - 2

    本人是音乐爱好者,从小就特别喜欢那个随着音乐跳动的方框效果,就是这个:arduino上一大把对,我忍你很久了,我就想用mpy做,全网没有,行我自己研究。果然兴趣是最好的老师,我之前有篇博客专门讲音频,有兴趣的可以回顾一下。提到可视化频谱,必然绕不开fft,大学学过这玩意,当时一心玩,老师讲的一个字都么听进去,网上教程简略扫了一下,大该就是把时域转频域的工具,我大mpy居然没有fft函数,奶奶的,先放着。音频信息如何收集?第一种傻瓜式的ADC,模拟转数字,原始粗暴,第二种,I2S库,我之前博客有讲过,数据是PCM编码。然后又去学PCM编码,一学豁然开朗,舒服,以代码为例:audio_in=I2S

  9. ruby - apt Recipe 不会安装在我的 Recipe 中 - 2

    我正在尝试使用Vagrant创建我的第一个ChefRecipe,但在第一步就遇到了问题。我的Recipe的第一行是:include_recipe"apt"但是当我尝试vagrantprovision时,出现以下错误:==>default:[2014-09-21T07:15:42+00:00]WARN:MissingCookbookDependency:==>default:Recipe`apt`isnotintherun_list,andcookbook'apt'==>default:isnotadependencyofanycookbookintherun_list.Toloadth

  10. ruby - Rails 3 不会用 rvm 安装 sqlite3-ruby gem? - 2

    我正在试用rvm,并用它安装了ruby​​1.9.2和rails3。我需要重新安装sqlite3-rubygem(因为rvm为不同版本的ruby​​将所有gem分开)。问题是,当我尝试时,我得到:geminstallsqlite3-ruby/home/jenny/.rvm/rubies/ruby-1.9.2-p0/bin/gem:4:warning:Insecureworldwritabledir/home/jenny/.rvm/gems/ruby-1.9.2-p0/bininPATH,mode040777Buildingnativeextensions.Thiscouldtakeaw

随机推荐