毕业设计(论文)-侧方位自动泊车小车设计

上传人:na****u 文档编号:63660864 上传时间:2022-03-20 格式:DOC 页数:41 大小:3.21MB
收藏 版权申诉 举报 下载
毕业设计(论文)-侧方位自动泊车小车设计_第1页
第1页 / 共41页
毕业设计(论文)-侧方位自动泊车小车设计_第2页
第2页 / 共41页
毕业设计(论文)-侧方位自动泊车小车设计_第3页
第3页 / 共41页
资源描述:

《毕业设计(论文)-侧方位自动泊车小车设计》由会员分享,可在线阅读,更多相关《毕业设计(论文)-侧方位自动泊车小车设计(41页珍藏版)》请在装配图网上搜索。

1、 本科毕业设计(论文)侧方位自动泊车小车设计 学生学院 信息工程学院 专 业 测控技术与仪器 (光机电一体化方向) 年级班别 2013级(1)班 学 号 学生姓名 指导教师 2017年6月 侧方位自动泊车小车设计 信息工程学院广东工业大学本科毕业论文摘 要随着汽车产业的不断升级,各家汽车公司和科技公司的新技术层出不穷,人工智能,自动驾驶,新能源等新兴技术也逐步步入人们的日常生活之中。自动泊车既是汽车自动化和智能化进程中的核心技术之一,也是给人们提供了极大便利的一项技术。其中侧方位停车是一种使用频率很高的停车方式,本文针对侧方位泊车这一实用性课题进行设计研究,探索相关的硬件设备及其相应的软件设计

2、,以常见的智能小车为机械平台,结合传感器技术、电机舵机控制技术以及相应的软件技术为一体来实现小车的各种功能。本设计主要开发一个能自动侧方位泊车,自动避障和无线遥控的智能小车控制系统。设计以由红外线传感器的自动泊车、红外线自动避障、蓝牙遥控组成的硬件模块结合软件设计组成多功能智能小车,共同实现小车的前进倒退、转向行驶、检测障碍物后停止、人工遥控、自动根据车位泊车等功能。本设计以智能小车为平台模拟汽车相应模块的功能,进行实物仿真测试,经过实验调试小车能够实现正常行驶与停止、蓝牙控制、自动避障、自动泊车等功能,达到了预期的目标和要求,对于实际的汽车自动化和智能化设计有一定的实用和参考价值。关键词:

3、泊车,智能小车,红外传感器,蓝牙AbstractWith the upgrade of automobile industry, the endless new technology is developed by many automobile companies and scientific and technical corporation. New technology like artificial intelligence, automatic drive, new energy technology is step into our daily life. Automatic d

4、rive is not only a core technology for automate and intelligentise of automobile, but also a convenient technology for our daily life. The parallel parking is the one of most used functions of parking ,this article conducts the design and research on this practicability project ,explore the design o

5、f relevant hardware device and its corresponding software structure. Based on a normal intelligence car platform, combined with sensor , electric motor , servo and Bluetooth technology and its corresponding driven software to achieve various functions of the car .This design mainly develop control s

6、ystem of auto parking, avoiding obstacle, Bluetooth control for an intelligence vehicle .The system use infrared sensor module to conduct auto parking and avoiding obstacle ,the Bluetooth module to control and driver module to power the motor and servo ,to realize the functions like moving forward a

7、nd backward, turn right and left, control the motor speed and turning angle , detect the obstacle ,remote control ,automatic parking.This design use intelligence vehicle to simulate the functions of automobile, whose module divide into different simulation test. After the test of various experiments

8、 shows that the intelligence vehicle can achieve the regular drive and stop ,Bluetooth control, avoid obstacle itself and auto parking which can provide some practical and reference value for the automate and intelligentize of real automobile.Key words: parallel parking ,intelligence vehicle ,infrar

9、ed sensor ,Bluetooth目 录1 绪论51.1 研究背景51.2 国内外研究现状71.3 论文的研究内容与组织结构72 硬件系统综合设计92.1智能小车行驶系统102.1.1智能小车动力系统102.1.2 智能小车转向系统122.2智能小车信息采集模块132.2.1 红外避障传感器的原理132.2.2 红外避障传感器的结构142.3智能小车通讯系统152.3.1 蓝牙通信原理152.3.1 蓝牙通信过程173 智能小车软件设计与实现183.1 Arduino软件综合系统193.1.1 Arduino电机马达驱动193.1.2 Arduino舵机驱动203.1.3 多路红外传感器

10、的数据采集及分析213.1.4 蓝牙通讯的接受与发送223.2 Android软件综合系统223.2.1 基于Android的蓝牙通讯233.2.2 智能小车控制程序254 路径规划设计14.1 实际泊车路径分析14.2泊车路径模型分析24.3智能小车泊车路径规划3结论1参考文献1致谢11 绪论1.1 研究背景随着智能汽车概念的兴起,相关的技术也在不断地升级与融合之中,无人驾驶汽车的概念也随之被不断提及,相关的产品也不断的推出。无人驾驶汽车是自动化载具的一种,具有传统汽车的运输能力。作为自动化载具,自动驾驶汽车不需要人为操作即能感测其环境及导航。完全的自动驾驶汽车仍未全面商用化,大多数均为原型

11、机及展示系统,部分可靠技术才下放至商用车型。而在众多无人驾驶技术中,自动泊车是人们平时使用频率很高的一种技术,汽车用户几乎每天都会面对这种情况,并且大部分车辆损坏的原因,多半不是重大交通事故,而是在泊车时发生的碰撞,这给用户带来了很多损失与不便。因此,关于自动泊车的技术,各家汽车公司和科技公司也在不断地推陈出新,不断地优化和提升自动泊车的性能与使用体验。同时,世界各国政府也相继出台了很多政策与目标,推动相关技术的发展,进一步推动了汽车自动化智能化的进程。自动驾驶汽车的展示系统可追溯至1920年代及1930年代间,第一辆能真正自动驾驶的汽车则出现于1980年代。1984年,卡内基美隆大学推动Na

12、vlab计划与ALV计划;1987年,梅赛德斯-奔驰与德国慕尼黑联邦国防大学共同推行尤里卡普罗米修斯计划。从此以后,许多大型公司与研究机构开始制造可运作的自动驾驶汽车原型。21世纪以后,伴随着资讯科技的进步,更是突飞猛进,特斯拉汽车率先推出了特定环境下的自驾车,而汽车工业人士估计2030年以前就会量产出现。目前,美国国家公路交通安全管理局(NHTSA)已提出正式的分类系统:等级0:即无自动。驾驶随时掌握著车辆的所有机械、物理功能,仅配备警报装置等等无关主动驾驶的功能也算在内。等级1:驾驶人操作车辆,但个别的装置有时能发挥作用,如电子稳定程式(ESP)或防锁死刹车系统(ABS)可以帮助行车安全。

13、等级2:驾驶人主要控制车辆,但系统阶调地自动化,使之明显减轻操作负担,例如主动式巡航定速(ACC)结合自动跟车和车道偏离警示,而自动紧急煞停系统(AEB)透过盲点侦测和汽车防撞系统的部分技术结合。等级3:驾驶人需随时准备控制车辆,自动驾驶辅助控制期间,如在跟车时虽然可以暂时免于操作,但当汽车侦测到需要驾驶人的情形时,会立即回归让驾驶人接管其后续控制,驾驶必须接手因应系统无力处理的状况。等级4:驾驶人可在条件允许下让车辆完整自驾,启动自动驾驶后,一般不必介入控制,此车可以按照设定之道路通则(如高速公路中,平顺的车流与标准化的路标、明显的提示线),自己执行包含转弯、换车道与加速等工作,除了严苛气候

14、或道路模糊不清、意外,或是自动驾驶的路段已经结束等等,系统并提供驾驶人“足够宽裕之转换时间”,驾驶应监看车辆运作,但可包括有旁观下的无人停车功能。(有方向盘自动车)等级5:驾驶人不必在车内,任何时刻都不会控制到车辆。此类车辆能自行启动驾驶装置,全程也不须开在设计好的路况,就可以执行所有与安全有关之重要功能,包括没有人在车上时的情形,完全不需受驾驶意志所控,可以自行决策。(无需方向盘自动车)现在大部分商用的汽车已经达到了等级1的标准,部分高级一些的智能汽车达到了等级2的水准,有些先进一些的智能汽车已经能够达到等级3的水准,但是仍然有一些安全上的隐患,一些科技公司的测试车型在测试中可以达到等级4,

15、但是距离真正的自动驾驶仍然有不小的差距,要消除相应的的安全隐患,汽车产业还有不少的路要走。同样,自动驾驶技术中的自动泊车技术也是如此,大部分的汽车还没有装载自动泊车装置,部分高级汽车装载了泊车辅助系统,例如倒车雷达,倒车传感器等,先进一些的智能汽车搭载了自动泊车辅助系统,但是这种系统并不是全自动的,用户还是要亲自控制,系统只是告诉用户停车的时机而已。因此,设计开发一种响应速度快,经济实用且稳定可靠的智能汽车自动泊车系统也理所当然地成为自动驾驶技术研究和开发设计的焦点。本文就侧方位自动泊车这一课题开展了相应的研究与设计,主要以常见的智能小车平台模拟真实的汽车平台,通过搭建相应的泊车模块及其附加系

16、统,以模拟和测试真实环境下的自动泊车的泊车系统。本文所搭建的智能小车平台,是一个集光机电以及计算机一体化的系统,通过计算机技术融合了信息通讯,传感,自动控制,自动测量等技术来完成小车的智能驾驶与自动泊车的目标。1.2 国内外研究现状随着专用短程通讯技术和传感器技术,车辆控制技术越来越成熟,像自动驾驶,无人驾驶技术,从实验室走向实际应用的步伐正在加快。比如特斯拉、谷歌、百度等等相继进行了无人驾驶技术相关的测试。其研究过程可以划分为三个阶段:首先是泊车过程中驾驶员感知增强 ,这类系统使用各类障碍传感器,增强用户对于周围环境的感知能力以及感知范围,例如超声波传感雷达,运用超声波传感器探测即将撞到的障

17、碍物,在要撞到之前向用户发出提醒。这类产品已经在市场上广泛的运用。其次是基于超声传感器的简单自动泊车系统,利用传感器实现侧向停车位的检测,并控制车辆完成停车动作。系统通过相关的传感器探测出车位的相关信息并告知用户,用户在指定位置停好后,开启自动泊车按钮,系统开始辅助泊车,在泊车过程中,用户不需要操作方向盘,只需要根据系统的指示,依靠系统探测出的信息,控制油门与刹车来停入车位,这种系统还是需要人为的干涉,不能做到全自动泊车,其代表性的系统是来自雪铁龙 C3 City Park 的自动泊车系统。最后是采用多传感器融合的自动泊车系统,这种系统则更进一步,可以做到不需人为操作全自动泊车,用户只需点下按

18、钮,汽车就会自动泊入车位,这种系统通常采用了多个传感器配合使用,加以视觉检测装置,辅以避障装置来进行自动泊车的全过程,一般是通过视觉检测传感器来检测泊车的车位信息,加上超声波,摄像头组成的避障装置来检测障碍,防止进行碰撞,在高性能处理器的指挥下,整个系统完美配合,方向盘、油门、刹车、发动机、档位、门锁都可以自动配合控制,实现信息融合。其代表车型为 大众的 PAV 系统(Park Assist Vision),此系统目前处于商业演示阶段。1.3 论文的研究内容与组织结构本论文所述的智能小车综合系统主要涉及三大平台的工作与配合,共同完成智能小车的功能和目标。首先,是智能小车的行进与探测系统,小车首

19、先能够像现实中的汽车一样能够正常的前进、后退、转向,以及分布在车身的智能传感系统,能够探测周围的环境并作出相应的的反馈,并接受用户的指令做出相应动作。其次,是用户交互系统,负责用户和智能小车的交互操作,能够将用户的指令传达给智能小车,同时也将小车的情况反馈给用户。最后是将二者连接在一起的通讯系统,能够解析用户端与智能小车互相传输的数据,并传送至相应的执行机构。本文采用基于Arduino开发板的智能小车硬件驱动平台,和基于Android手机的用户软件交互界面,以及介于二者的基于蓝牙技术的智能通讯系统。论文的主要组织结构如下:第1章 绪论,整体性的阐述了侧方位泊车系统的研究背景、研究目的以及意义,

20、介绍了自动泊车系统在国内外的研究现状与研究过程,综合介绍了本论文所设计与研究的主要内容。第二章硬件系统综合设计,综合的介绍了本文所采取的硬件平台与相关模块,综合的介绍了各个方案的原理与结构,分析了个模块的优点与缺点,总结得出最终的硬件平台设计方案。第三章智能小车软件系统的设计与实现,分别介绍了位于硬件平台的Arduino开发板的驱动与控制软件开发,以及位于手机端基于Android应用的蓝牙通讯软件的集成的实现方法以及涉及到的主要代码的分析。第四章路径规划设计,首先对于实际中的泊车路径做了相关的介绍与分析,接着根据实际中的泊车步骤抽象为二维图形变化,进行了简化分析以及相关规划,最后根据二维模型,

21、结合智能小车的传感控制系统,规划出小车的行进路线以及参考点位。论文最后是总结与展望,综合性的概括了本文所涉及的设计与研究,提炼总结全文所做的工作。结合智能汽车、智能传感器等产业未来的发展趋势,进一步提出了本文继续研究的道路。2 硬件系统综合设计本论文所述的智能小车综合系统主要涉及三大平台的工作与配合,共同完成智能小车的功能和目标。首先,是智能小车的行进与探测系统,小车首先能够像现实中的汽车一样能够正常的前进、后退、转向,以及分布在车身的智能传感系统,能够探测周围的环境并作出相应的的反馈,并接受用户的指令做出相应动作。其次,是用户交互系统,负责用户和智能小车的交互操作,能够将用户的指令传达给智能

22、小车,同时也将小车的情况反馈给用户。最后是将二者连接在一起的通讯系统,能够解析用户端与智能小车互相传输的数据,并传送至相应的执行机构。本文采用基于Arduino开发板的智能小车硬件驱动平台,和基于Android手机的用户软件交互界面,以及介于二者的基于蓝牙技术的智能通讯系统。硬件系统设计是智能小车不可或缺的一步,同时也是实现自动泊车的基础,本文的主要目标就是设计一款能够自动泊车。本章将就智能小车上的各个模块进行具体详细的介绍与解析。其中,本文的智能小车经过了两版的设计,因此,下文将就二者进行对比介绍。第一代小车采用了8051主控制芯片、红外遥控、L298N电机驱动模块、寻迹模块、双电机、蜂鸣器

23、、数码管、电池盒。第二代小车基于Arduino平台及其扩展板(电机、舵机驱动模块、传感器采集模块),采用了蓝牙遥控、多路避障传感器模块、电机、舵机、 电池等模块。更加接近真实汽车的使用条件。图3.1 智能小车系统(左:第二代,右:第一代)本论文分别对基于8051单片机的硬件驱动平台以及基于Arduino开发板的硬件平台做了相关的研究与设计,下面分别对于二者作简要介绍。8051是一种8位元的单芯片微控制器,属于MCS-51单芯片的一种,由英特尔公司于1981年制造。该芯片具备了便宜、电路简单、体积小与耗电低等优点,所以目前在业界使用的极为广泛。Arduino是一款便捷灵活、方便上手的开源电子原型

24、平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。由一个欧洲开发团队于2005年冬季开发。它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,计算机中的程序开发环境。只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器

25、可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。2.1智能小车行驶系统智能小车最主要的功能之一就是能够正常行驶,其中在这里可以分为两个部分,动力装置和转向装置,其中动力装置就是为小车提供动力的模块,如电机,可以使小车前进或者后退,转向装置就是能够让小车向某个方向转一定角度的装置,例如舵机,可以使小车向左或向右转一定角度。二者配合起来就可以让小车按照规定路线行进,完成相应功能。2.1.1智能小车动力系统初始方案:采用两个HC02

26、-48直流减速电机马达及万向轮组成的动力系统,使用L298N电机驱动模块来驱动两个马达运转,以及采用四节5号电池(AA、R6)驱动(约6V)。图3.2 直流减速电机马达及L298N电机驱动板模块改进方案:采用了JGA25-370 金属减速电机配合减速齿轮,基于PM-R3拓展模块的(L298P)的直流驱动模块,7.4V锂电池驱动电机。图3.3 金属减速电机马达及L298N电机驱动板模块(PM-R3)经过改进之后,更换电机使小车能够更加平稳的行驶,不会因为两侧电机的步调不一而向某一方向偏转,更换更好的电池,使小车的动力增加,不会因为不够电压而导致一侧电机停止工作,更换了电机驱动,使电机能够更加智能

27、的调整速度。2.1.2 智能小车转向系统初始方案:通过智能小车上的两个动力轮的差速进行转向:当一个轮子速度快,一个轮子速度慢时,小车会向速度慢的一边转向。图3.3 双电机差速转向改进方案:通过使用舵机来帮助智能小车转向,舵机也叫伺服电机,最早用于船舶上实现其转向功能,可以通过程序连续控制其角度,舵机主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机发出讯号给舵机,经由电路板上的IC判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回讯号,判断是否已经到达定位。位置检测器其实就是可变电阻,当舵机转动时电阻值也会随之改变,藉由检测电阻

28、值便可知转动的角度。舵机的控制信号周期为20MS的脉宽调制(PWM)信号,其中脉冲宽度从0.5-2.5MS,相对应的舵盘位置为0180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持一定对应角度上,无论外界转矩怎么改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度。本文的智能小车采用了MG996R型号的舵机。图3.4 转向舵机在经过改进后,小车的转向能力大幅提升,避免了差速转向的不精确,差速转向主要依靠两轮之间的差速进行转向,但由于工艺水平所限,驱动模块并不能很好的控制两个电机的速度,并且由于电源的供电有限,导致智能小车的转向十分的不精确,经常发生偏移,因此在改进方案

29、中,选用了更加精确的舵机进行转向,它可以让车轮精确地转向某一角度,从而达到精确控制小车的目的。2.2智能小车信息采集模块红外探测传感器由于发出的是红外光,常见光对它的干扰极小,且由于价格便宜,而被广泛应用于智能小车的循线、避障等实际应用中。红外避障传感器具有一对红外信号发射与接收二极管,发射管发射一定频率的红外信号,接收管接收这种频率的红外信号,当传感器的检测方向遇到障碍物(反射面)时,红外信号反射回来被接收管接收,经到信号处理之后,通过数字传感器接口返回到机器人主机,机器人即可利用红外波的返回信号来识别周围环境的变化。2.2.1 红外避障传感器的原理本文采用了四路红外避障传感器模块,它的原理

30、是每1路的传感器的红外发射管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,红外接收管一直处于关断状态,此时模块的TTL输出端为高电平,相应指示二极管一直处于熄灭状态;当被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,红外接收管导通,此时模块的TTL输出 端为低电平,指示二极管被点亮。传感器的外部检测电路为LM339,LM339为内部集成了四路比较器的集成电路。因为内部的四个比较电路完全相同,这里仅以一路比较电路进行举例。比较器有两个输入端和一个输出端,两个输入端一个称为同输入端,用“+”号表示,另一个称为反相输入端,用“”表示。用作比较两个电路时,任意一

31、个输入端加一个固定电压作参考电压(也叫门限电压),另一端则直接接需要比较的信号电压。当“+”端电压高于“”端电压时,输出正电源电压,当“”端电压高于“+”端电压时,输出负电源电压(注意,此处所说的正电源电压和负电源电压是指接比较正负极的电压),也就是输出高低电平信号。2.2.2 红外避障传感器的结构红外循迹模块,主要分为两大部分,LM339比较器模块和红外对管模块,由于上面已经分析的其工作原理,下面给出两部分的原理图及其实物图。图3.5 红外传感器原理图及LM339比较器图3.6 4路红外避障传感器模块实物图2.3智能小车通讯系统本论文分别对基于8051单片机的硬件驱动平台以及基于Arduin

32、o开发板的硬件平台采用了不同的无线通讯平台,对于8051平台采用了红外遥控技术,对于Arduino平台则采用了蓝牙技术。下面分别对二者进行介绍。首先是采用红外遥控技术的第一代方案,红外遥控是一种无线、非接触控制技术,具有抗干扰能力强,信息传输可靠,功耗低,成本低,易实现等显著优点,被诸多电子设备特别是家用电器广泛采用,并越来越多的应用到计算机和手机系统中。红外遥控分为发射端和接收端,发射电路是采用红外发光二极管来发出经过调制的红外光波来传输信息,并由红外接收电路(由红外接收二极管、三极管或硅光电池组成)将红外发射器发射的红外光转换为相应的电信号,在经过转换电路转化为相应的数据。采用蓝牙技术的第

33、二代方案,蓝牙是一种支持设备短距离通信(一般10m内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。其数据速率为1Mbps。采用时分双工传输方案实现全双工传输。2.3.1 蓝牙通信原理蓝牙主端设备发起呼叫,首先是查找,找出周围处于可被查找的蓝牙

34、设备。主端设备找到从端蓝牙设备后,与从端蓝牙设备进行配对,此时需要输入从端设备的PIN码,也有设备不需要输入PIN码。配对完成后,从端蓝牙设备会记录主端设备的信任信息,此时主端即可向从端设备发起呼叫,已配对的设备在下次呼叫时,不再需要重新配对。已配对的设备,做为从端的蓝牙耳机也可以发起建链请求,但做数据通讯的蓝牙模块一般不发起呼叫。链路建立成功后,主从两端之间即可进行双向的数据或语音通讯。在通信状态下,主端和从端设备都可以发起断链,断开蓝牙链路。蓝牙数据传输应用中,一对一串口数据通讯是最常见的应用之一,蓝牙设备在出厂前即提前设好两个蓝牙设备之间的配对信息,主端预存有从端设备的PIN码、地址等,

35、两端设备加电即自动建链,透明串口传输,无需外围电路干预。一对一应用中从端设备可以设为两种类型,一是静默状态,即只能与指定的主端通信,不被别的蓝牙设备查找;二是开发状态,既可被指定主端查找,也可以被别的蓝牙设备查找建链。本文最终的智能小车的通信模块采用的是DX-BT05型蓝牙通讯模块,采用CC2541主芯片,配置 256Kb 空间,遵循V4.0 BLE蓝牙规范。支持AT 指令,可根据需要更改串口波特率、设备名称、配对密码等参数,使用灵活。支持UART接口,并支持SPP蓝牙串口协议,具有成本低、体积小、功耗低、收发灵敏性高等优点,只需配备少许的外围元件就能实现其强大功能。主要用于短距离的数据无线传

36、输领域,对于本设计的应用十分适合,另外该模块可以方便的和手机和PC的蓝牙设备相连,也可以两个模块之间的数据互通,避免繁琐的线缆连接。下面是本文所采取的模块主要的参数:表3.1 DX-BT05型蓝牙模块蓝牙协议Bluetooth Specification V4.0 BLE,收发没有字节限制拥有更远的通信距离工作频率2.4GHz ISM band调制方式GFSK(Gaussian Frequency Shift Keying) 灵敏度-84dBm at 0.1% BER传输速率Asynchronous: 6 kbps Synchronous: 6 kbps安全特性Authentication a

37、nd encryption支持服务Central & Peripheral UUID FFE0,FFE1功 耗自动休眠模式下,待机电流400uA1.5mA, 传输时8.5mA供电电源+3.3VDC 50mA外观尺寸26.9mm x 13mm x 2.2 mm功 能主从一体图3.6 蓝牙模块2.3.1 蓝牙通信过程蓝牙设备之间的通信的主要有四个步骤:首先是开启蓝牙设备,然后寻找局域网内可能或者匹配的设备,接着连接设备,最后实现设备之间的数据传输。接着是具体实现,第一步是启动蓝牙功能,通过相应指令启用蓝牙功能。第二步是查找设备,通过名字、MAC地址等信息查找相应的蓝牙设备。第三步是查询匹配好的设备

38、,查看以前配对过的蓝牙设备集以便选取一个设备进行通信。第四步是扫描设备,查找周围的蓝牙设备(大概十米以内),需要对方开启蓝牙,并开启或者已经开启了“被发现使能”功能。第五步是使能被发现,让自己的蓝牙设备能够被其他设备发现。第六步是连接设备,建立与目标设备的蓝牙连接。第七步是服务端的连接,两台设备之间,服务端用于监听外来的连接请求。第八步是客户端的连接,两台设备之间客户端用于发出连接请求。第九步是管理连接,当设备连接上以后,实现设备之间数据的共享,以及其他操作。3 智能小车软件设计与实现本设计主要运用蓝牙技术作为通讯的桥梁,连接智能小车与用户交互界面,借助传感器技术及其数据采集技术,通过Ardu

39、ino开发板及其驱动模块驱动电机和舵机以实现目标功能。系统总体框架如图3.1所示。图3.1 智能泊车系统总体框架 智能泊车系统的框架分为如图所示的三大模块,即三层结构,首先是以Android手机为平台的应用层,它可以根据用户的需求来设计不同的功能来实现,由于现在手机的芯片功能已经十分强大,许多复杂的操作例如运算处理和数据分析都可以放在手机上来运作,而不用担心底层控制器的性能不足,Android系统支持很多的开源软件有很多强大的功能例如图像识别、语音识别都可以添加在这一层中来,并且Android系统有很好的网络服务功能,在手机上处理不了的功能甚至可以在云端来处理。其次是处于中间层的蓝牙传输,它用

40、于组成多维的通讯网络,实现车辆的底层系统与人机交互平台的无线交流。基于现在的手机几乎都配备了蓝牙的功能,并且现在的汽车大部分也装有蓝牙模块,因此蓝牙传输这个方案十分具有实用化的价值。最后是属于系统硬件是基于Arduino开发板及其扩展模块的智能硬件系统,它采用了多元传感器技术及其信息化技术,以及各类驱动技术,实现对智能小车的控制与驱动。3.1 Arduino软件综合系统Arduino是一个开源的软硬件一体化平台,它提供了功能强大的Arduino开发板以及其配套的Arduino IDE集成开发环境,它不仅提供开源的硬件原理图、电路图、IDE以及核心库,而且开提供了各种各样的开源硬件和软件模块,在

41、开源协议范围里可以任意修改。并且它可以在Windows、Linux、macOS三大电脑系统上跨平台开发,以及拥有及其清晰明了的开发流程,使用类似于C+语言但却更加简洁清晰的Arduino语言来开发,并且对于很多应用库都做了相应封装,让使用者更加容易上手与实用。在Arduino软件系统中主要负责处理与驱动硬件系统的各个子系统,其中最主要的代码分为以下几个部分:电机驱动与控制;舵机驱动与控制;多路红外传感器的数据采集及分析;蓝牙通讯的接受与发送,小车与手机之间的控制基于蓝牙技术,Android开发了一个简单的控制界面,下面就逐一分别介绍。3.1.1 Arduino 电机马达驱动在Arduino开发

42、板上有PWM输出口,因此可以利用该接口使用PWM技术驱动电机马达。下面是各接口连接与定义 :arduino开发板使用外接电源(7.4V),电机马达接到主板上的控制正负接口(A+、A-),电机驱动板内部使用开发板的5,6口PWM控制输出。下面是开发板控制以及驱动的核心代码解析,首先我们需要驱动电机运转,我们要定义两个PWM输出接口5口与6口:#define PWMA1 5 /Motor As pin接着我们要定义小车所需的前进、后退、停止参数:#define MOTORFOWARD setMotor(-90) /motor back/后退与停止的值分别为90与0,也是一样定义的。下一步Ardui

43、no开发板初始化参数设定:void setup() pinMode(PWMA1, OUTPUT); /系统定义两个PWM接口为输出接口在下一步是实现电机PWM调速的关键性驱动函数:void setMotor(int m1Speed) /电机驱动函数if (m1Speed = 0)digitalWrite(PWMA2, HIGH);analogWrite(PWMA1, 255 - m1Speed);elsedigitalWrite(PWMA1, HIGH);analogWrite(PWMA2, m1Speed + 255); 最后是实际使用电机驱动的一个实例:void loop() /Ardui

44、no系统循环,相当于C语言中的main()函数 MOTORFOWARD; /前进setMotor(100); /直接控制速度3.1.2 Arduino 舵机驱动舵机是一种位置(角度)伺服的驱动器,适用于需要角度不断变化并可以保持的控制系统。在本文前面已经介绍了舵机的原理以及硬件参数,下面就本系统进行详细介绍。首先是连接设置:舵机有三条线,VCC、GND、Signal,其中VCC、GND连接到开发板的VCC、GND上,Signal线我们定义在开发板的4号口。下面是相关的具体代码的解析:首先系统需要引入Arduino开发板官方的舵机驱动库:#include 接着我们定义开发板上的4号口为舵机信号线

45、并定义小车转向角度:#define SERVOPIN 4 /servos pin#define SERVOMIN 40 /the angle of servo下一步是创建舵机对象并在系统初始化函数中初始化舵机:Servo myservo; /创建一个舵机控制对象void setup() myservo.attach(4); /连接4号口为舵机在下一步是实现电机驱动的相关代码:#define TURNRIGHT myservo.write(SERVOMIN) /左转/其他方向也是同样定义void loop() TURNRIGHT ;/右转myservo.write(100); / 指定舵机转向的

46、角度3.1.3 多路红外传感器的数据采集及分析本文采用了四路红外避障传感器模块,上文已经介绍了其原理与结构,下面就传感器的数据采集以及数据分析以相关操作做进一步的介绍。首先是传感器和Arduino开发板的连接设置:4个传感器分别用线接入传感器模块PCB板(传感器有VCC、GND、Signal线,分别对应接入),经过模块的转换(LM339),变为6条线(VCC、GND、IN1-4),通过连接线接入Arduino开发板的接口,VCC、GND对应接入,IN1对应2口,IN2对应3口,IN3对应7口,IN4对应8口。下面是核心代码解析,首先我们要定义4路传感器的接口,方便在后面的程序里调用:#defi

47、ne RED1 2 /其他传感器也同样定义接着在初始化参数中设定传感器的端口为接受端(INPUT):void setup() pinMode(RED1, INPUT); ./其他传感器也同样定义最后是一个使用传感器进行探测的实例,读取的是2号3号传感器的信息,当传来的是高电平以及低电平相应的操作:void loop() if(digitalRead(RED2)=HIGH) . /对2号传感器进行检测,并在下面的代码进行相应操作3.1.4 蓝牙通讯的接受与发送本文采用了DX-BT05型模块,上文已经介绍了其原理与结构,下面该模块的数据传输的接受与发送以及相关操作做进一步的介绍。连接设置:蓝牙模块

48、一共有6的接口,见图3.3.1,其中我们需要接VCC、GND、TXD、RXD接下来是核心代码解析:Arduino开发板中的蓝牙与其串口是连接在一起的,因此可以很方便的运用蓝牙,首先是初始化设置,设定串口的通信波特率:void setup() Serial.begin(9600); /蓝牙与串口是在一起的,因此操作串口即为操作蓝牙接着是一个运用蓝牙通讯的例子,它首先检测蓝牙是否在线,接着读取接收来的数据,并对数据进行判断,如果是字符a的话,就像蓝牙输出字符串“hello world”:void loop() While(Serial.available() /检测蓝牙是否可用Char c=Ser

49、ial.read();/读取接收来的数据If(c=a)/对读取来的数据进行判断Serial.println(“hello world”);/使用蓝牙发送“hello world”字符串 3.2 Android软件综合系统Android是一个移动设备系统,是基于Linux平台,由操作系统,中间件、用户界面和应用软件组成。Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。Android早期由原名为Android的公司开发,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功

50、能,其他的应用软件则由各公司自行开发,部分程序以Java编写。本节将就Android手机系统下的应用搭建与设计进行相关研究与分析,该应用实现了与智能小车的配合使用实现了目标的功能,是与用户直接交互的界面,也是本设计的基础。开发Android应用程序主要使用Java程序语言,利用Android Studio集成开发环境进行开发与调试,本文的Android应用程序主要包括蓝牙通讯、智能小车控制程序、以及用户操作界面三部分组成,下面依次说明。3.2.1 基于Android的蓝牙通讯首先我们进行程序流程简要规划:首先开启蓝牙设备,接着寻找局域网内可能或者匹配的设备,最后连接设备,实现设备之间的数据传输

51、。在有了初步规划之后我们将进入细节代码分析:要操作蓝牙设备,我们首先要获取操作蓝牙设备的对象BluetoothAdapter,BluetoothAdapter BTAdapter = BluetoothAdapter.getDefaultAdapter();同时,还需要使用到三项系统权限:将这三项系统权限添加在AndroidManifest.xml文件中,之后我们就可以通过BluetoothAdapter对真实的蓝牙设备以及软件功能进行操作使用了。开启蓝牙,在应用中使用Intent启动确认窗口,让用户选择是否允许打开:BluetoothAdapter BTAdapter = Bluetooth

52、Adapter.getDefaultAdapter();/判断蓝牙功能是否打开if (!BTAdapter.isEnabled() /没有打开,就启动确认窗口询问用户是否打开 Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivity(i);允许被发现,我们需要设置设备可以被别的蓝牙设备发现:BluetoothAdapter BTAdapter = BluetoothAdapter.getDefaultAdapter();/判断是非可以被发现if(BTAdapter.getScanMode()!=Bl

53、uetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) /启动窗口,询问用户是否可以设置成允许被发现Intent i=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); /可以一直被别的蓝牙设备发现i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);startActivity(i);搜索可连接设备,使用BluetoothAdapter的startDiscovery()方法开始搜素设备,并使用BroadcastRecei

54、ver类来接受系统发出的广播:BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();/如果正在搜索蓝牙设备,则停止搜索if (mBluetoothAdapter.isDiscovering() mBluetoothAdapter.cancelDiscovery();/开始搜索蓝牙设备mBluetoothAdapter.startDiscovery();/广播接收private final BroadcastReceiver mReceiver = new BroadcastReceiver() Ove

55、rride public void onReceive(Context context, Intent intent) String action = intent.getAction();if (BluetoothDevice.ACTION_FOUND.equals(action) /从Intent中获取可连接的设备BluetoothDevicedevice=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); else if (BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(act

56、ion) /开始搜索了,增加相应操作。 else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action) /结束搜索了,增加相应操作。 ;连接建立以后,双方开始交换数据。无论是主动连接还是被动连接,数据的交换都是通过之前得到的Socket进行的:InputStream mInStream = mSocket.getInputStream();OutputStream mOutStream = mSocket.getOutputStream();/InputStream负责读取从Socket传入的数据;/OutputStream

57、负责将数据从Socket发送出去;/存放传入数据的数据区byte buffer = new byteMAX_BUFFER_SIZE;/存放读取数据的字节长度int bytes;while (true) try /等待读取数据bytes = mInStream.read(buffer); catch (IOException e) /异常情况,例如Socket被关闭,对方断开连接break;/采用OutputStream的write()方法发送数据mOutStream.write(data);以上就是蓝牙传输数据的关键性部分,在程序中将相应的按键或者着操作转为相应的字符以简化传输的数据,将此字符

58、通过蓝牙从手机端发送到Arduino开发板上,开发板在通过检测字符指令转化为相应的操作指令,并传达给相应的操作机构进行执行操作。3.2.2 智能小车控制程序在介绍完Android应用程序的蓝牙通讯传输之后,我们需要编写Android应用程序端对于智能小车的控制程序,在Arduino系统的蓝牙通讯的发送与接受一节里,已经大致介绍了Arduino端的程序设计,在上文也讲述了在手机的蓝牙通讯的基本函数接口,因此在下面就两端的配合做相关的介绍。首先,对于两端的配合,我们主要通过对字符的识别来实现,通过蓝牙接口发送字符指令来进行相应的数据交流。大部分时候,数据都是从Android端发送至Arduino开

59、发板端的,举一个实际的例子来说明:首先从Android手机应用发送一个字符指令,例如字符a,通过手机蓝牙发送至开发板的蓝牙上接受,开发板的程序作相应的字符指令识别(在两端都做同样的设定),例如字符a代表前进,开发板识别后就做前进的动作。在完成相应动作之后,开发板端也要向手机端发送相应的数据信息以提醒用户知晓,开发板可以通过蓝牙端口发送字符数据到手机上接受,例如在完成了泊车任务之后,开发板会发出一段字符串,例如:“parking process over !”,该字符串通过蓝牙接口发送至手机并通过相应的程序接受与整合并显示在屏幕上。细节代码分析:首先是通过Android发送字符数据,这个在上文已

60、经介绍了,就是通过OutputStream的write()方法来实现,即mOutStream.write(data);其次是Arduino端的识别:while(Serial.available()0) /检测蓝牙是否有数据switch(Serial.read() /对接收的数据进行判断读取case a:/接收到字符a时 MOTORFOWARD;/小车前进break;./相应检测及操作break;通过Arduino开发板发送字符数据,使用Serial.println(data)方法来实现:Serial.println(“parking process over !”);/将这条信息通过蓝牙端口发

61、送了。其次是通过Android手机应用接受,主要用到InputStream的read方法:mInStream.read(buffer);/这条语句接受后再通过android的相应显示控件显示出来。接着是介绍用户操作界面,用户通过操作界面与智能小车进行交互操作与指示,交互界面也是对于智能小车的操作接口,也是发送相关指令的途径,上面已经提及了一些交互界面的功能,下面就具体介绍一下界面的功能与设计:首先是主界面图:图4.2 Android应用主界面主界面如上图所示,主要使用LinearLayout布局,分为上下两部分,上面是一个TextView控件,用于显示Arduino开发板传来的相应讯息,下部分是Button控件组,用于向开发板发送相应的指令(4.2.2节已介绍相应接口的实现)。对应的指令表如下所示:表4.1

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!