600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 基于51单片机+ESP-01WIFI模块LED灯的控制

基于51单片机+ESP-01WIFI模块LED灯的控制

时间:2020-10-28 00:01:35

相关推荐

基于51单片机+ESP-01WIFI模块LED灯的控制

基于51单片机+ESP-01WIFI模块LED灯的控制

1、前期准备2、ESP-01与USB-TTL接线图3、ESO-01的调试4、单片机软件程序的设计5、感想

1、前期准备

提前了解ESP-01WIFI模块的AT指令,了解串口调试助手的基本使用方法,准备一个USB-TTL模块工具,准备一块C51单片机开发板,当然也可以自己制作一个简单的开发板,这个根据个人的情况,手机上下载一个网络调试助手,前期的工作基本准备就绪。

2、ESP-01与USB-TTL接线图

ESP-01wifi模块中供电电压一般是3.0~3.6v之间,所以在选择电压时要选择3.3的电压,否则芯片会发烫甚至会烧坏。ESP-01wifi模块需要接GND、TXD、RXD、VCC、EN这5个端口。EN端是高电平触发,所以要接3.3V电压。在ESP-01wifi模块与USB-TTL时,注意TXD和RXD接法,ESP-01wifi模块的TXD、RXD与USB-TTL的RXD、TXD对应相接。具体的连接如下图所示:

3、ESO-01的调试

个人总结了ESP-01WIFI模块的设置步骤和指令,供大家参考:

1、AT+UART=9600,8,1,0,0 进行波特率的设置。

2、AT 查看wifi模块是否正常工作。

3、AT+RST 重启wifi模块。

4、AT+CWSAP=“HZ”,“12345678”,1,4 wifi账号和密码,这个配置掉电可以保存。

5、AT+CIPMUX=1 设置连接方式(0单连接,1多连接),该设置为多连接。

6、AT+CIPAP=“192.168.4.1” 设置IP地址。

7、AT+CIPSERVER=1,8086 设置端口号。

到了这一步设置基本上已经完成,wifi模块可以正常使用了。AT+CIFSR 查询IP地址,AT+CIPSEND=0,18 wifi模块的发送指令,从串口调试助手发送手机上接收。下图为调试设置成功图如下:

如果没有成功可能会出现因为以下原因:1、串口通信波特率没有选对,一般的wifi模块,通过手册可以查询到初始波特率,一般为115200。2、USB-TTL模块与WIFI模块的对应端口连接不对。3、如果手机与wifi模块连接失败,查看wifi模块的EN端看是否连接,或者电压是否正确。4、查看设置的IP地址和端口是否正确。5、串口号没有选择正确,或着没有开启。这个是自己在操作时所遇到的,应该还会有其它的原因,希望大家多多补充。本次操作手机使用的是-有人网络助手。

4、单片机软件程序的设计

本实验的目标是通过手机输入控制8个LED灯的亮灭,输入0单片机的8个LED灯全部亮,输入1全部灭。并且结果反馈到手机上。单片机的程序设计主要有下面几个主要程序。

首先是串口初始化:

void UsartInit() {SCON=0X50;//设置为工作方式1TMOD=0X20;//设置计数器工作方式2PCON=0X80;//波特率加倍TH1=0XF3;//计数器初始值设置,注意波特率是4800的TL1=0XF3;ES=1;//打开接收中断EA=1;//打开总中断TR1=1;//打开计数器}

字符串发送程序:

void ESP8266_Set(uchar *puf) // 用来发送字符串的函数 {while(*puf!='\0') {Send_Uart(*puf); us_delay(10); puf++; } us_delay(10); Send_Uart('\r'); us_delay(10); Send_Uart('\n'); }

wifi模块初始化:

void wifi_Init()//初始化{ESP8266_Set("AT");us_delay1(4000);ESP8266_Set("AT+CWMODE=2");us_delay1(4000);ESP8266_Set("AT+RST");us_delay1(4000);ESP8266_Set("AT+CIPMUX=1");us_delay1(4000);ESP8266_Set("AT+CIPSERVER=1,8086");us_delay1(4000);ESP8266_Set("AT+CIPSTO=0");}

wifi接收模块:

void wifi_recive() interrupt 4 {static uchar i=0; if(RI==1) {RI=0; Receive=SBUF; receiveTable[i]=Receive; if((receiveTable[i]=='\n')){i=0;} else i++; } else TI=0; }

wifi发送模块:

void wifi_send(){ESP8266_Set("AT+CIPSEND=0,10");us_delay1(200);if(P2 == 0x00)ESP8266_Set("LED打开");elseESP8266_Set("LED关闭");}

wifi数据的解析:

void wifi_ZX(){if((receiveTable[0]=='+')&&(receiveTable[1]=='I')&&(receiveTable[2]=='P'))//{if(receiveTable[9]=='0' ) {P2 = 0x00;wifi_send();}if(receiveTable[9]=='1' ) {P2 = 0xff;wifi_send();}}}

通过实验操作,实现了上述的操作目标。

5、感想

从拿到wifi模块,到一点一点熟悉,通过查询资料和参考各个博主的博客,用了两天的时间完成了整个操作过程并且效果也得到了实现。这是第一次写博客,里面会有很多不足的地方,以后慢慢的补充学习,还希望大家能够多多提供意见!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。