基于51单片机的WIFI遥控小车开发设计可行性研究方案.docx
《基于51单片机的WIFI遥控小车开发设计可行性研究方案.docx》由会员分享,可在线阅读,更多相关《基于51单片机的WIFI遥控小车开发设计可行性研究方案.docx(35页珍藏版)》请在冰豆网上搜索。
基于51单片机的WIFI遥控小车开发设计可行性研究方案
基于51单片机的WIFI遥控小车开发设计可行性研究方案
第1章绪论
现在是一个智能化的时代,各种智能化的设备正在逐步代替人为的操作。
随着汽车工业的迅速发展,关于智能汽车的研究也越来越受人们关注。
全国电子大赛和省内电子大赛几乎每次都智能小车这方面的题目,全国各高校也都很重视该课题的研究。
设计的WIFI智能小车能够实现自动循迹,壁障功能,可程控行驶速度、电脑手机WIFI连接控制行驶及其他的控制方式。
本系统能实现对小车的运动状态进行实时控制。
系统控制灵活、可靠、精度高、可满足对系统的各项要求。
本设计以STC89C52RC单片机为控制核心,利用ESP8266WIFI模块和路由器接收和处理无线信号,然后通过WIFI模块和单片机之间的串口通信来传递信息,从而完成手机控制单片机的运作。
通过对本小车的研究,我们可以初步构建智能汽车的模型和理论基础。
对于智能汽车的研究,国内外都有很大的成就,谷歌的无人驾驶汽车,已经能够在高速公路上安全行驶数千里,在高速行驶下都能有这么好的操控能力,无非是智能汽车领域的一座里程碑。
在智能家居系统研发方面,美国及一些欧洲国家一致处于领先地位,今年来,以美国微软公司及摩托罗拉公司等为首的一批国外知名企业,先后跻身于智能家居系统的研发中。
例如:
微软公司开发的“梦幻之家”、摩托罗拉公司开发的“居所之门”IBM公司开发的“家庭主任”等均已日趋成稳定技术强占家居市场。
此外,日韩等新国的龙头企业纷纷致力于家居智能化的开发,对家居市场更是跃跃欲试。
本设计选用的89C52单片机属于MSC-51系列单片机,由Intel公司开发,其结构有8字节FLASH闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89c52可降至OHz的静态逻辑操作,并支持两种软件可选的节电上作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器.串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
由于89C52的系统性能满足系统数据采集及时间精度要求,而且产品产量丰富来源广,应用也很成熟,故用来作为控制核心。
新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。
本设计主要研究内容就是基于89C52设计一部WIFI智能小车,小车能够实现WIFI遥控的智能小车控制系统。
第2章方案论证及选择
2.1系统方案选择
方案1:
自己首先学习相关知识,理解单片机智能小车的原理以及WIFI模块指令等。
动手设计出带有WIFI模块的单片机开发板,在配购好小车相关的材料后,组装出小车模型。
调试好WIFI模块和单片机的硬件和软件,然后用手机等终端设备通过路由器驱动WIFI小车的运动等一系列指令。
具体的如图2-1所示。
下图是关于方案1设计版图构想,如图2-1所示。
图2-1方案1设计图
方案2:
自己首先学习相关知识,理解单片机智能小车的原理以及单片机和WIFI之间的通信方式,了解WIFI模块的相关指令,以及单片机的串口传输的方式。
然后利用已经完成有的单片机小车,通过在单片机小车上添加一个WIFI模块和相关模块来进行改装,然后自己通过设计编写单片机和WIFI模块之间串口通信的程序。
利用这样的方法来实现手机终端来通过路由器在无线传输的方式对单片机进行控制,从而进一步的控制小车的运动等一系列指令。
具体的如图2-2所示。
下图是关于方案2设计版图构想,如图2-2所示。
图2-2方案2设计图
方案选择:
方案1和方案2涉及的相关知识大致相同,两种不同思路的选择,所需要的材料也不同。
介于我们对制作成本和材料考虑,我们小组选择方案2,利用已有的单片机小车,对小车进行改装,在小车上加个WIFI模块等一系列设备,实现手机等终端设备通过无线信号控制小车的运动。
选择方案2,我们认为可以加强我们的动手能力,能够充分的学习和利用相关的专业知识,达到综合素质的提升。
2.2总体设计方案
基于单片机的WIFI智能小车主要由路由器、ESP8266WIFI模块、STC89C52RC单片机控制模块、L293D电机驱动模块、5V与3.3V串口电平转换模块和3.3V降/稳压模块等主要结构组成,其中还有一些次要设备,比如蜂鸣器,LED灯和数码管等。
2.2.1整机系统
下图是整机系统图,是WIFI模块和单片机之间通信的整体图,如图2-3所示。
图2-3整机系统图
项目系统包括路由器、ESP8266串口WIFI模块、STC89C52RC单片机、电机驱动模块、串口电平转换模块、5V电源、3.3v降/稳压模块、电机驱动模块组成。
如图2-3所示。
ESP8266串口WIFI模块是用来接收到手机等上位机设备发送的控制指令信息和单片机通过串口通信传来的AT指令信息来连接到路由器,然后创建多连接和SERVER模式,来实现手机和WIFI模块之间的通信;STC89C52RC单片机最小系统是小车的核心系统,用来控制和协调小车的运动;电机驱动模块用来驱动小车电机的运作;5V和3.3V串口电平转换模块是用来转换单片机和WIFI模块之间的信号电平,主要是适用于本模块的工作电压;电源电路用来提供单片机和WIFI模块的外部电源;3.3v降/稳压模块用来给WIFI模块提供一个3.3v稳定的工作电压;蜂鸣器电路作用是用来给单片机一个提示音;电机作用就是让小车的轮子转动,来使小车动起来。
2.1.2整机工作原理
基于单片机的WIFI智能小车是STC89C52RC单片机通过其串口对ESP8266WIFI模块发送AT指令,使ESP8266WIFI模块连接到路由器并且让ESP8266WIFI模块开启多连接和SERVER模式,然后手机打开WLAN连接路由器设备,打开制作好的APP软件,通过路由器这个中转站向ESP8266WIFI模块发送控制指令,在ESP8266WIFI模块接收到控制指令后,通过ESP8266WIFI模块的串口和STC89C52RC单片机上的串口之间相互发送控制指令的数据流,单片机的串口在接收到从WIFI模块传来的控制指令的数据流,最终做出控制选择,进而控制小车运动、指示灯的亮灭、蜂鸣器的开关和数码管的显示。
如:
小车运动,LED灯的亮灭,蜂鸣器的发声等。
基于单片机的WIFI智能小车主要是利用手机作为上位机,而单片机作为下位机,通过WIFI模块和路由器进行对无线信号的处理,然后通过串口传送有线的信号,从而实现上位机通过无线来控制下位机的运作,实现智能化和无线遥控等功能。
第3章硬件系统设计
3.1路由器
路由器(Router),(如图3-1所示)是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。
路由器是互联网络的枢纽"交通警察"。
目前路由器已经广泛应用于各行各业,各种不同档次的产品已成为实现各种骨干网内部连接、骨干网间互联和骨干网与互联网互联互通业务的主力军。
路由和交换机之间的主要区别就是交换机发生在OSI参考模型第二层(数据链路层),而路由发生在第三层,即网络层。
这一区别决定了路由和交换机在移动信息的过程中需使用不同的控制信息,所以说两者实现各自功能的方式是不同的。
路由器(Router),(如图3-1所示)又称网关设备(Gateway)是用于连接多个逻辑上分开的网络,所谓逻辑网络是代表一个单独的网络或者一个子网。
当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。
因此,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和介质访问方法连接各种子网,路由器只接受源站或其他路由器的信息,属网络层的一种互联设备。
下图是路由器的设备图,如图3-1所示。
图3-1路由器
3.2ESP8266WIFI模块
本次设计用到ESP8266WIFI模块是用于连接到路由器,然后接收手机端发送的信号,对单片机进行控制。
WIFI模块又名串口WIFI模块,属于物联网传输层,功能是将串口或TTL电平转为符合WIFI无线网络通信标准的嵌入式模块,内置无线网络协议IEEE802.11b.g.n协议以及TCP/IP协议。
传统的硬件设备嵌入WIFI模块可以直接利用WIFI联入互联网,是实现无线智能家居、M2M等物联网应用的重要组成部分。
下图是ESP8266WIFI模块的正反面图,如图3-2,3-3所示。
图3-2ESP8266WIFI模块正面图图3-3ESP8266WIFI模块反面图
ESP8266是一款超低功耗的模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和互联网的应用设计,可将用户的物理设备连接到WIFI无线网络上,进行互联网或局域网通信,实现联网功能。
ESP8266可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域。
3.2.1ESP8266WIFI模块引脚功能
下图是ESP8266WIFI模块的引脚图,如图3-4所示。
图3-4ESP8266WIFI模块引脚图
下表是ESP8266WIFI模块引脚说明,如表2所示。
表2ESP8266WIFI模块引脚表
PIN
Function
Description
1
URXD
1)UART_RXD,接收;
2)GeneralPurposeInput/Output:
GPIO3;
2
UTXD
1)UART_TXD,发送;
2)GeneralPurposeInput/Output:
GPIO1;
3)开机时禁止下拉;
3
RESET(GPIO16)
外部Reset信号,低电平复位,高电平工作(默认高);
4
GND
GND
5
VCC
3.3V,模块供电;
6
GPIO0
1)默认WIFIStatus:
WIFI工作状态指示灯控制信号;
2)工作模式选择:
悬空:
FlashBoot,工作模式;
下拉:
UARTDownload,下载模式;
7
CH_PD
1)高电平工作;
2)低电平模块供电关掉;
8
GPIO2
1)开机上电时必须为高电平,禁止硬件下拉;
2)内部默认已拉高
3.3STC89C52RC单片机
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
下图是STC89C52RC单片机的实物图,如图3-5所示。
图3-5STC89C52RC单片机
3.3.1STC89C52RC单片机引脚功能
下图是STC89C52RC单片机的引脚功能图,如图3-6所示。
图3-6STC89C52RC引脚图
1、VCC(40引脚):
电源电压VSS(20引脚):
接地P0端口(P0.0~P0.7,39~32引脚):
P0口是一个漏极开路的8位双向I/O口。
作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。
在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。
此时,P0口内部上拉电阻有效。
在FlashROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。
2、P1端口(P1.0~P1.7,1~8引脚):
P1口是一个内部上拉电阻的8位双向I/O口。
P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。
P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。
此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体参见下表3所示:
表3P1.0和P1.1引脚复用功能表
引脚号
功能特性
P1.0
T2(定时器/计数器2外部计数输入),时钟输出
P1.1
T2EX(定时器/计数器2捕获/重装触发和方向控制)
3、P2端口(P2.0~P2.7,21~28引脚):
P2口是一个内部上拉电阻的8位双向I/O端口。
P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。
P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
4、P3端口(P3.0~P3.7,10~17引脚):
P3是一个内部上拉电阻的8位双向I/O端口。
P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。
P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。
P3口除作为一般I/O口外,还有其他一些复用功能,如下表4所示:
表4P3口引脚复用功能
引脚号
复用功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时器0的外部输入)
P3.5
T1(定时器1的外部输入)
P3.6
(外部数据存储器、写)
P3.7
(外部数据存储器、读)
5、RST(9引脚):
复位输入。
当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作。
看门狗计时完成后,RST引脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
6、ALE/PROG(30引脚):
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在Flash编程时,此引脚(PROG)也用作编程输入脉冲。
7、PSEN(29引脚):
外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。
当AT89C51RC从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,PSEN而访问外部数据存储器时,将不被激活。
8、EA/VPP(31引脚):
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。
注意加密方式1时,EA将内部锁定RESET。
为了执行内部程序指令,EA应该接VCC。
9、XTAL1(19引脚):
振荡器反相放大器和内部时钟发生电路的输入端。
10、XTAL2(18引脚):
振荡器反相放大器的输入端。
3.3.2单片机的外围电路
1、基本复位电路
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
图3-7所示的RC复位电路可以实现上述基本功能。
下图是RC复位电路,如图3-7所示。
图3-7RC复位电路
在电源上电的时候,等待一定的时间,等到电容两端的电压值相同时,单片机复位。
还有一种方法就是按键复位,当SM按键按下之后RST端的电压值瞬间和VCC相同,同样也可以达到复位的效果,图中的电容作用是充放电,电阻是为了保护电路而设置的。
2、时钟电路
晶振是晶体振荡器的简称,在电气上它可以等效成一个电容和一个电阻并联后,再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低,其中较低的频率是串联谐振,较高的频率是并联谐振。
由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感。
所以,晶振的两端并联上合适的电容它就会组成并联谐振电路。
下图是时钟电路的电路图,如图3-8所示。
图3-8时钟电路的电路图
一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容,请注意一般IC的引脚都有等效输入电容。
3.4L293D电机驱动模块
我们所使用的电机一般是直流电机,主要用到永磁直流电机、伺服电机及步进电机三种。
直流电机的控制很简单,性能出众,直流电源也容易实现。
本次设计使用的是L293D(如图3-8所示),L293D是一款单片集成的高电压、高电流、4通道电机驱动,设计用于连接标准DTL或TTL逻辑电平,驱动电感负载(诸如继电线圈、DC和步进电机)和开关功率晶体管等等。
下图是L293D电机驱动模块在单片机作用下驱动电机运动图,如图3-9所示。
图3-9单片机驱动电机模块图
3.4.1L293D引脚功能及原理图
下图是L293D芯片引脚图,如图3-10所示。
图3-10L293D芯片引脚图
1、INPUT1:
输入电机1的引脚A。
2、INPUT2:
输入电机1的引脚B。
3、INPUT3:
输入电机2的引脚A。
4、INPUT4:
输入电机2的引脚B。
5、GND:
电源地接口。
6、VSS:
输入电机驱动电压接口。
7、OUTPUT1:
输出电机1的引脚A。
8、OUTPUT2:
输出电机1的引脚B。
9、OUTPUT3:
输出电机2的引脚A。
10、OUTPUT4:
输出电机2的引脚B。
下图是电机驱动模块和单片机原理图,如图3-11所示。
图3-11电机驱动模块和单片机原理图
单片机的P0的8个端口在位定义之后对L293D电机模块的4个INPUT写入各不同的高低电平,经L293D芯片内部的转换之后,在OUTPUT输出4个相应的电平值,分别对应M1和M2的两个电机A端和B端,从而控制电机M1和M2的正转和反转,进而实现小车的前进,后退,左转和右转等功能。
3.53.3V降/稳压模块
降/稳压模块是,通过降压和稳压的过程,给设备提供一个稳定的工作环境,能够提供不同的工作电压设备在同一电源电压下同时工作,应用于单片机上能添加不同工作电压的电子设备。
下图是降/稳压模块图,如图3-12所示。
图3-12AMS1117-3.33.3V降/稳压模块
将单片机上的5V的电源转换为3.3V的稳压电源,提供给正常工作电压是3.3V的电子设备,实现给5V和3.3V电压之间的转换,提供了能和单片机同时工作且电压值可以不同的电子设备。
比如,ESP8266串口WIFI模块。
下图是单片机的VCC通过降/稳压模块给WIFI模块供电,如图3-12所示。
图3-12降/稳压模块给WIFI模块供电图
3.5.1降/稳压模块的原理图
下图是降/稳压模块的原理图,如图3-13所示。
图3-13降/稳压模块的原理图
上图所示,D1作用是防止电源反接。
C01、C02是电源输入滤波。
VDD3.3是3.3V电源,供数字电路使用。
L1、L2是隔离滤波电感。
VCC3.3是3.3V电源,供模拟电路使用。
电源在通过AMS1117-3.33.3V降/稳压电路,电源电压由原来的5V降为3.3V,可以提供给正常工作在3.3V的设备使用。
3.65V和3.3V串口电平转换模块
数字电路,电平就是电位的高低,用0和1表示。
在计算机或者其他微处理器内部只能识别0和1这两个数字信号,不同的系统电平表示的0和1实际的电位并不相同。
例如,高电平常用3.3V,5V,12V,低电平常用0,当不同的系统进行连接通信控制时,就要进行电平转换。
打个比方,单片机的高电位为5v,而电脑的串口电平为12V,要实现电脑到单片机通信就必须将电脑的12V转到单片机的5V,反之,5V转到12V。
下图是串口电平转换模块图,如图3-14所示。
图3-145V和3.3V串口电平转换模块图
本项目的单片机是STC89C52RC,其工作电压是5V,而WIFI模块的工作电压是3.3V,由于两者工作电压不一致,导致了信号的电平也不一致。
要想两个设备之间能够进行通信,就必须要对信号电平进行转换,实现5V的电平和3.3V的电平之间能够通信,完成数据间的交换。
下图是单片机和WIFI模块通过串口电平转换模块进行通信的图,如图3-15所示。
图3-15单片机和WIFI模块电平相互转换图
3.6.1引脚功能和原理图
下图是串口电平转换的引脚图,如图3-16所示。
图3-16串口电平转换的引脚图
1、5V和3.3V:
由外电源接入5V和3.3V电源电压。
2、GND:
电源接地接口。
3、TXD:
数据发送引脚。
4、RXD:
数据接收引脚。
下图是5V和3.3V串口电平转换电路图,如图3-17所示。
图3-175V和3.3V串口电平转换电路图
上图的电路中,3.3V的信号通过两个三极管Q1,Q2的两次放大,再配合上合适的电阻R1、R2、R3进行转换,完成了3.3V到5V信号的变换。
5V信号同样通过相反的方式将信号变成了3.3V的输出,从而可以实现了数据能够在3.3V和5V之间的相互通信。
第4章软件系统设计
4.1软件开发环境
软件开发环境的主要组成成分是软件工具。
人机界面是软件开发环境与用户之间的一个统一的交互式对话系统,它是软件开发环境的重要质量标志。
存储各种软件工具加工所产生的软件产品或半成品(如软件开发环境参考书软件开发环境参考书源代码、测试数据和各种文档资料等)的软件环境数据库是软件开发环境的核心。
4.1.1Android的APP软件的开发
Android开发需要用到Eclipse、ADT和SDK。
三个组件整合开发。
1、Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
如图15所示。
下图是安卓开发环境界面,如图4-1所示
图4-1安卓开发环境界面
2、ADT:
目前Android开发所用的开发工具主要有AndroidStudio、Eclipse,在Eclipse编译IDE环境中,安装ADT,为And