番禺网站开发平台,品牌网站开发价格,珠海定制网站建设推广,最好的国际贸易网站目 录
摘 要 I Abstract II 引 言 1 1 总体方案设计 3 1.1 方案论证 3 1.2 项目总体设计 3 2 项目硬件设计 4 2.1 主控模块设计 4 2.1.1单片机选型 4 2.1.2 STM32F103RCT6芯片 4 2.2单片机最小系统电路 5 2.3电机驱动模块设计 7 2.4红外模块设计 8 2.5红外遥控模块设计 9 2.6超…目 录
摘 要 I Abstract II 引 言 1 1 总体方案设计 3 1.1 方案论证 3 1.2 项目总体设计 3 2 项目硬件设计 4 2.1 主控模块设计 4 2.1.1单片机选型 4 2.1.2 STM32F103RCT6芯片 4 2.2单片机最小系统电路 5 2.3电机驱动模块设计 7 2.4红外模块设计 8 2.5红外遥控模块设计 9 2.6超声波避障模块设计 10 2.7 视觉采集模块设计 11 2.8 WIFI模块设计 12 3 项目软件设计 14 3.1 软件开发环境介绍 14 3.2 视觉导航软件设计 15 3.3 循迹模块软件设计 16 4 仿真与调试 18 4.1 系统硬件调试 18 4.2 系统软件调试 18 4.3实物测试 18 结论 20 参考文献 21 附录程序主函数 23 致 谢 27
摘 要
随着智能化的到来通讯网络计算机自动控制等产品正在不断发展人们对于产品的方便性以及舒适性也越来越看重使得传统的人工工艺和机械装备不再满足人们的需求而又随着时代水平的提高汽车逐渐成为人们在生活和工作中不可缺少的工具。 为了消除人们在各种工业繁琐的危险环境对于自身的危险的问题本着让工作更加高效而且节省成本提升人们生活水平的原则本课题利用STM32单片机作为主控芯片视觉采集模块采用USB摄像头以及PWM驱动技术实现视觉导航小车同时在小车上增加WIFI传输功能从而实现人们可以规划小车的行驶路径以及人们可以在手机终端或者PC端实时看见周围的情况并且实时控制小车从而随时应付突发情况。结果表明通过完成系统总体设计、硬件设计、软件编写、软硬件调试的工作人们完全可以让视觉导航小车去他们无法进入地方进行勘测从而可以让工作更加有效提升生活效率而且对安全也可以得到保障即使由于环境导致小车损坏只需修理既做到了节省成本又可以消除安全隐患从而带来了巨大的经济和社会效益。
关键词STM32 PWM驱动 WIFI 视觉导航
Abstract With the advent of intelligent, communication network, computer, automatic control, and other products are growing, people for the convenience and comfort of products also more and more value, makes the traditional manual craft and machinery and equipment no longer meet people’s needs, and with the increase of age level, car become people indispensable tools in the life and work. In order to eliminate people in all kinds of industrial cumbersome dangerous environment for their own problems, make work more efficient and cost savings, improve the principle of people’s living standard, this topic using STM32 MCU as the master control chip, visual acquisition module driven by USB camera and PWM technology to realize visual navigation car, at the same time increase the WIFI transfer function on the car, so as to realize the moving path of people can plan the car and in the mobile terminal or PC real-time people could see the situation around and real-time control of the car, so as to cope with emergency at any time. Results show that by completing the system overall design, hardware design, software programming, hardware and software debugging work, people can make a vision navigation map the car to go to places where they cannot enter, thus can make work more effectively, improving the efficiency of life, but also to the safety can be guaranteed, timely car due to environmental damage, need to repair, both cost savings can be achieved, but also can eliminate the safety hidden trouble, which brought great economic and social benefits.
Keywords: STM32; PWM drive; WIFI; Visual navigation
引 言
随着时代的发展人们在科技上的提高是显而可见的智能化产品逐渐走进人们的生活当中。在如今的大数据时代智能化产品无非是人们得力的助手可以满足人们的各种需求因为它们比人工作效率更快更准。在70-80年代人们驾驶汽车减轻负担代替从前的车马确实给让生活带来了便利和快捷但是却增加了人们的疲劳以及艰辛。随着人们逐渐走在科技的前沿智能化汽车走进各行各业。智能小车具有许多功能例如自动跟踪避障和可控驾驶。它可以在不同的环境中完成工作。智能小车在各个行业具有良好的应用价值使得智能小车具有广阔的应用前景。 作为现代的新发明智能小车可以根据预设模式在环境中自动运行并且无需人工管理即可工作。智能小车可以像真正的汽车一样显示生活的时间此时行驶的速度以及里程总数。智能小车可以自动根据人们设置的轨迹进行移动可以根据光线进行移动并且可以在即将碰见障碍物时进行躲避等功能。由于需要像汽车一样进行可控的行驶速度停车定位位置并把图像远程输出它的研究离不开自动化专业需要利用智能传感器技术机器人控制技术运动控制系统等多方面学科。除军事应用外它还可以用于物流运输地质勘探灾害搜寻等领域。 视觉导航小车的研究主题来自对智能汽车自动驾驶功能的研究。智能汽车自动驾驶的研究可以对人类社会的进步产生重大影响。例如在解决交通安全以及便捷的问题上提高了交通网络的利用以及减少车辆排放等等。由于在数据控制终端中集成了嵌入式系统该系统具有低功耗和高度集成的优点。将嵌入式技术应用于手持设备可以使其朝着更快、更薄、更用户友好的目标发展。 本课题研究目的是以STM32为基础设计的视觉导航小车将它应用到人们的实际生活当中。视觉导航小车能够实现自主避障、自主行驶、实时采集小车周围的图像信息并在终端实时显示。将采集到的数据通过WIFI信号发送到手机终端或PC电脑同时用户在终端可通过监控界面对智能小车发送控制指令从而达到灵活的控制视觉导航小车小车在遇到障碍物时通过设定的功能实现避障。该项技术还可用来控制家用电器实现智能家居故有很高的应用价值。本篇文章共分为四个章节具体内容如下 第一章重点说明了系统的方案设计主要阐述了系统的功能和设计目标并根据设计目的选择合适的主控芯片做出了系统的总体方案设计框图。 第二章介绍了视觉导航小车的硬件设计其中包含各个模块的设计原理并根据系统的设计要求选取单片机型号选择最适合小车功能的传感器和摄像头。 第三章介绍了系统的软件设计简要介绍了系统的开发环境和应用程序设计。 第四章是视觉导航小车的调试部分囊括了系统的硬件调试以及软件调试并就本设计出现的问题做了简单的论述以及解决办法。
1 总体方案设计
1.1 方案论证 本课题是为了让小车进入人类无法进入的地方进行勘测从而让人类在手机终端或者PC端看见小车周围的环境从而进行操作和工作。所以为了控制小车实现功能做出以下两种设计方案进行对比 方案一是采用STM32主控摄像头PWM驱动技术实现视觉导航小车具体为通过STM32作为主控芯片驱动小车以便来控制小车的运行根据视觉采集模块采集的图像信息通过WIFI模块发送到手机或电脑人们在界面上实时查看再将图像信息传递给STM32从而控制小车。 方案二是采用FPGA图像采集单元驱动板实现视觉导航小车具体地视觉导航小车利用CMOS传感器采集图像信息。FPGA利用COMS传感器提供的时钟信号作为同步的信号进行图像采集然后通过控制板的数字接口将相机的8位数据线和相应的控制信号直接连接到图像采集优点是集成度高速度快和可靠性高[1]。如果要更改驱动电路的时序并添加一些功能则只需对设备进行重新编程。 经过比较考虑到性能第一种更加灵活。对于变化的车速使用PWM脉冲代码速度控制进行控制并通过更改电动机的平均电压来改变汽车的速度。相对于第二种成本也是很低所以采用第一种方案。 1.2 项目总体设计 本设计基于STM32主控模块该功能主要通过7个模块的电路设计来实现分别是电源模块红外模块电机驱动模块视觉采集模块WIFI模块循迹模块超声波模块。系统功能图如图1.1所示。
图1.1 系统功能图
2 项目硬件设计
2.1 主控模块设计 2.1.1单片机选型 控制芯片的选择应适合设计要求性能应具有功耗低性能高稳定性好存储空间大的优点。当设计要求准确时代码指令的兼容性就很高。 STM32结构设计最大限度地减少了外围设备以实现最大的集成度。与STC89C51相比它具有更多I/O口可以进行更多的功能包括上电复位按钮复位定时器时钟等功能可以用作系统的主时钟以满足丰富的片外设备和各种接口[2]。因此在本设计中选择了STM32它起着编写程序的作用。它类似于微型计算机可以用C语言和汇编语言进行编程以它为核心每个模块都连接到微控制器以实现各种功能。 2.1.2 STM32F103RCT6芯片 本设计使用STM32F103系列单片机的STM32F103RCT6作为主控制芯片。 STM32F103RCT6是嵌入式微控制器集成电路IC。该单片机具有32位ARM Cortex-M3内核具有72MHz的速度和512K FLASH和48K SRAM存储器容量具有3个ADC13个通信接口。STM32F103系列芯片的主要参数如图2.1所示
图2.1 STM32F103系列 其中本设计选用的STM32F103RCT6的管脚描述如图2.2所示
图2.2 STM32F103RCT6引脚图
2.2单片机最小系统电路 STM32F103的最小系统电路由电源电路时钟源电路BOOT启动电路调试接口电路复位电路五部分组成。最小系统原理图如图2.3所示
图2.3 最小系统原理图 晶振电路也就是时钟电路整个系统处理信号和其它各部分运行也是一个频率晶振电路就是为它们提供一个稳定的振荡频率使系统各部分保持同步。本设计的晶振电路由两个30μF的电容和一个8MHZ的晶振组成。本设计使用的是内部时钟方式即使用晶振内部电路产生时钟脉冲。
图2.4 晶振电路原理图 每个单片机系统都需要带复位电路。单片机复位电路就好比电脑的重启部分当电脑在使用中出现死机按下重启按钮电脑内部的程序从头开始执行。单片机也一样当单片机系统在运行中受到环境干扰出现程序跑飞的时候按下复位按钮内部的程序自动从头开始执行。STM32只需在RESET接低电平信号即可实现复位功能在单片机系统中系统上电启动的时候复位一次当按键按下的时候系统再次复位如果释放后再按下系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。图2.5如下图所示
图2.5 复位电路原理图
2.3电机驱动模块设计 本设计使用的是L298N电机驱动模块原理图如下图2.6所示。该芯片使用标准逻辑电平控制信号并具有两个使能控制信号可以检测外部电阻的变化并将该变化反馈到控制电路为了改变车速使用PWM脉冲编码速度控制来操控并且通过改变DC伺服电动机的占空比电压来改变平均电压的值从而改变电动机的速度[5]。相比于其他电机还具有以下几点优点: 1直流电动机的转矩大可以克服传动装置的摩擦转矩和负载转矩 2能适应各种复杂的速度和信号的快速变化并具有良好的响应能力 3直流电动机的空载转矩大。当控制系统失速时它可以立即做出反应并产生大扭矩以防止汽车由于惯性而继续前进 4与其他电动机相比直流电动机声音小运行稳定。
图2.6 L298N电机驱动模块原理图 其中p4是电机控制部分 L298N用于驱动四个直流减速电机。本设计中四个直流电机的线左右两边分别用不同颜色的线连接电机驱动模块的OUT1, OUT2, OUT3, OUT4,引脚A和B可用于PWM控制实现直线行驶转弯加速和减速等待动作。在本设计中当给定ENA使能端的信号为1IN1为1IN2为0时电动机正转当给定的IN1为0IN2为1时电动机反转原理相同这样就能控制电动机的正反转。当给定ENA使能端的信号为0时电动机停止转动。 2.4红外模块设计 在视觉导航小车的设计中为了实现最基本的循迹功能以及避障功能采用了2个TCRT5000循迹模块2个红外避障模块。本设计中利用红外线对不同物体的的反射特性不一样的原则对白色物体红外线反射多对黑色物体红外线反射少的特性进行了循迹模块的设计将左右循迹的线插在了单片机的D3和D4引脚上。循迹模块的工作原理是当左循迹模块检测到是白色右循迹模块检测到的也是白色小车继续根据轨迹行驶当左循迹模块检测到是黑色右循迹模块检测到的是白色小车会根据检测到的信号向右行驶当左循迹模块检测到是白色右循迹模块检测到的是黑色小车会根据检测到的信号向左行驶。 在本设计中为了让小车通过两种不同方式进行避障选用了红外避障模块红外避障的方向是向前进行发射和循迹是向下进行发射在调试过程中将左右避障模块的线分别插在了单片机的D5和D6引脚上如图2.7所示。红外避障模块的工作原理是红外灯检测到前方有障碍物将输出低电平相应电路板上的指示灯点亮如果没有障碍物则输出高电平。
图2.7 循迹和避障模块原理图 2.5红外遥控模块设计 为了让人们可以在现场远程控制小车从遥控器进行调试小车让它去人们无法工作的地方进行工作所以在本课题中加了一个红外接收头插在了单片机的A4端口上如下图2.8所示用来遥控视觉导航小车。可以通过按遥控器的按钮对小车进行控制CH键是前进蓝色是向左前进绿色是向右前进号是向后倒退蓝色的向右键是停止遥控器如下图2.9所示。当用遥控器对着红外接收头控制时红外线进入模块它可以在其输出端便可以获悉原来发射器发出的数字编码只要它由STM32解码程序解码就可以知道按下了哪个按钮并执行相应的控制过程以完成红外遥控操作。
图2.8 红外接收头原理图
图2.9 遥控器实物图
2.6超声波避障模块设计 为了避免小车在没人看管的情况下碰撞发生事故又根据超声波测距测量距离障碍物的位置可以避免这种事故因此本设计中加入超声波避障模块以便实现该需求。 根据设计要求当超声波模块检测到前方有障碍物时小车会停止移动并往后退一定距离防止小车由于速度过快从而传感器无法分析信号在小车后退之后舵机会开始左右转动超声波模块开始工作这时超声波模块会检测到三个数据值左侧右侧前方这时候会进行判断这样的连续周期测量可以达到移动测量的值小车可以根据测量值避开障碍物。因此为了符合项目需求选用了HC-SR04该模块使用电压为5V,静态电流小于2mA感应角度不大于15度探测距离足够。该模块共有4个引脚两个电源引脚2个控制引脚并将引脚插在单片机上超声波模块原理图如下2.10中所示。
图2.10超声波模块原理图
2.7 视觉采集模块设计 本课题的目的是为了让视觉导航小车进入人们无法进入的地方以便人们可以在手机端或PC端看到视觉导航小车周围的环境以执行操作和工作。因此为了实现观察功能必须添加摄像头。摄像头的工作原理是通过图像传感器实现的。图像传感器的工作原理是将采集的场景对象的AD样本转换为图像电信号然后将图像电信号发送到图像。根据处理芯片的像素大小和颜色分布将其转换为相应的数字信号。成像系统基于对转换后的数字信号的分析和提取来判断获得了用于收集视频信息的各种运动信号。当前有CMOS摄像头和USB摄像头。基于以上分析比较了以下两种设计方案。 方案一使用通用的CMOS图像传感器。它内部不仅包含图像传感器还包含转换器并且是可以连接到SCCB接口的主机控制芯片或视频编码器。 CMOS重量轻且外围电路简单并且可以由5V供电。 方案二采用USB数字摄像头。摄像机无需驱动即可实时收集数字视频信息。 由于USB接口是当前广泛使用的接口模式即插即用且易于使用因此选择了Mosheng rqeso 008 USB摄像头。为了使电路设计更加简单方便所以采用USB连接仅从连接WIFI模块获得的电压可以满足摄像头正常工作所需的电压因此无需连接外部电压。尽管就捕获动态图像和成像清晰度而言USB摄像头无法与接口摄像头相提并论但其操作简单且即插即用。 2.8 WIFI模块设计 随着时代的不断进步WIFI技术也在不断完善甚至进入人们的生活无论人们身在何处都可以连接WIFI进行娱乐。由于通信方式比传统通信方式具有更大的覆盖范围布线相对简单传输速度快因此可以应用于机电设备密集空间小的煤矿在有线电缆连接很困难的环境中并满足复杂工业现场对环境危害的各种要求因此在视觉导航小车的设计中为了使人们能够实时观察视觉导航小车的行驶周边情况并可以在PC或手机上控制小车所以本课题是在视觉导航小车中添加WIFI模块进行传输在安装完WIFI模块之后将杜邦线插在单片机的端口上根据顺序依次连接。该模块体积小功耗低发热量低WIFI和网络端口的传输性能稳定。模块的外围电路非常简单仅需添加3.3V直流电源即可启动系统并控制WIFI。其参数以及实物如下2.11和2.12所示。
图2.11 WIFI模块参数图
图2.12 WIFI模块实物图
3 项目软件设计
3.1 软件开发环境介绍 Keil是行业领先的微控制器MCU软件开发工具的独立供应商。 Keil是由Keil Software在美国生产的单片机C语言软件开发系统。与汇编语言相比C语言在功能结构可读性和可维护性方面具有明显的优势因此易于学习和使用 Keil提供了完整的开发解决方案包括C编译器宏汇编链接器库管理和强大的仿真调试器这些部分通过集成的开发环境进行组合 Keil软件使用Windows界面提供了功能强大的集成开发和调试工具以及库功能另一方面Keil具有非常高效的代码编译功能其生成的目标代码十分契合项目使用并且大多数语句生成的汇编代码易于理解和紧凑[9]。在大规模软件开发中它可以更好地体现高级语言的优势。 图3.1 Keil_5软件界面 软件开发流程图如图3.2所示。 图3.2 软件开发流程图 3.2 视觉导航软件设计 在本设计中人们可以通过手机或PC控制视觉导航小车因此需要设计出一个视觉导航软件的程序。本设计要实现的是人们可以使用电脑或手机选择不同的按钮来控制小车并实际监视视频机器以建立连接。人们可以在计算机界面上选择不同的按钮并发送适当的命令来控制小车的运行和实时视频监控。该系统的目的是控制计算机上的终端软件。通过使用Visual C 设计软件它具有开发环境可视化的特征。用户可以直接在界面上进行编程这给开发人员带来了很多便利。在PC端可以实现的功能是 1实时监控显示。可以实时显示摄像头采集的图像 2可以对小车进行控制。比如说前进后退左右移动。 本设计中的应用程序设计也是两个部分。一部分是控制界面另一部分是视频界面。在控制界面中人们可以看到小车的不同行驶状态并控制车辆向前向后向左和向右行驶。在视频界面中人们可以看到视频的IP地址和视频显示界面。然后结合这两个界面可以同时在手机上看到这两个界面如图3.3所示。
图3.3 手机界面 视觉导航软件流程设计图如图3.4所示。
图3.4 视觉导航软件设计图 3.3 循迹模块软件设计 若想让小车在规定的轨迹上进行前进后退左转右转应当在软件设计中编程好小车的代码如下图3.5所示循迹模块的流程图如下图3.6所示当按下转接板的按钮时系统开始初始化小车开始在黑色引导线上移动当左循迹模块检测到是白色右循迹模块检测到的也是白色小车继续根据轨迹行驶当左循迹模块检测到是黑色右循迹模块检测到的是白色小车会根据检测到的信号向右行驶当左循迹模块检测到是白色右循迹模块检测到的是黑色小车会根据检测到的信号向左行驶。
图3.5 循迹模块软件设计图
图3.6 循迹模块流程图
4 仿真与调试
4.1 系统硬件调试 在调试的过程中小车循迹出现了在地面上不走的情况于是检查了两路循迹探头的发射和接收有没有焊接好然后调节了上面的电位器增加它的灵敏度这样做了之后还是不好使于是检查了红外发射二极管有没有红外光发出打开手电筒功能对着红外发射二极管看有没有红外光发出发现没有红外光发出找了商家重新更换了循迹探头最后实现了功能。 在调试循迹功能的过程中发现小车在规定的轨道上可以进行移动但是拐弯的时候会跑出轨道检查程序程序没有错误于是把目标转到循迹探头灵敏度原因是灵敏度太强了于是看哪边先出的轨道就把对应的那个循迹探头上面的电位器往顺时针方向调节降低灵敏度最后实现功能。 4.2 系统软件调试 在软件调试过程中点击编译按键若文件在系统中正常运行会在下面的应用窗口上显示提示信息。若显示的提示的信息中有“error”就要根据提示找到错误程序并且进行改正无提示错误信息的图如下4.1所示。
图4.1 无错误信息图 在程序编译无错误之后烧录程序到单片机中开始验证系统功能是否满足要求如果功能有问题需要继续调试程序反复进行直到所有功能都满足为止。 但在实际调试过程中首次对程序进行编译时提示窗口提示错误经过检查发现在程序句中无分号以及少符号。
4.3实物测试 根据本设计需求对实物功能进行逐一测试 1当按钮启动的同时小车可以在平面上进行运动 2小车可以避开障碍物选择一条无碰路径遇见障碍物就停止运动 3小车能够将控制器发出的命令以及采集出来视频与控制器连接 4PC或手机可以清晰显示小车采集到的视频数据以及可以显示各种命令。 所有预设功能均以实现实物展示图如图4.2所示。
图4.2 实物展示图
结论
本设计是以STM32为核心在外围加电机驱动模块循迹模块红外模块超声波模块WIFI模块使其构成一个基于单片机的视觉导航小车。WIFI模块的稳定性以及在手机上的操作灵敏使得这次方案设计达到了最开始的设计期望。 论文首先分析了关于智能车的国内外相关现状其次提出了视觉导航小车的设计方案以及总体思路然后进行了单片机的选型以及对各种传感器进行了简单的介绍和说明。 本设计经过了硬件以及软件的测试各部分均达到预期功能当按钮启动的同时小车可以在平面上进行运动以及随意变速小车可以避开障碍物选择一条无碰路径遇见障碍物就停止运动小车能够将控制器发出的命令以及采集出来视频与控制器连接PC或手机可以清晰显示小车采集到的视频数据以及可以显示各种命令。本设计通过7个模块达到了这些目的并且首次通过自己的努力完成了以上的功能。 在设计出这个视觉导航小车之后各个模块的功能需求很实用并且在WIFI信号稳定正常的情况下手机或者PC端能够实现与小车的实时控制以及视频监测根据这个功能人类可以利用它进不能进入的地方进行勘测。
参考文献
[1]王明顺,沈谋全.传感器与智能车路径识别[J].电子产品世界2007.414-15 [2]孙浩,程磊,黄卫华,程宇.基于HCS12的小车智能控制系统设计[J].单片机与嵌入式系统应用,2007.320-25 [3]齐永利,鲁云峰,刘鸣.LM2907频率/电压转换器原理及应用[J].国外电子元器件,2005.516-19 [4]孙涵,任明武,唐振民,杨静宇.基于机器视觉的智能车辆导航综述[J].公路交通科技,2005.526-30 [5]孙增圻,张再兴.智能控制的理论与技术[J].控制与决策,1996.140-42 [6]何奇文,彭建盛,周东,首家辉,葛姣龙.基于红外反射式传感器智能车系统的设计[J].高师理科学刊,2008.340-47 [7]徐友春,李克强,连小珉,赵玉凡. 智能车辆机器视觉发展近况[J].汽车工程,2003.515-16 [8]马雷,王荣本,赵东标.智能车辆导航控制器参数选取与鲁棒性分析[J].机械科学与技术,2005.216-17 [9]杨敬辉,洪炳镕,朴松昊.基于遗传模糊算法的机器人局部避障规划[J].哈尔滨工业大学学报,2004.723-24 [10]周浦城,洪炳镕,杨敬辉.基于混沌遗传算法的移动机器人路径规划方法[J].哈尔滨工业大学学报,2004.77-9 [11]任明伟.基于ARM的嵌入式视频采集与远程传输系统的设计与实现[D].河北大学,2011 [12]周柱.基于STM32的智能小车研究[D].西南交通大学2011 [13]孙淑云.轮式足球机器人运动控制算法研究与实现[D].成都理工大学,2009 [14]夏明.基于Linux的嵌入式监控系统软件平台研究与设计[D].南京理工大学,2007 [15]祝海.TCP/IP协议在嵌入式系统中的设计与实现[D].电子科技大学,2007 [16]刘晨,崔斌.基于单片机的智能循迹小车设计 [J].河南工学院,2019.326-30 [17]孙育人. 基于Android的智能避障小车系统的设计与实现[J].宝鸡文理学院计算机学院,2019.1040-42 [18]谷明信,焦志勇,王伟,侯佳男,蒋炜彤.多功能导航智能小车设计[J].重庆文理学院机电工程学院,2017.623-24 [19]钟文军,鲁植雄,刁秀永,黄相.基于PID的电子节气门实验平台的研究[J].南京农业大学工学院,2014.710-11 [20]魏雅.基于蓝牙控制的循迹智能小车的设计与研究[J].陕西工业职业技术学院,2016.0426-28
附录程序主函数 #include “stm32f10x.h” #include “delay.h” #include “motor.h” #include “keysacn.h” #include “IRSEARCH.h” #include “IRAvoid.h” #include “remote.h”
#define KEYMODE_1 1 // 定义模式1 #define KEYMODE_2 2 // 定义模式2 #define KEYMODE_3 3 // 定义模式3 uint8_t keyMode; //指无符号8Bit整形数
void IR_IN() //红外遥控子程序 { u8 key; // ZYSTM32_brake(10); keyRemote_Scan(); switch(key) { case 98:ZYSTM32_run(20,100);break; case 2:ZYSTM32_brake(100);break; case 194:ZYSTM32_Left(20,100);break; case 34:ZYSTM32_Right(20,100);break; case 224:ZYSTM32_Spin_Left(20,100);break; case 168:ZYSTM32_back(20,100);break; case 144:ZYSTM32_Spin_Right(20,100);break; } }
void KeyScanTask(void)//按键子程序 { static u8 keypre 0;//按键被按下时置1
if((keypre 0) (KEY))
{keypre 1; //置1避免持续按下按键时再次进入此函数。switch(keyMode){case KEYMODE_1:keyMode KEYMODE_2; break;case KEYMODE_2:keyMode KEYMODE_3; break;case KEYMODE_3:keyMode KEYMODE_1; break;default: break;}
}
if(!KEY) //按键被放开
{keypre 0;//置0允许再次切换LED模式
}}
//任务循迹、避障、遥控模式处理 void LEDTask() { switch(keyMode) { case KEYMODE_1: LED_D4_SET; LED_D3_RESET; SearchRun(); break; case KEYMODE_2: LED_D4_RESET; LED_D3_SET; AVoidRun(); break; case KEYMODE_3: LED_D4_SET; LED_D3_SET; IR_IN(); break; default: break; } }
// int val; // valKEY; //读取按键 // while(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2))//当按键没有被按下时一直循环 // { // valKEY;//词句可省略可让循环跑空 // } // while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2))//当按键被按下时 // { // delay_ms(10); //延时10ms // valKEY;//读取数字端口PC2口电平值赋给Val // if(val1) //第二次判断按键是否被按下 // { // BEEP_SET; //蜂鸣器响 // while(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)) //判断按时是否被松开 // BEEP_RESET; //蜂鸣器停止 // } // else // BEEP_RESET;//蜂鸣器停止 // } //}
int main(void) { delay_init(); KEY_Init(); IRSearchInit(); IRAvoidInit(); TIM4_PWM_Init(7199,0); //初始化PWM Remote_Init(); //红外接收初始化 ZYSTM32_brake(500); // keysacn(); keyMode KEYMODE_1; while(1) {
KeyScanTask(); LEDTask(); }}
致 谢
随着时间一点一滴的流逝四年读书生活在6月即将划下一个句号而我的人生却只是一个逗号我即将又一次征程。虽然这届毕业生是充满遗憾的没有毕业照没有毕业典礼但是对未来都是很充满憧憬的。在这次设计中感谢我的同学们对我的帮助也感谢培养我长大含辛茹苦的父母他们在无言中对我很多的帮助。 在这次毕业设计中忙忙碌碌用心设计倾注了很多经历感谢胡海龙老师和于宏波老师的耐心点拨感谢在校四年期间各位授课老师的教导。在制作该项目时出现很多问题自己用了各种办法都无法解决后来在老师的帮助下解决了在制作设计遇到的各种难题。在当我项目出现各种问题的时候是胡海龙老师在自己空闲的时间给我指导解决我各种问题。除了在专业知识胡海龙老师也教会了我如何去面对生活中的难题。 感谢智能工程学院对我四年以来的栽培让我在校四年见学习到了和自动化专业有关的很多知识并且培养了我个人独立思想独立设计的能力这都是我完成本次毕业设计关键的点如果没有学院的栽培我是无法完成本次毕业设计的。 感谢学校对我的培养让我时时刻刻深知我们学校的校训我行我能在我毕业设计的过程中每次遇到困难就会想到本校校训让我充满自信坚持完成毕业设计。学生深知作为一名深职学子的荣誉使命和责任感谢学校让我能有这份能力去面对未来职业生涯的挑战