基于单片机的WIFI智能小车设计.docx
- 文档编号:12280044
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:60
- 大小:1.28MB
基于单片机的WIFI智能小车设计.docx
《基于单片机的WIFI智能小车设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的WIFI智能小车设计.docx(60页珍藏版)》请在冰豆网上搜索。
基于单片机的WIFI智能小车设计
基于单片机的WIFI智能小车设计
摘要
WIFI智能小车由电机、小车车体、89C52控制芯片、WIFI收发模块、电机驱动、舵机、电源、摄像头等主要部件以及灯光、蜂鸣器、电平转换等辅助模块构成。
WIFI智能小车利用笔记本或手机等能连接无线路由器的终端智能设备连接到路由器,通过应用软件显示路由器上摄像头上采集到的视频信号,再通过这些智能的终端设备发送控制指令到无线路由器,通过无线路由器将指令传送给单片机进行处理。
然后通过单片机控制电机驱动驱动电机转动、舵机转动,从而实现控制小车的运动及视频采集。
关键词:
路由器;wifi;智能小车;89C52
Abstract
TheintelligentWIFIcarinvolvedamotor,abody,the89C52controlchip,aWIFItransfermodule,motordrivers,apowersupply,lights,abuzzerandavoltageconverter.TheintelligentWIFIcarcanuseanintelligentterminal(suchasalaptoporamobilephone)toconnectwiththerouteranduseapplicationsoftwaretodisplaythevideosignalcollectedbythecamera,thentheintelligentterminalwillsendcontrolcommandswhichcanbeprocessedbytheMCUthoughtherouters.TheMCUwillcontroltheturningofmotorsandrealizethemovingofthecarandthevideocollection.
Keywords:
Router;WIFI;intelligentcar;89C52
第1章概述
现在是一个智能化的时代,各种智能化设备正在逐步替代人为的操作。
随着汽车工业的迅速发展,关于智能汽车的研究也就越来越受人关注。
全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。
设计的WIFI智能小车能够实自动寻迹、避障功能,可程控行驶速度、电脑手机WIFI连接控制行驶及其他的控制方式。
本系统能实现对小车的运动状态进行实时控制。
系统控制灵活、可靠,精度高,可满足对系统的各项要求。
本设计以89C52为控制核心,利用超声波传感器检测道路上的障碍并测量小车与障碍之间的距离,小车通过红外传感器能够的自动避障,通过改变PWM信号的占空比可以控制快慢速行驶,以及自动停车,自动寻迹等功能。
通过对本小车研究,我们可以初步构建智能汽车的模型与理论基础。
对于智能汽车的研究,国内外都有很大的成就,谷歌的无人驾驶汽车,已经能够在高速公路上安全行驶数千公里,在高速行驶下都能有这么好的操控能力,无非是智能汽车领域的一座里程碑。
对于智能泊车系统,现在也已经进入了民用领域,很多车型也装配了该系统,有了他,汽车用超声波传感器扫描路面两侧,通过比较停车的空间和车辆的长度,自动寻找合适的停车位。
找到合适位置后,驾驶者只需控制刹车,车辆自动控制转向操作,即可将车停进停车位,并且液晶屏会有相应的显示。
本设计选用的89C52单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,具有指针、布尔代数运算等指令,以及串行通信能力和5个中断源。
采用40引脚双列直插式DIP。
其内部有128个RAM单元及4K的ROM。
89C52有两个16位定时计数器,两个外中断,三个定时计数中断,及一个串行中断,并有4个8位并行输入口。
89C52内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用22.1184MHz的晶振频率。
由于89C52的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故用来作为控制核心。
新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。
本设计主要研究内容就是基于89C52设计一部WIFI智能小车,小车能够实现自动循迹,自动避障,超声波测量距离。
WIFI遥控的智能小车控制系统,包括了对驱动电路,红外通讯以及无线视频通信等的探索和研究。
本项目文主要从小车设计方案的选取、硬件设计、软件设计、测试结果方面进行主要论述。
我们在第3章主讲单片机与路由器的设计,包括了单片机最小系统的电路设计对路由器进行刷机处理;整个小车的一个供电电源的设计,需要通过电源给整个系统供12V、8V、5V等几个电压;电机的驱动模块,详细的说明了电机驱动的原理,视频信号的采集;第4章程序的设计给出了程序整体的流程图及编写思想;第5章调试简述整机的每个模块调试及方法。
第2章方案论证及选择
2.1总体设计方案
WIFI智能小车需要由WIFI模块、电机驱动模块、核心控制模块、摄像头模块等构成。
2.1.1整机系统
如图2-1所示。
图2-1系统结构框图
项目系统包括路由器、单片机最小系统、电机驱动电路、电机、电平转换电路、电源电路、舵机、摄像头、蜂鸣器电路、灯光电路等。
路由器用于接收电脑等终端设备发送的指令和将摄像头采集到的视频信号传送到电脑等终端设备;单片机最小系统是整个小车的控制核心,控制着各个模块统一协调工作;电机驱动电路用于驱动电机转动,可以使电机产生正转、反转,从而使车体产生前进、后退、转弯等动作;电机的作用就是使整个车体运动;电平转换电路是将路由器输出的3.3V串口电平转换为单片机能判断的高低电平;电源电路作用是为整个小车系统共电;舵机制作成云台,然后装上摄像头,使摄像头可实现上下、水平方向180度旋转调节;摄像头用于采集视频信号;蜂鸣器电路用于报警提示;照明电路为小车在夜间行驶提供照明。
2.1.2整机工作原理
由电脑终端,通过WIFI无线网络连接到路由器,再通过电脑应用软件,向路由器发送控制命令及数据。
路由器接收到数据后通过内部的串口发送软件,将接收到的命令和数据,通过路由器串口发送到89C52单片机的串口端,单片机接收到这些命令后执行相应的指令,如:
驱动小车运动、舵机运动、蜂鸣器鸣叫、照明电路的开关等。
视频信号,通过摄像头采集之后通过路由器发送到电脑终端,并在其应用软件中显示摄像头采集到的视频信号。
2.2系统方案的选择与比较
方案一:
选择网上已经经过改装过的wifi小车专用的TP—LINKWR703N无线路由器做为我们wifi小车的wifi连接模块,使用MSP430g2553单片机作为wifi小车的控制芯片。
自己再够买元器件,自己搭接电源、驱动电路及单片机最小系统。
方案二:
利用网上大家公认做wifi小车较好的大亚db120-wg无线路由器,作为我们的wifi智能小车的wifi连接模块,使用我们教学用的51系列单片机89C52做为我们wifi智能小车的控制芯片。
利用手里面现有的一些电源、驱动等模块等制作我们的wifi智能小车。
方案选择:
基于我们对成本和制作性的考虑我们选取的是方案二。
第3章硬件电路设计
3.1DB120-WG无线路由器
路由器如图3-1:
图3-1db120-wg路由器
路由器内部如图3-2所示。
图3-2路由器内部结构图
3.1.1刷机固件介绍
固件wifi-robots-openwrt-RG100A_DB120-cfe固件说明:
1.Ser2net已设置开机启动
2.mjpg_streamer开机启动。
摄像头只有2种驱动,uvc和301,目前开机mjpg_streamer缺省启动了301摄像头,301摄像头无需设置直接跳到第3步,uvc需要修改下即可ssh登陆后,vietc/init.d/wificar,找到摄301像头参数mjpg_streamer-b-i"input_uvc.so-r640x480-f30"-o"output_http.so-p8080-w/web"修改为uvc参数mjpg_streamer-b-i"input_uvc.so-r352x288-f15-y"-o"output_http.so-p8080-w/web"然后在putty命令行下输入chmod777/etc/init.d/wifirobot更改属性输入/etc/init.d/wificarenable启动该配置文件重启路由器,301摄像头设置完成。
3.支持Luci/web管理,错误设置后不能进入的,可以长按复位键回初始模式
4.网络设置,目前是AP模式,IP:
192.168.1.1。
3.1.2刷机步骤
1.网线连接电脑和路由器的LAN1(靠近电源那个网口,升级只能使用此口,有的版本丝印不是LAN1,反正记住靠近电源的那个口即可),电脑IP设置为
192.168.1.169/255.255.255.0,192.168.1.1;设置完成点击网络邻居,选择属性,选择升级用的有线网口,右键点修复。
2.用USBTTL线接好路由的GND、RXD、TXD三条线(VCC电源千万别接,会烧路由),打开putty,选好端口号,端口号请查看电脑设备管理器,设置波特率为115200,点击下面的Open。
3.路由器通电,接线且设置正确的话,putty窗口应该出现路由器的信息,在通电3秒内,按下键盘的回车键,阻止路由器CFE启动,这时候应出现CFE>。
4.输入小写ea,ea之间有个回车键,然后再按下y,点击回车,路由器开始擦除清除原系统固件。
清除之后,路由会持续输出很多命令行,且不会停止,我们不用管,关掉路由电源。
5.重新打开路由电源,和第四步一样,通电3秒内按下回车键阻止CFE继续启动打开浏览器,输入192.168.1.1,应看到上传固件的的选择文件,putty窗口也会出现路由器升级进度信息,此时千万不要断电,理论上此时断电会刷坏路由器,升级完成后,耐心等待5分钟,路由器会自动重启。
6.等待路由启动后,等待几分钟再次重启一次路由,打开网页192.168.1.1,输入密码登陆进入路由器的设置,将路由器的无线网络开启,只有这样电脑等终端设备才能通过wifi信号和路由器连接。
7.用putty登陆路由,转到/etc/init.d/目录,可以看到一个ser2net.conf文件,打开它可以看到路由串口的配置信息,默认配置的波特率是9600,8位数据位,1位停止位,无校验位。
完成之后需要设定mjpg-streamer和ser2net随机启动,不然没法正常工作。
8.由于我使用的摄像头是301芯片的,在电脑上显示会花屏,所以还需要对脚本进行修改,其操作步骤如下:
具体步骤:
A.登陆路由器:
telnet192.168.1.1(IP地址根据你的路由器实际地址而定)。
B.编辑脚本/etc/init.d/wificar:
#vi/etc/init.d/wificar(在START=80后面增加一行killallmjpg_streamer,修改后的脚本看下面内容。
)
#!
/bin/sh/etc/mon
START=80
killallmjpg_streamer
start(){
mjpg_streamer-b-i"input_uvc.so-r640x480-f15"-o"output_http.so–
p8080-w/web"
#mjpg_streamer-b-i"input_uvc.so-r352x288-f15-y"-o"output_http.
so-p8080-w/web"
ser2net
}
stop(){
killallmjpg_streamer
killallser2net
}
C.保险起见,修改wificar脚本权限。
#chmod-777
D.重启路由器。
#sync;sync;reboot
9.插上301芯片的摄像头,在电脑上打开我们的一个wifi小车的控制界面软件,选择wifi控制模式,然后打开视频,这时我们可以看到一个稳定视频信号通过路由器无线传送到了我们的电脑终端,至此说明我们路由器刷机及其配置完成。
3.2单片机最小系统设计
最小系统主控芯片是宏晶公司MCS-51系列单片机中的89C52。
3.2.1主控制芯片89C52
89C52是宏晶公司MCS-51系列单片机中基本的产品,它采用ETC公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
主要功能特性:
1.标准MCS-51内核和指令系统。
2.32个双向I/O口。
3.3个16位可编程定时/计数器。
4.向上或向下定时计数器。
5.6个中断源。
6.全双工串行通信口。
7.—帧错误侦测。
8.—自动地址识别。
9.空闲和掉电节省模式。
10.片内8kROM(可扩充64kB外部存储器)。
11.256x8bit内部RAM(可扩充64kB外部存储器)。
12.时钟频率3.5-12/24/33MHz。
13.改进型快速编程脉冲算法。
14.5.0V工作电压。
15.布尔处理器。
16.4层优先级中断结构。
17.兼容TTL和CMOS逻辑电平。
18.PDIP(40)和PLCC(44)封装形式。
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口作为STC89C52的一些特殊功能口,管脚备选功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡电路:
外接石英晶体或者陶瓷谐振器以及电容C1、C2接在放大器的反馈回路中构成并联振荡电路。
为了使装置能够被外部时钟信号激活,XATL1应该有效,而XTAL2应该被悬空。
由于输入到内部的时钟信号电路通过了一个二分频的信号,外部信号的工作周期比没有别的要求,但是最大值和最小值的大小可以在数据表上观察出来。
当正常工作时,外部振荡器可以计算出XTAL1上的电容,最大可达到100pF。
这是由于振荡器电容和反馈电容之间的相互作用。
当外部信号是标准高电平或者低电平时,电容不会超过20pF。
空置模式:
用户的软件都可以调用空置模式。
当单片机出于这种模式,耗能就会自然降低。
特殊功能端和板子上的随机存储器在空置状态保持各自的电平。
但是处理器阻止装置执行指令。
空置模式会被激活如果端口处于复位状态或者中断系统有效。
3.2.2STC89C52RC单片机最小系统
STC89C52RC单片机最小系统的基本工作电路包括电源电路、时钟电路和复位电路。
其组成方框图如图3-3所示。
图3-3单片机最小系统组成方框图
1.电源电路
电源电路模块为单片机最小系统和其他功能模块提供标准的+5V电源电压。
2.时钟电路
单片机的时钟信号为单片机芯片内部的各种操作提供时间基准,时钟电路为单片机产生时钟脉冲序列。
作为单片机工作的时间基准,典型的晶体振荡频率为12MHz。
MCS-51系列单片的时钟信号可以由两种方式产生:
一种为内部时钟方式,利用芯片内部的振荡电路;另一种为外部时钟方式。
其两种电路如图3-4所示。
(a)内部时钟方式(b)外部时钟方式
图3-4单片机时钟信号示意图
3.复位电路
单片机复位是使CPU和系统中的其他功能部件都恢复到一个确定的初始状态,并从这个状态开始工作。
当在MCS-51系列单片的RST引脚处引入高电平并保持2个机器周期,单片机内部就执行复位操作。
单片机常见的复位电路有两种基本形式:
一种是上自动电复位,另一种是手动复位。
其两种电路方式如图3-5(a)、(b)所示。
由于STC89C52RC单片机芯片内有时钟振荡电路,所以此系统单片机均采用内部时钟方式。
只需在单片机的XTAL1和XTAL2引脚外接石英晶体和微调电容,就构成了自激振荡器并在单片机内部产生时钟信号脉冲信号。
同时,也采用手动复位电路。
其具体电路设计如图3-6所示。
(a)上电自动复位(b)手动复位
图3-5单片机复位电路示意图
在此图中,C1、C2电容的作用的是稳定频率和快速起振,其值为5~30pF,在此选择30pF;晶振X1的振荡频率范围在3.5~33MHz之间选择,因为需要使用串通讯涉及波特率,所以在此选择22.1184MHz。
3.2.389C52单片机的使用
本次设计,使用到了89C52单片机的I/O口的输入输出功能、内部定时器T0、T1、T2的使用及串口中断、外部中断。
图3-6单片机最小系统电路图
89C52单片机的I/O口的输入功能用于传感器信号的输入处理。
通过单片机对外部传感器的信号采集处理,从而对外部条件进行判断以确定小车下一步的运行状态。
89C52单片机的I/O口信号输出,主要是给驱动模块送控制信号用于控制电机的转动、给舵机送PWM控制信号控制舵机的偏转以及控制开关蜂鸣器、灯光等。
单片机的内部定时器的使用是用于产生PWM信号,以及其他需要精确时间的地方。
单片机的串口中断,用于与路由器进行的串口通讯,接收电脑终端发送的串口指令。
单片机的外部中断用于红外信号的接收,然后通过解码程序得到命令,从而控制小车的运动。
3.3电机驱动电路
电动小车的驱动不但要求电机驱动系统具有高转矩重量比、宽调速范围、高可靠性,而且电机的转矩-转速特性受电源功率的影响,这就要求驱动具有尽可能宽的高效率区。
我们所使用的电机一般为直流电机,主要用到永磁直流电机、伺服电机及步进电机三种。
直流电机的控制很简单,性能出众,直流电源也容易实现。
我们使用的这种直流电机的驱动及控制需要电机驱动芯片进行驱动。
常用的电机驱动芯片有L297/298,MC33886,ML4428等。
3.3.1电机驱动模块使用
我们使用的L298N是ST公司生产的一种高电压、大电流电机驱动芯片。
该芯片采用15脚封装。
主要特点是:
工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。
内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。
使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。
项目使用的是4个直流电机,项目中使用了两块L298N电机驱动来驱动这四个直流电机的转动。
其实物及引脚图如下图3-7所示。
其中6和11引脚是它的使能端,一个使能端控制一个电机,只有当它们都是高电平的时候两个电机才有可能工作,5、7、10、12是298的信号输入端和单片机的IO口相连,2、3、13、14脚是输出端,输入5和7脚控制输出2和3脚,输入的10、12脚控制输出的13、14脚。
图3-7L298驱动芯片实物及引脚图
3.3.2驱动原理及电路图
驱动部分我们使用的是L298N驱动芯片构成的一个驱动电路模块如图3-8所示。
图3-8驱动实物图
3.3.3驱动模块原理及电路原理图
电路原理图如下图3-9所示。
图3-9L298驱动模块电路原理图
使用直流/步进两用驱动器可以驱动两台直流电机。
分别为M1和M2。
引脚A,B可用于输入PWM脉宽调制信号对电机进行调速控制。
(如果无须调速可将两引脚接5V,使电机工作在最高速状态,既将短接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 WIFI 智能 小车 设计