【vfp开源代码栏目提醒】:网学会员在vfp开源代码频道为大家收集整理了“基于ARM10与LINUX智能小车系统的设计 - 毕业设计“提供大家参考,希望对大家有所帮助!
基于 ARM 的智能小车系统的设计 摘 要 基于 ARM 的嵌入式系统其性能优良,移植性好,已广泛应用在各个行业,因此将 ARM 微处理器应用于智能小车的控制系统是一种较好的选择。
基于此,我们设计了一种基于 ARM10 与 Linux 控制的智能循迹小车,通过编程使它沿着我们提前铺好的黑色胶带前进,十字路口停下通过摄像头驱动拍照使用 WIFI 传输后继续前进。
这种基于 ARM 10 的智能型设计将运用于很广阔的地方。
根据 Linux 嵌入式开发平台的需要,配置相应的开发工具、合理剪裁 Linux内核、选择合适的 Bootloader 和根文件系统,最后把它们移植到 ARM10 开发平台上,搭建好开发环境。
接着研究了 Linux 环境下的设备驱动程序,深入了解设备模型和设备驱动程序开发框架以及并发、内存、中断机制,从而更好的实现其功能。
本次我们设计制作了一款具有智能判断功能的小车,功能强大。
小车具有以下几个功能:循迹功能;自动拍照功能。
作品可以作为高级智能玩具,也可以作为嵌入式控制的强有力的应用实例。
【关键词】 ARM10 Linux 智能小车 自动拍照 循迹 目录基于 ARM 的智能小车系统的设计 1摘 要 1目录 2第一章 引言4 1.1 背景介绍 4 1.2 可行性分析 5第二章 需求分析 6 2.1 硬件需求 6 2.2 软件需求 7第三章硬件分析与设计8 3.1 硬件分析 8 3.1.2 电路板模块9 3.1.3 传感器模块10 3.1.4 转接板模块12 3.2 硬件设计 13 3.2.1 总体设计 13 3.2.2 驱动电路 14 3.2.3 信号检测模块15 3.2.4 主控电路 16第四章 软件分析与设计16 4.1 驱动程序设计16 4.1.1USB 驱动16 4.1.2 CMMERA 驱动 18 4.1.3WIFI 驱动19 4.2 软件详细设计20 4.2.1 循迹模块 21 4.2.2 服务器端模块22 4.2.3 拍照模块 24 4.2.4 传输模块 24 4.3 客户端模块 25 4.3.1 接收模块 25 4.3.2 处理模块 26 4.3.3 显示模块 27第五章 项目实施 27 5.1 环境的搭建 27 5.1.1 Bootlader27 5.1.2 网络环境 28 5.1.3 根文件系统的编译与烧录29 5.1.4 内核的编译与烧录 29 5.2
代码的测试 30 5.2.1 白盒测试 30 5.2.2 黑盒测试 32 5.2.3 性能测试 32 5.3 单位系统测试33第六章 总结34参考文献 35致谢 36 第一章 引言 随着现代化工业的发展, “PC运动控制器” 自动化控制出现了许多新的要求。
是目前开放式数年控系统中最常见的形式。
主 PC 用于人机界面、存贮和通讯,DSP 或 A-SIC 作从属 CPU 来实现实时控制、I/O 中断和计算等。
而嵌入式技术依靠其体积小、成本低、功能强、可裁剪等特点,适应了工业自动化发展的最新要求。
单片机作为控制系统的微处理器,在数据处理和
代码存储等方面都已经无法满足系统的需求,ARM 微处理器资源丰富,具有良好的通用性,其主要优点是高性能、低价格、低功耗。
ARM 本身是 32 位微处理器,但却集成了 16 位的处理器如 51 系列单片机使用,同时具有 32 位处理器的速度。
基于 ARM 的嵌入式系统其性能优良,移植性好,已广泛应用在各个行业,因此将 ARM 微处理器应用于智能小车的控制系统是一种较好的选择。
基于此,我们做一种基于 ARM 控制的智能小车,提高了对直流电机的控制效率,在 ARM 上移植了 LINUX 操作系统,设计出了友好的人机界面,使开发过程式变得容易。
并对控制系统进行模块化设计,有利于智能小车的功能扩展和升级。
我们根据 ARM 和 LINUX 来完成智能小车控制设计。
其具体内容如下:第一章从技术、
经济、社会价值、盈亏方面分析了智能小车的可行性。
第二章介绍需求分析。
第三章,硬件设计。
在硬件设计中分别又介绍了 ARM10 处理器的相关知识,光电传感器,电路板(有关电源处理方面),转接板,还有硬件的实现。
第四章对软件的
设计的介绍,其中又包括三个模块:循迹模块、驱动板模块、传感器模块。
第五章是对程序的测试。
第六章就是项目的实施过程了,通过对环境的搭建、
代码的测试、系统测试等方面,把整个项目最终实施出来。
文中使用的硬件板式基于 ARM10 的硬件模块,还有使用到了 PWM、UART、看门口电路、直流电机等相关内容。
LINUX 应用到了客服端/服务端的显示模块,还有图像传输、图像查看等相关内了。
1.1 背景介绍 自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。
近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。
人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。
随着科学技术的发展,机器人的感觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。
视觉的典型应用领域为自主式智能
导航系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些结构化环境简单的目标。
视觉传感器的核心器件是摄像管或 CCD,目前的 CCD 已能做到自动聚焦。
但 CCD 传感器的价格、体积和使用方式上并不占优势,因此在不要求清晰图像只需要粗略感觉的系统中考虑使用接近觉传感器是一种实用有效的方法。
机器人要实现自动导引功能就必须要感知导引线,感知导引线相当给机器人一个视觉功能。
使用传感器感知路线并作出相应的执行动作。
该智能小车可以作为机器人的典型代表。
整个电路系统分为检测、控制、驱动三个模块。
首先利用光电对管对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。
1.2 可行性分析 现智能小车发展很快,从智能玩具到其它各行业都有实质成果。
其基本可实现循迹、避障、检测贴片、寻光入库等基本功能,这几节的电子设计大赛智能小车又在向声控系统发展。
但是 现今对智能车辆的结构、运动特性、智能控制策略的研究并不完善 因此有必要对智能车辆的仿真版本—智能小车做更深驱动、人工智能、驱动电源的设计等诸多领域。
单片机作为控制系统的微处理器,在数据处理和
代码存储等方面都已经无法满足系统的需求,ARM 微处理器资源丰富,具有良好的通用性,其主要优点是高性能、低价格、低功耗。
ARM 10 本身是32位微处理器,但却集成了16位的Thumb指令集,这使得ARM 10可以代替16 位的处理器如51系列单片机使用, 同时具有32位处理器的速度。
目前有多种嵌入式操作系统,它们使得开发实时应用程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能,把应用程序分割为若干独立运行的模块,使得程序的设计变得简化许多;对于实时性要求高的应用做到了快速响应和可靠处理;使得整个系统的资源得到很好的管理和应用。
常见的嵌入式操作系统有:Vxworks、WindowsCE、Palm OS、QNX、μC/OS、嵌入式Linux。
Linux的开放源
代码,内核小、功能强大、系统健壮、效率高、易于裁减。
可以支持数十种CPU芯片。
嵌入式Linux就是指对Linux经过小型化裁减后,能够固化在容量只有几百K字节或几兆字节的储存器芯片中,用于特定嵌入式场合的专用Linux操作系统。
Linux可应用于多种硬件平台。
Linux己经被移植到多种硬件平台,这对受开销、时间限制的研究与开发项目是很有吸引力的。
可以在标准平台上开发然后移植到具体的硬件上,加快了
软件与硬件的开发过程;可以随意的配置,不需要任何的许可证或商家的合作关系。
唯一的限制是开发者必须做出对Linux社区有益的改动;它是
免费的,源
代码可以得到,这是最吸引人的。
毫无疑问,这会节省大量的开发费用;优秀的网络支持,微内核直接提供网络支持,而不必像其他操作
系统要外挂TCP/IP协议包;Linux高度模块化使添加部件非常容易;Linux在台式机上的成功,也保证了Linux在嵌入式系统中的辉煌前景。
基于Linux的嵌入式操作系统常见的有ARMLinux、RTLinux和μCLinux等。
本设计中选择ARMLinux作为操作系统。
第二章 需求分析2.1 硬件需求 ARM处理器是一种低功耗高性能的32位RISC处理器。
ARM处理器共有31个32位寄存器,而其中16个可以在任何模式下看到。
它的指令为简单的加载与存储指令。
ARM一个特点是它所有的指令都带有条件。
另一个特征是可以在加载数值的同时进行算术和移位操作。
它可以在几种模式下操作,包括通过使用SWI指令从用户模式进入到系统模式。
ARM处理器是一个综合体,允许将其处理器通过协处理器接口进行紧耦合;它还包括几种内存管理单元的变种,包括简单的内存保护到复杂的页面层次。
根据智能小车系统的设计需求,我选用了以ARM10处理器为核心的电路板。
所接电源是9.6V,系统内部却只需要5V电源,因此引入了降低电压的模块,这样一来避免小车会被烧坏,同时在设计过程中需要实现小车的循迹功能,因此我们又采用了光电传感器作为探测小车行驶的路径,可下载循迹的程序到串口上,让小车自主的去探测检索路径,从而能准确稳当的行驶。
而且为了更好的将ARM10与小车的各部件连接起来,因此设计了电路板,辅助主控芯片更好的完成需求。
在前期的调试中还用到了串口,数据传输和接收都要用串口,所以串口也是必不可少的工具之一。
为了能更好的实现小车的功能,我们还采用了H—JTAG工具。
同时要想使小车行驶必不可少的还有电源和摄像头等相关硬件。
本设计采用的是ARM10微处理器,这系列的主要特点如下:支持DSP指令集,适合于需要高速数字信号处理的场合;6级流水线,指令执行效率更高;支持32位ARM指令集和16位Thumb指令集;支持32位的高速AMBA总线接口;支持
VFP10浮点处理协处理器;全性能的MMU,支持众多主流嵌入式操作系统;支持数据Chche和指令Chche,具有更高的处理能力;主频最高可达400MHz;内嵌并行读/学操作部件。
ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。
2.2 软件需求 Linux操作系统是一种自由和开放
代码的类Unix操作系统,并且Linux继承了Unix操作系统结构清晰的特点,在
linux下的文件结构非常有条理,Linux支持多种语言,因此我们选择Linux作为小车的软件操作系统 型号为Redhat Linux因为Redhat是全球最大的
开源技术厂家,其产品Red Hat Linux也是全世界应用最广泛的Linux。
由于小车的行驶需要特定的环境,则要为小车搭建一个运行环境,所以要用到Bootloader在调试的过程中还需要用到Qt编程工具。
Linux的核心是由Linus Torvalds在1991年开发出来,并放到网络上供大家下载
学习使用。
开放源
代码,内核小、功能强大、系统健壮、效率高、易于裁减。
可以支持数十种CPU芯片。
嵌入式Linux就是指对Linux经过小型化裁减后,能够固化在容量只有几百K字节或几兆字节的储存器芯片中,用于特定嵌入式场合的专用Linux操作系统。
Linux操作系统的特点 1)开放性:指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。
2)多用户:是指系统资源可以被不同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。
3)多任务:它是指计算机同时执行多个程序,而且各个程序的运行互相独立。
良好的用户界面 :Linux向用户提供了两种界面:用户界面和系统调用。
Linux还为用户提供了图形用户界面。
它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。
4)设备独立性:是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动
程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。
Linux是具有设备独立性的操作系统,它的内核具有高度适应能力 5)提供了丰富的
网络功能:完善的内置网络是Linux一大特点。
6)可靠的安全系统:Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。
7)良好的可移植性:是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。
Linux是一种可移植的操作系统,能够在从微型
计算机到大型计算机的任何环境中和任何平台上运行。
在Linux这样的优势下,我们还需要用到ADS和AXD调试工具,让循迹还有转弯等与硬件相关的程序能够调试后正常运行。
第三章硬件分析与设计3.1 硬件分析3.1.1 ARM10 处理器 1. ARM10处理器介绍 ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。
图 3.1 微处理器实图 2.ARM10E系列微处理器的主要特点如下: 1). 支持DSP指令集,适合于需要高速数字信号处理的场合。
2). 6级流水线,指令执行效率更高。
3). 支持32位ARM指令集和16位Thumb指令集。
4). 支持32位的高速AMBA总线接口。
5). 支持
VFP10浮点处理协处理器。
6). 全性能的MMU,支持众多主流嵌入式操作系统。
7). 支持数据Chche和指令Chche,具有更高的处理能力。
8). 主频最高可达400MHz。
9). 内嵌并行读/学操作部件。
3.1.2 电路板模块 1. 电池的选择 文本选用的用于速度控制的直流电池的型号为SN Ni-MH,容量为2500mAh,电压为1.2V,一共是八节电池。
而我们小车的电压只用到5V,因此,我们必须采用降压控制使9.6V的电压转换成5V电压。
电路原理如下图所示: 图3.2 电池电源模块 图 3.3 开关电源模块 智能小车前行的过程中受到电池电压降低、电磁场、轮胎磨擦、转向轮转向阻力等不定因素的干扰 开环控制无法满足性能要求 因此闭环控制是必须的。
实施闭环控制须对速度进行实时探测。
3.1.3 传感器模块 1. 红外传感器 我们所使用的红外传感器这电子市场中直接购买的集成产品,其将红外发射管和接收管集于自身,白色为发射管,黑色为接收管。
发射管不断地向外发射红外线,接收管同样一直处于接收状态,当有红外光线被反射进入接收管时,传感器将输出为低电平,否则输出为高。
不同颜色对红外光线有不同的发射率,白色的很高,而黑色的很低,当照射至白色路面时,大部分光线被反射由接收管接收,传感器输出低电平,当照射至黑色路面时,大部分光线被吸收接收管接收不到足够的光线而输出高电平。
3个传感器同时向MCU传送3个数字信号,MCU通过判断高低电平的位置从而判断出黑线相对于车身的信置,根据程序算法做出相应的反应。
该传感器在5V电源下工作,正常检测照射前方距离为2-5CM。
其背部有可调电阻,可通过旋转可调电阻调节传感器的感应距离以及灵敏度。
通过调整将3只传感器性能基本一致,并符合感应距离以及灵敏度的要求,保证路径检测的稳定性。
在传感器底部有三个接口,分别是电源线()、地线(—)、信号线(0)。
如图所示。
电源线和地线接受提供的5V电源,信号线则直接与MCU的I/O端口。
注意,要使传感器的信号线输出稳定的高电平,需要接入上拉电阻。
若MCU的I/O端口本身带有上拉功能时,可以不接入上拉电阻,但要通过软件开启端口的上拉功能。
我们设计的智能小车采用的路径识别
方案为光电传感器,其电源供给以及信号传输由两根排线与MCU相连接。
三个传感器以相等间距组装在小车的前方,承接安装传感器的底板是整块的PCB板,PCB板的后面由两个螺丝与小车相连,前方为拱形,两边和中间都有防撞调设备保护。
图 3.4 红外传感器实物图 图 3.4 红外传感器(PCB) 图 3.5 循迹原理图3.1.4 转接板模块 此模块主要用于主控制模块(ARM10的芯片)和小车之间数据收发的一个桥梁,帮助小车更好的实现所需功能。
图 3.6 转接板(PCB) 图 3.7 转接板实物图 图3.7为转接板的样图,可以清楚的看到转接板上的串口等。
将转接板上的两排10针引脚分别接到电机驱动和传感器的10针引脚上,接上电源和小车电机,然后将核心板的电源焊接好(注意:3脚为正极,另一端为负极)后,将另一端接到转接板的排阵上,接上核心板上的USB接口。
3.2 硬件设计3.2.1 总体设计 智能小车采用前轮驱动,前轮左右两边各用一个电机驱动,调制前面两个轮子的转速起停从而达到控制转向的目的,后轮是万象轮,起支撑的作用。
将循迹光电对管分别装在车体下的左右。
当车身下左边的传感器检测到黑线时,主控芯片控制左轮电机停止,车向左修正,当车身下右边传感器检测到黑线时,主控芯片控制右轮电机停止,车向右修正。
避障的原理和循迹一样,在车身右边装一个光电对管,当其检测到障碍物时,主控芯片给出信号报警并控制车子倒退转向,从而避开障碍物。
循迹红外对管 红外对管 复位电路 ARM10 报警电路 时钟电路 电机驱动 图 3.8 主板设计框图3.2.2 驱动电路 电机驱动一般采用H桥式驱动电路,L298N内部集成了H桥式驱动电路,从而可以采用L298N电路来驱动电机。
通过单片机给予L298N电路PWM信号来控制小车的速度,起停。
其引脚图如3.9,驱动原理图如图3.10。
图 3.9 L298N 引脚图 图 3.10 电机驱动电路3.2.3 信号检测模块 小车循迹原理是小车在画有黑线的白纸“路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”—黑线。
笔者在该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。
红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。
在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号,再通过LM324作比较器来采集高低电平,从而实现信号的检测。
避障亦是此原理。
市面上有很多红外传感器,在这里我选用TCRT5000型光电对管。
图 3.11 循迹原理图3.2.4 主控电路 本模块主要是对采集信号进行分析,同时给出PWM波控制电机速度,起停。
以及再检测到障碍报警等作用。
图 3.2.5 主控电路 图 3.12 主控电路图(PCB) 第四章 软件分析与设计4.1 驱动程序设计4.1.1USB 驱动 USB接口是一个主—从方式、多设备连接的树状网络结构,USB主机必须具有对所有连接在总线上的不同类型USB设备进行管理的功能。
Linux USB主机驱动程序可以同时支持多路USB总线功能,每路USB总线独立
工作。
每条总线上只有一个主机控制器,负责协调主机和设备间的通信,而设备不能主支向主机发送任何消息。
四川托普信息技术职业学院毕业生论文 图 4.1 USB support 配置界面 从主机侧的观念去看,在Linux驱动中,USB驱动处于最底层的是USB主机控制器硬件,在其之上运行的是USB主机控制器驱动,主机控制器之上为USB核心层,再上层为USB设备驱动层。
因此,在主机侧的层次结构中,要实现的USB驱动包括两类:USB主机控制器驱动和USB设备驱动,前者控制插入其中的USB设备,后者控制USB设备如何与主机
通信。
Linux内核USB驱动管理和协议处理的主要工作。
主机控制器驱动和设备驱动之间的USB核心非常,其功能包括:通过定义一些数据结构、宏和功能函数,向上为设备驱动提供编程接口,向下为USB主机控制器驱动提供编程接口:通过全局变量维护整个系统的USB办公设备上;完成设备热插拔控制、总线数据传输控制等。
17 四川托普信息技术职业学院
毕业生论文 图 4.2 USB 配置界面 Linux内核中USB设备侧驱动程序分为3个层次,UDC驱动程序、Gadget API和Gadget驱动程序,UDC驱动程序直接访问硬件,控制UAB设备和主机间的底去通信,向上层提供与硬件相关操作的回调函数当前Gadget API是UDC驱动程序回调函数的简单包装,Gad.