1、(完整word)基于无线控制的智能小车系统的设计设计基于无线控制的智能小车摘 要:本文针对基于无线控制的智能小车的设计和研究,首先对系统的总体设计加以介绍,概括了智能小车的主要作用及其工作模式,并介绍了智能小车的主要元器件;然后详细介绍了系统的硬件以及软件设计,硬件方面,重点研究了温度采集模块、红外避障模块和无线收发模块,软件方面详细讲解了上位机人机交互界面的设计、避障设计以及无线通信的数据处理;最后,总结了系统测试结果并对本设计的发展前景做了概述。关键词:单片机;上位机;红外线;避障;温度检测;无线通信The intelligent car Based on wireless control
2、Abstract: In this paper, the overall description of the smart car, which is base on the wireless control, is introduced its design and research。 First introduced is the overall design of the system, and describes the major function, operating mode and the main components of the smart car; then analy
3、ses the systems hardware and software design in detail。 Hardware side, the focus is on the temperature acquisition module, infrared obstacle avoidance module and wireless transceiver module; The software has a detailed account of the host-computer interactive interface design, the design of the obst
4、acle avoidance and wireless communications data processing; Finally summaries up the test results of this system and has an overview of the prospects for the development of this design.Keywords: MCU; upper computer; Infrared ray; Obstacle avoidance; Temperature detection; Wireless communication1. 绪论
5、1.1课题的背景及意义1.1。1课题背景未来是充满科学技术的新时代,而智能化1正是科学技术的重要体现。在一定程度上,智能化的发展能够带动一些相关领域的发展。因此,智能化将是新世纪的一个重要前进方向.随着科学技术的不断发展,应运而生的是各种机器人的更新换代。至今,机器人从示教型机器人,发展到可离线编程的工业机器人,再到如今的智能机器人。机器人的发展步伐不断加快.从上个世纪六十年代起,关于机器人的移动问题,人类做了很多研究设计。主要有以下几方面:1) 机器人移动方式;2) 机器人驱动控制方式;3) 机器人行走的路径规划.从机器人移动方式方面来分类,主要有模拟人类行走的腿式机器人、有模拟坦克的履式机
6、器人、以及模拟汽车行驶的轮式机器人。作为轮式机器人,智能小车是智能系统23的一个典型代表,它综合了自动控制技术、驱动技术、传感器技术和信息处理技术等多学科知识,具有实用性强和应用范围广的特点。随着技术的发展,智能小车4的应用范围在不断扩大,遍及工业、抢险救灾、海洋开发、宇宙空间以及人类生活的各个方面,对人类生活产生巨大影响。1。1。2研究意义智能技术改变了人类的社会生活,对人类生活生产方式产生了巨大影响。近年来,随着人类社会现代化的步伐不断加快,人类迫切需求更多智能化产品的出现,以改善人类现有的生活和生产方式。进一步提高生活质量,提升生产效率。智能小车的出现从实际上改变了工业生产面貌,使人类生
7、产从手工化逐步过渡到机械化、智能化。智能小车,能够适应各种恶劣环境,通过远程控制的方式,可以在完全不需要人类实际参与的情况下,安装预期目标完成作业.本课题所研究的智能小车,可以应用到多个领域如粮库检测,矿下探测,危险未知区域的信息采集等.这里以信息采集为例,主要采集温度信息.运用智能小车,可以减少劳动力、提高工作效率并避免一些安全事故。1.2 基于无线控制的智能小车系统概述1.2。1基于无线控制的智能小车系统组成本系统主要组成部分包括:上位机、单片机、电机驱动、温度采集、红外避障等部分。其总体框架见图1.图1 系统总体框架图1) 电机驱动模块该模块主要完成小车驱动功能。根据接受到的单片机控制信
8、号,变动输出电平,控制电机转向,从而实现对小车运动的控制。2) 温度采集模块该模块主要负责采集温度,并将转换后的温度信息传给单片机,进行温度显示和传输。3) 红外避障模块此模块主要功能是是小车在行驶过程中避开障碍物。通过检测小车前方的障碍物,并将检测信息发送给单片机,从而控制小车转向,达到避障效果。4) 单片机模块这是系统下位机的核心模块.它能接受上位机的信息,控制小车的行驶。同时,将检测到的信息反馈给上位机,进行实时显示。5) 上位机模块此模块是主要功能是对小车进行远程控制,并接受小车反馈的信息,进行实时显示.1.2。2基于无线控制的智能小车系统特点本系统融合了信息采集、无线传输、远程控制等
9、技术,设计出了无线控制的智能小车。该系统成本低,实用性强,具有广泛的应用前景.1。3本课题主要研究内容本课题的主要研究内容包括: (1)小车的硬件设计。主要介绍小车所选取的硬件及其功能和详细参数。在下位机控制方面,以STC89C52单片机作为控制中心。此外,还介绍了避障模块、信息采集模块、小车驱动模块的硬件设计。(2)避障设计。采用红外传感器5来识别障碍物。利用红外避障,对近距离障碍物反应灵敏,障碍物感应距离可以调节,而且不会有造成信号干扰.当遇到障碍物时,能够很快发出低电平信号,传送给单片机,控制小车转向,到达避障目的。(3)无线通信67。整个系统由上位机和下位机组成,上位机和下位机的信息交
10、流是通过无线形式的方式进行的。上位机要控制小车,必须通过无线形式发送控制命令,小车要发送温度信息到上位机也必须通过无线信息。因此,实现无线通信时系统控制实现的关键.通过无线收发模块,可以实现信息的无线发送和接受,只要按照预先设定好的通信协议进行数据传输,就能实现上位机和下位机的信息交换。(4)人机交互界面。小车是通过PC终端来控制的,要想让小车按照人的意愿进行运行,就要设置好人与计算机的信息交流。通过LabVIEW8编程环境,建立人机交互界面,实现这一功能。(5)进行实车实验,对小车进行调试.2系统硬件电路的设计2。1系统总体设计本系统以小车模型为平台,通过控制小车的运动,让小车到达预期的目的
11、地,从而对该地区进行信息采集,并将采集到的信息以无线传输的方式,发送到PC终端。小车可四轮独立驱动,车体上搭载有51单片机最小系统910、温度传感器、红外避障模块、电机驱动模块以及无线收发模块。系统可分为两种工作模式:(1)远程控制模式该模式下,PC终端通过无线发送模块,将对小车的控制信息发送给小车,小车通过无线接受模块接受到信息后,按照收到的运动信号运动到目的地,小车行驶的同时,进行采集信息,并通过无线发送模块将信息回发给PC终端。 (2)自动模式选择自动模式后,小车的运动将不会受到PC终端的控制,小车将以51单片机最小系统为“大脑”,进行自行运动。在该模式下,小车能够自行的向前运动,由于车
12、体上搭载有红外避障模块,小车可以随时检测障碍物。当遇到障碍物时,红外避障传感器能够检测到障碍物具体位置,并将障碍物位置信息传送给小车“大脑,单片机按照给定程序进行分析判断,控制小车转向,从而避开障碍物。与此同时,小车不断采集信息,并将采集到得信息通过无线发送模块,发给PC终端。总体方案设计如图2图2 系统总体方案图本课题采用ZK-4WD小车模型,为竞技比赛常用车型。该模型主要包括四个轮子、四个电机、一个底盘。小车模型如图3图3 ZK4WD小车模型图ZK-4WD小车模型有以下几个优点:1) 机械结构简单,非常方便安装。2) 采用四个减速直流电机转弯灵活,方向性好。四轮电机驱动,马力实足,使在斜坡
13、、凹凸不平的路面上也能够行驶。3) 小车自带测速码盘,可以迅速组成一套测速系统。可以测速,测距.4) 底盘大而稳,并且有很多小孔,可直接安装其他模块,非常容易扩展.5) 车体几乎全为塑料,质量很轻,而且车体较小。整体轻便小巧,运动灵活,方便控制,对电量损耗小,能够持久工作。2.2电源模块本系统采用可充电电池为电源,保证系统正常工作。小车模型系统中,需要供电的模块有:电机及其驱动模块、温度传感器模块、单片机最小系统模块、红外避障模块、无线收发模块。整个系统由全部硬件电路的电源由6V、1300mA的可充电镍镉电池提供。各个硬件所需电源最终都由电池供电,其中由于各个硬件所需电源参数不同,所以需要经过
14、电机驱动模块进行转换后才能使用。在本系统中,电机驱动模块的电源是直接取自电池,而电机模块,温度传感器模块,红外避障模块,以及单片机都是经过电机驱动模块将电压转换才能供电。整个电源模块的电路结构如图4所示图4 电源模块的电路结构2.3 电机及其驱动模块2.3。1电机模块小车的运动时靠直流电机11来实现的,通过控制直流电机的转动方向来控制小车的运动方向。直流电机的工作原理是直流电机里边固定有环状永磁体,电流通过转子上的线圈产生洛伦兹力,当转子上的线圈与磁场平行时,再继续转受到的磁场方向将改变,因此此时转子末端的电刷跟转换片交替接触,从而线圈上的电流方向也改变,产生的洛伦兹力方向不变,所以电机能保持
15、一个方向转动.当流入电机的直流电流方向改变时,相应地电机转向也改变。本课题采用的是小型直流电机,其额定电压为3V-6V,空载时转速为100240转/分,额定电流100120mA。电机的具体参数如表1。表1 电机参数属性参数工作电压DC 3VDC 5VDC 6V工作电流100mA100mA120mA空载100转/分190转/分240转/分空载速度20转/分39转/分48转/分轮胎直径6。6cm重量50kg外形尺寸70mm*22mm18mm噪声65db2.3.2电机驱动模块L293D电机驱动模块使用L293D 电机驱动芯片。该模块可以直接驱动4路3-16V直流电机,输入接口为6V-15V,并提供了
16、5V输出接口,可以给 5V 单片机电路系统供电,可以方便的控制直流电机速度和方向,也可以控制2相步进电机,5线4相步进电机。电机驱动模块L293D如图5图5 电机驱动模块L293D实物图产品参数:1).驱动芯片:L293D 双 H 桥直流电机驱动芯片(两片)2).驱动部分端子供电范围 Vs:5V16V ; 如需要板内取电,则供电范围 Vs:+6V+16V3)。驱动部分峰值电流 Io:1A4).逻辑部分工作电流范围:036mA5).控制信号输入(IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8)电压范围:低电平:0。3VVin1。5V;高电平:2.3VVinVss6)。使能信号输入
17、(EN1 EN2 EN3 EN4)电压范围:低电平:0。3Vin1.5V(控制信号无效);高电平:2。3VVinVss(控制信号有效)7)。存储温度:25130其电路原理图如图6图6 电机驱动模块电路原理图其驱动电路的设计如图7所示图7 L298电机驱动电路图管脚接口说明如表2表2 管脚接口电机驱动L298电 机IN1 IN2电机1 的控制端IN3 IN4电机2 的控制端EN1电机1 的使能端EN2电机2 的使能端控制端的使用说明如表3表3 控制端的使用说明IN 1IN 2EN 1电机*0不转011正转101反转111不转001不转本系统将电机驱动模块IN 端与单片机的P1口相连接,实现对电机
18、的控制,具体连接方法如表4表4 电机驱动与单片机的接口单片机引脚电机引脚P10 P11控制左后方电机P12 P13控制左前方电机P14 P15控制右前方电机P16 P17控制右后方电机2.4温度传感器模块本系统选用DS18B20温度传感器1214,为“一线总线接口的传感器。测量温度范围为55C+125C,在10+85C范围内,分辨率可达到0。0625。温度信息以“一线总线”的数字信号进行传输,系统抗干扰性得以提高。适用于大多数环境的温度测量.2。4。1“一线总线特征:1) 独特的电源和信号复合在一起2) 仅使用一条口线3) 每个芯片唯一编码,支持联网寻址4) 简单的网络化的温度感知5) 零功耗
19、等待2.4。2 DS18B20 的特点:1) 独特的单线接口仅需一个端口引脚进行通讯 。2) 简单的多点分布应用 。3) 无需外部器件 。4) 可通过数据线供电 .5) 零待机功耗 。6) 适用电压为 3V5V.7) 测温范围-55+125,以 0。5递增。华氏器件-67+2570F,以 0。90F 递增 .8) 温度以9位数字量读出.9) 温度数字量转换时间 200ms(典型值) 。10) 应用包括温度控制、工业系统、消费品、温度计或任何热感测系统。引脚排列如图8图8 引脚排列硬件设计中,DQ脚与单片机的P2。2口相连,进行数据传输.GND和VDD连接到电机驱动模块相应管脚.DS18B20方
20、框图如图9。图9 DS18B20方框图2.5单片机模块系统选用STC89C52单片机1517作为下位机的控制核心.STC89C52是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器(ROM)和256 bytes的随机存取数据存储器(RAM)。STC 89C52单片机在电子行业中有着广泛的应用.且该单片机可以不用专门的烧写器而直接使用串口或并口就可以向单片机中下载程序,非常方便。其总体机构包括:1) 8位CPU2) 4K字节内部程序存储器3) 128字节内部数据存储器4) 2个16位定时器/计数器5) 1个全双工的异步串行口6) 4个8位的I/O
21、口(P0,P1,P2,P3)单片机管脚如图10图10 STC89C52单片机管脚图主要引脚介绍: 1) 主电源引脚 VCC(40脚):接+5 V电源正端. GND(20脚):接+5 V电源地端。2) 外接晶体引脚 XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。XTAL2(18脚):接外部石英晶体的另一端.在单片机内部,它是一个反相放大器的输出端.当采用外部振荡器时,接收振荡器信号。3) 输入/输出引脚: P0口(3932脚):P0.0P0.7统称为P0口。在不接片外存储器与不扩展I/O口时,可作为准双向输入/输出口。在接有片外
22、存储器或扩展I/O口时,P0口分时复用为低8位地址总线和双向数据总线。P1口(18脚):P1.0P1。7统称为P1口,可作为准双向I/O口使用。P2口(2128脚):P2.0P2.7统称为P2口,一般可作为准双向I/O口使用;在接有片外存储器或扩展I/O口且寻址范围超过256字节时,P2口用作高8位地址总线。P3口(1017脚):P3。0P3。7统称为P3口。除作为准双向I/O口使用外,还可以将每一位用于第二功能,而且P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。4) 控制线ALE/PROG(30脚):运行方式时,ALE为外部存储器低8位地址锁存信号;FLASH编程方式时,该引
23、脚用作编程脉冲输入端。RST (9脚):该引脚为单片机的上电复位端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机回复到初始状态。PSEN(29脚):片外程序存储器读选通信号输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机器周期该信号两次有效,以通过数据总线P0口读回指令或常数。在访问片外数据存储器期间,PSEN信号将不出现。EA/VPP(31脚):EA为片外程序存储器选用端。该引脚有效(低电平)时,只选用片外程序存储器,否则单片机上电或复位后选用片内程序存储器;FLASH编程方式时,为编程电源输入端VPP。2.6红外避障模块18该红外传
24、感器可以检测前方080CM(可以调节)障碍物,三线NPN输出型。前方无障碍输出高电平,有障碍输出口(黄色)电平会从高电平变成低电平。检测距离可以根据要求进行调节,通过电位器可以调节障碍的检测距离。该传感器具有探测距离远、受可见光干扰小、反应灵敏等特点.系统使用三个红外传感器,分别按照与小车车身的前、左、右三个位置,可以分别检测前、左、右三个方向的障碍物。红外传感器实物如图11图11 红外传感器实物图红外传感器原理图如图12图12 红外传感器原理图红外传感器管脚定义如表5表5 红外传感器管脚定义管脚接法红色接4。55V电源高电平黄色接单片机,输出TTL电平给单片机黑色接GND 0V电源低电平2.
25、7无线收发模块系统选用APC220-43无线收发19模块。APC220是一块低功率无线模块,其特点如下:1) 1200米传感距离;2) 工作频率418455MHz;3) 灵活的软件编程选项设置;4) 内置看门狗,保证长期可靠运行;5) 适合大数据量传输。APC22043实物图如图13 图13 APC220-43实物图 图14 串口助手软件图APC220模块操作简单,使用时将其视为一个串口设备,几乎不对其编程,只需要将两个APC220模块的参数设置成一样即可。设置参数可以在程序中完成,也可以通过串口助手软件完成。通过串口助手软件可以设置模块的通信频段和波特率等参数.串口助手软件如图14所示。AP
26、C220的技术指标如表6表6 APC220的技术指标属性参数工作频率418MHz to 455MHz (1KHz步进)调制方式GFSK频率间隔200KHz发射功率20mw (10级可调)接收灵敏度118dBm1200bps空中传输速率 24009600bps接口速率 120057600bps接口效验方式8E1/8N1/8O1接口缓冲空间256bytes工作湿度10%90%(无冷凝)工作温度-30 85电源3.4 5。5V (50mV 纹波)发射电流35mA10mW接收电流28mA休眠电流5uA传输距离1200米传输距离 (1200bps开阔地可视距离)尺寸37。5mm x 18.3mm x 7
27、.0mmAPC220-43模块共有 9 个接脚,具体定义如表7:表7 APC22043接脚定义引脚定义说明1GND接地2VCC3。4V-5.5V3EN电源使能端,1。6V或悬空使能,0.5V休眠。4RXDURAT输入口,TTL电平。5TXDURAT输出口,TTL电平。6AUXUART口的收发指示输出,低接收,高输出。77SET参数设置,低有效.8NC空脚。9NC空脚。模块与终端设备的连接如图15图15 APC220-43与终端设备的连接APC22043与单片机的管脚连接如表8表8 APC220-43与单片机的管脚连接APC220-43模块单片机TXDP3。0RXDP3.1VCCVCCGNDGN
28、D3 系统的软件设计与系统硬件相对应,系统的软件是整个系统的灵魂。整个系统在软件的作用下才能开始运行。系统软件通过对各种机械动作的运算、加工、处理,转换成命令信号,发送到系统各个部分,从而对整个系统进行控制。系统软件设计的好坏,直接关系到系统运行的效率、精确性、稳定度。本系统的软件设计采用模块化机构,对各个功能部件实行分块设计。整个软件系统包括小车运动模块、避障模块、LED显示模块、温度采集模块、中断模块、串口通信模块、无线通信模块、上位机处理模块.软件系统整体结构如图16图16 软件系统整体结构3.1上位机主程序上位机是整个系统最高指挥官,由上位机发送各种指令到下位机,下位机进行运算处理,并
29、给出相应回应,从而控制整个系统工作。上位机通过PC终端设备来实现,PC终端设备上建立人机交互界面,通过人机交互界面,可以实现人与计算机的交流,并将人的命令通过人机交互界面发送给整个系统.人机交互界面如图17图17 人机交互界面如图17,上位机的人机交互界面有控制部分和显示部分界面,显示部分包括温度的波形显示、温度计显示、串口资源显示,当前温度值数字显示;控制部分包括小车的远程控制和小车的自动控制。3.1.1上位机开发环境介绍LabVIEW本系统的上位机通过LabVIEW来实现编程控制。LabVIEW20 是美国国家仪器(NI)公司所研制开发的,作为一种程序开发环境,与C和BASIC开发环境相类
30、似,但是LabVIEW有不同于其他开发环境的部分: LabVIEW的编程语言是G语言,一种图形化编辑语言,其程序的形式是框图.“G”语言21 作为一种图形化的程序语言,使用时,只需要编辑程序框图,不用写程序代码,能很大程度上提升工作效率。LabVIEW编译平台包括前面板(如图18)和程序框图(如图19)两部分组成 如图18 前面板图 如图19 程序框图图前面板中有丰富的输入控件(如图20),和显示控件(如图21),能模仿实际仪器,非常方便地对数据信号进行显示和控制。 输入控件(如图20) 显示控件(如图21)程序框图中,通过G语言,实现对数据信息的处理和控制,并能对串口工作方式进行设置,如图2
31、2.图22 串口设置图上位机G语言总程序框图如图23图23 上位机G语言总程序框图3。1.2上位机主要功能1) 发送小车运行模式的控制命令。2) 在远程控制模式下,发送小车运动指令,控制小车运动方向。3) 无线发送数据。4) 无线接收温度信息。5) 实时显示温度信息。上位机进入运行状态后,等待控制命令。当发出控制命令后,首先判断运动模式,若为自动模式,则小车自行运动,并发出温度信息到上位机处,上位机接受到温度信息后,进行实时显示;若为远程控制模式,则小车按照接受到的运动命令进行行驶,并发出温度信息到上位机处,上位机接受到温度信息后,进行实时显示。上位机主程序流程框图如图24图24 上位机主程序
32、流程框图3。2下位机主程序3.2.1单片机控制下位机用单片机STC89C52为核心控制系统,以C语言为开发环境。下位机结构如图25。图25 下位机程序结构图3.2。2温度采集子程序本系统使用DS18B20温度传感器,温度数据关系如表9所示。表9 DS18b20温度数据关系温度数据输出(二进制)数据输出(十六进制)+1250000000011111010+250000000000110010+1/2000000000000000100000000000000000-1/211111111 11111111 FFFF2511111111 11001110 FFCE-5511111111 10010
33、010FF92温度采集子程序包括:初始化,读一个字节,写一个字节,读取温度。当需要读取温度信息时,首先向温度传感器写入数据信息,完成初始化命令,再次写入数据,使其开始转换温度信息,最后再发出命令,完成温度读取.子程序如下:void Init_DS18B20(void)/初始化ds1820unsigned char x=0;DQ = 1; /DQ复位Delay(8); /稍做延时DQ = 0; Delay(80); /精确延时 大于 480usDQ = 1; /拉高总线Delay(14);x=DQ; Delay(20);unsigned char ReadOneChar(void) /读取一个字
34、节数据unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; dat=1;DQ = 1; if(DQ)dat=0x80;Delay(4);return(dat);void WriteOneChar(unsigned char dat)/写一个字节unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;Delay(5);DQ = 1;dat=1;unsigned int ReadTemperature(void)/读取温度unsigned char a=0;unsigne
35、d char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换Init_DS18B20();WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器a=ReadOneChar(); /读低8位b=ReadOneChar(); /读高8位t=b;t0 & point=3) /判断是否接收够4bit receive_bufferpoint+=receive_temp; el
36、se if (point=4) /判断是否接收够4bit if(receive_temp=) receive_data0=receive_buffer3; if(receive_buffer1=y receive_buffer2=c) Car_mode=1; /远程控制模式 if(receive_buffer1=z & receive_buffer2=d) Car_mode=2; /自动灭火模式 point=0; else point=0; else point=0; /缓冲区已满,清除缓冲区内数据,重新接收 /*串口发送一个数字*/void send_int(int txd) SBUF = txd;while(!TI);/ 等特数据传送TI = 0;/ 清除数据传送标志/*串口发送一个字符*/void send_char(unsigned char txd) SBUF = txd;while(!TI);/ 等特数据传送TI = 0;/ 清除数据传送标志/*串口发送字符串*/void send_str(unsigned char str)unsigned char i