资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。
第 43 卷 年第 8 期
yanz
检测时间: -05-29 10:03:44
基于Android/Arduino平台的智能引路系统的设计和实现
摘要
在技术不断发展的今天, Android操作系统不但开发利用, Arduino平台也日益完善, 将两者实现有限结合, 搭建智能移动平台能够运用到很多范畴, 改进我们的生活质量, 给人们带来便利。
本文经过分析人们在智能引路系统的实际需求后, 对相应技术进行研究讨论, 最终选定Arduino和Android两大平台为本设计的技术支撑, 在此基础上经过蓝牙实现两者的信息传递与互联, 设计出一套智能引路系统。系统设计主要包括总体设计, Arduino设计和Android平台软件设计, 软件基于Java程序语言进行编写, 最后经过测试验证了系统设计的有限性与实用性。该系统在一整套软硬件的协同作用下能够实现智能引路行车, 包括转向、 测距、 方面探测等等智能功能, 极大的方便了人们的日常行车活动。
关键字: Android/Arduino平台; 智能引路系统; 设计与实现
Abstract
在技术不断发展的今天, Android操作系统不但开发利用, Arduino平台也日益完善, 将两者实现有限结合, 搭建智能移动平台能够应用到很多领域, 改进人们的生活质量, 方便给人们提供便利。
In technology development today, Android operating system is not only the development and utilization, the Arduino platform also increasingly perfect, between the two combined with limited, to build the platform of intelligent mobile can be applied to many fields, improve the people's quality of life, to provide people with convenient convenience.
本文经过分析人们在智能引路系统的实际需求后, 对相关设计技术进行研究分析, 最后选定Arduino和Android平台为本设计的技术支持, 在此基础上经过蓝牙实现两者的信息传递与互联, 设计出一套智能引路系统。系统设计主要包括总体设计, Arduino设计和Android平台软件设计, 软件基于Java程序语言进行编写, 最后经过测试验证了系统设计的有限性与实用性。该系统在一整套软硬件的协同作用下能够实现智能引路行车, 包括转向、 测距、 方面探测等等智能功能, 极大的方便了人们的日常行车活动。
Through the analysis of people after the actual demand of the intelligent guide system, the design technique of the paper has finally selected Arduino and Android platform technology for the design of the support, on this basis via Bluetooth implementation of both the information transfer and interconnection, design a set of intelligent guide system. The system design mainly includes the overall design, the Arduino design and the Android platform software design, the software is based on the Java programming language to carry on the compilation, finally through the test verified the system design the limitation and the practicality. The system in a set of hardware and software design of synergistic effect can be achieved under the driving of intelligent guide, including steering, ranging and detecting and intelligent functions, greatly facilitate the people's daily traffic activity.
关键字: Android/Arduino平台; 智能引路系统; 设计与实现
Keywords:Android/Arduino; intelligent guide system; design and Implementation
目录
摘要 PAGEREF _Toc27365 1
Abstract 2
目录 3
1.绪论 5
1.1本设计的研究背景及意义 5
1.1.1无线通信技术发展 5
1.1.2硬件平台简介 6
1.1.3手机操作系统介绍 7
1.1.4研究意义 9
1.2研究内容与安排 10
2.总体设计与相关技术 11
2.1总体设计方案 11
2.2.1总体设计框架 11
2.1.2 系统的功能及管理 12
2.2 相关技术 13
2.2.1 Arduino平台 13
2.2.2 Android平台概述 16
2.2.3蓝牙技术 19
3. 硬件系统选型与设计 19
3.1蓝牙串口模块 20
3.2指南针I2C总线连接 21
3.2.1指南针芯片 21
3.2.2指南针与Arduino的I2C通信 23
3.3 H桥控制马达 24
3.4超声波测距模块 26
3.5 电源模块 27
4. Arduino与Android平台控制应用软件实现 27
4.1 Arduino控制程序设计 28
4.1.1小车超声测距和避障的程序 28
4.1.2小车和手机通讯协议 29
4.2 Android平台控制应用软件设计 31
4.2.1界面设计 31
4.2.2 蓝牙控制 32
4.2.3地图控制系统实现 34
5. 智能引路系统测试 38
5.1小车调试的结果和结论 38
5.2应用处理软件实现结果 40
6. 小结 44
参考文献 45
1.绪论
1.1本设计的研究背景及意义
1.1.1无线通信技术发展
随着通信技术的发展, 无论是在物联网, 还是互联网, 传统的有线传输技术已经越来越不能满足企业和个人的需要。当今通信技术正朝着”无线”和”高速”的方向发展。无线传输以其特有的优势得到了个人和企业的青睐。
在移动终端中, 无线传输技术主要包括:
(1)WiFi
WiFi全称Wireless Fidelity, 是一种无线局域高保真网络传输技术, 它能提供高质量的无线局域网(WLAN)服务, 所有基于IEEE 802.11标准并经过WiFi组织测试的无线局域网均称为WiFi。在历经IEEE 802.11 a/b/g传输协议的发展后, IEEE 802.11 n对物理层进行了优化, 使得吞吐量从54Mbps提高到300-600Mbps支持WiFi技术的设备之间能够直接通信, 也能够在访问点或基站的协调下进行通信。大多数情况是为设备提供一个接入点(热点), 经过该接入点, 个人电脑以及移动终端设备等均可无线接入互联网, 并保证高带宽的网络数据交换。一个WiFi热点的覆盖范围室内最低35米, 室外能达到100米以上, 其信号强度会受到建筑物的影响。如果想进一步扩大覆盖范围需要增添接入点。由于WiFi的接入不需要物理连接, 因此其安全性较低[1]。
(2)蓝牙
蓝牙(Bluetooth)是一种需要设备相互靠近以进行数据交换的短距离无线传输技术, 广泛用于手持设备、 电脑, 甚至音响、 打印机、 手表等小型设备,其优势在于低成本、 低功耗、 小型化等; 由于其需要匹配特定对象的特点, 相对于WiFi,蓝牙更多用于私人设备之间的语音数据传输, 属于个人局域网(WPAN) , 安全性要高于WiFi, 蓝牙协议遵从IEEE 802.1 5.1, 其功耗远低于802.11设备, 支持单点对单点, 单点对多点的传输, 一般传输距离为10米, 有信号加强装置最远可达50米, 其实际的传输距离依赖于环境, 在范围边界其传输性能会下降[3]。
经过二者的比较, 结合本设计的特点:机实时双工通信, 蓝牙的低成本、 低消耗特应用场景为室外近身使用, 需要和手点使其成为最好的选择。
表2-1对两种类型的无线通信进行了对比。
1.1.2硬件平台简介
硬件平台需要有微处理器, 能进行简单的计算, 能够重复编程、 可接受外部指令并执行, 更重要的是要有多个接口易于扩展; Arduino开发板是一个基于开放源代码的Simple I/O软硬件平台, 以廉价的微型处理器为核心, 支持多种扩展接口, 能够重复编程非常适来承担本设计的硬件平台; Arduino中文称阿德伟诺, 名称源于一个意大利古代国王之名, Arduino硬件平台是一块基于单片机的微控制器, 用户能够经过其USB串行接口对其进行编程, 广泛用于机器人、 可穿戴设备等; 其特点是:具备I/O功能, 支持直流电源和USB端口供电, 可扩展外接红外探测, 蓝牙、 WiFi设备, 马达驱动, LED显示, 温度探测等模块; 其蓝牙、 WiFi的可扩展性为其与手机进行无线通信提供了可能[2]。
Arduino现有多个版本, 每个版本侧重点不同。Arduino Duemilanove, ArduinoMini, Arduino Mega2560, LiliPad Arduino, Arduino uno等, 以及最新的ArduinoYun。其中Duemilanove是基本款, 后续许多产品都是在该产品的基础上设计生产的; Arduino Yun是最新高端产品, 它不但延续了Arduino架构而且增加了Linux系统, 是系列产品中首个集成WiFi模块的成员, 能够经过WiFi无线操作Linux模块, 但价格比较昂贵[2]。Arduino uno是USB接口, 采用ATmega 16U2芯片进行USB转串口, 先前的版本需要用FTDI USB转串口驱动串行通信; 它能够控制电机和其它小型物理设备, 批量读取传感器和开关信号, 非常适合做实时互动通信; 经过对比Arduino现有的几个版本, 本设计最终选择了Arduino uno, 完全满足本设计需要; 在未来, 英特尔将为Arduino开源项目提供Galileo x86芯片, 德州仪器将为其提供ARM芯片, 因此Arduino硬件平台将向多系统架构发展, 前景十分好[4]。
1.1.3手机操作系统介绍
除了Android平台外, 当前的主流智能手机平台还有苹果公司的i0 S操作系统和微软公司的Windows Phone平台, 三类手机平台均支持与Arduino的互联, 现对这三个系统做一比较[5]。
( 1) iOS( iPhone OS)系统
Apple iOS是苹果公司为iPhone开发的手持设备操作系统, 最早于 公布, 其后续产品链iPod touch, iPad均采用了这一系统, 9月苹果发布了最新一版iOS 7操作系统, 使其手机市场份额迅速提升到12 070(截至 10月), 成为中国市场份额第三, iOS系统最大的优势在于它是一个生态系统, 用户能够在苹果的各款产品之间同步自己的数据和信息, 这点对于如今多电子平台的操作十分重要, 另外苹果App商店提供大量高质量的APP, 基于iOS系统的APP开发简单, 但开发人员若想发布其自行开发的软件则需要付费加入iPhone开发者计划, 获得苹果公司的批准, iOS系统最大的缺点在于软硬件系统的封闭性, 采用该系统的公司只有苹果一家, 产品价格都偏高, 使得用户群并不那么广泛, 严重制约了其在低端市场的发展, iPhone和Arduino之间能够采用两种通信方式:一种是有线连接, 一种是经过蓝牙或WiFi的无线连接[16]。
( 2 ) Windows Phone ( WP)系统
Windows Phone是 10月由微软公布的便携智能设备的操作系统, 取代之前的Windows Mobile, 并于 与前世界手机巨头诺基亚合作, 代替诺基亚之前的操作系统Symbian, 虽然发布时间不长, 但其新颖的界面和强大的功能吸引了众多用户和开发者, WP最新版本为Windows Phone8 , WP8将其应用与微软服务Windows8进行同步适配, 形成良性生态圈, 拥有WP就意味着拥有微软公司的系列办公软件和邮件管理系统, 这对商务人士是极大的方便, WP虽起步较晚, 但无疑有较大的特色和优势,wP8最大的优点是其流畅度和稳定性, 两种性能都强于Android和iOS, 但由于其面世时间较短系统还不完整, 还需要进一步改进系统, 比如批量选择、 截屏功能、 重力感应锁定等, 其单工作业或伪后台作业也显示了系统的不足, WP8平台开发语言是C++, 入门简单, 开发者能够方便的开发出各种应用程序, 但由于上市时间较晚, 加之有部分未开放的API使得应用软件数量非常有限, 机型数量也较少。随着三星、 HTC、 诺基亚、 联想等OEM厂商的加入, 再加上微软公司雄厚的开发实力, 其前景还是非常好的, WP7不支持与外界硬件通信, 经过改进后WP8能够与Arduino经过蓝牙进行通信[16]。
( 3 ) Android系统
Google公司于 公布了开放源码的操作系统Android, 是由开放手机联盟(OHA)支持的基于Linux的系统, 主要使用于便携手持设备, OHA获得了软件、 硬件和通信行业公司的支持, 共同致力为手持设备建立开放、 先进的标准, Android平台的特点在于, 第一, 系统的开放性, 开放迎来了更多的竞争和生命力, 因此它有了近乎无限的扩展性, Android的开发门坎低开发周期短, 用户群很大, 并有大量的第三方开发者为Android开发应用程序; 第二, 定制化强, Android操作系统是基于Linux内核的, 对硬件兼容性强, Andro id开发语言是Java和C++,其底层代码可见, 因此众多手机厂商经过在其开源架构的基础上构建自己的框架, 实现个性化UI定制, 做自己的系统并进行深度优化, 满足其各自需要硬件软件两头做的需求, Android系统安装在不同硬件上, 有高端到低端不同档次, 这正满足了用户的多样化; 第三, Andro id系统也存在一些问题, 市面上众多的机型给消费者带来了更多选择的同时, 使得有些应用在不同厂商机型下会有不兼容的情况, 另外其版本升级较快, 相互之间的兼容性不强, 给用户使用带来不便[6]。
9月, Google发布了最新一版的Android4.4 KitKat, 对RAM进行了优化, 也进一步优化了系统在低配硬件上的运行效果, 使得系统能够在一些老款手机上流畅运行, 也能更好的在智能穿戴设备上运行。4.4版本还更新了蓝牙配置文件, 可支持的设备更多, 另外优化了很多软件, 更大程度地方便用户、 符合用户的习惯, 基于Android系统的开放性、 用户群体广泛、 软件开发周期短等特点, 加上Android与Arduino兼容性较强, 笔者最终选择了Android终端[9]。
1.1.4研究意义
当前海内的智能引路系统还正在发展时期, 在步行引路系统的研究与实践中, 中国曾经试行过盲人智能导航系统, 可是由于系统在实际投入中所需要的资金、 人力较大, 同时所涉及的改造安装配合场所范围大, 未能在实现广泛的应用。另外, Google公司设计的自动驾驶汽车利用了雷达、 红外扫描、 GPS等等高新技术支持, 能够极大的方便满人的汽车驾驶, 可是由于国内路况复杂, 车辆较多, 同时智能引路系统的应用还需要更多方面的配合, 例如前期还需要智能交通系统的设计与建设, 相关交通法律法规的出台与完善。由于种种实际应用的困难, 该技术也未能正式投入使用中来。国内的智能引路系统的发展与实际应用存在着许多方面的难点与困难, 要实现自动驾驶汽车的投入使用还有很长的研究开发与实践之路要走。
在信息技术如此发达的今天, 高科技给人们的生活带来了巨大的便利, 例如现在手机地图导航软件已经成为日常人们的出行的重要工具, 可是对于残障人士等弱势群体而言, 却无法享受这些应用带来的便利, 因此对现有的导航软件进行再研究再开发, 使得残障人士也能够进行使用是我们需要不断研究与努力的方向。
本文旨在经过研究设计智能引路系统, 来推进中国智能交通的发展, 促进技术研发与实际应用。本文的设计具有投入成本低, 开发研究周期短, 设计自成一体, 无需额外设备支持等优点。设计基于当前国内已经进行深入研究与开发的物联网, 物联网将一系列技术和设备经过协议约定来实现信息与物理世界的融合与通信, 这些技术包括红外感应、 RFID ,激光扫描、 GPS等等, 物联网使得传统网络的人与人的通信扩大到了人与物、 环境间的互相通信, 能够帮助进行智能定位、 识别、 监控等功能。此设计真正意义是是此案人类通信技术的三维互联。本设计的智能引路系统在此基础上, 一方面能够帮助人们, 特别是盲人解决外出困难, 帮助盲人进行障碍物探测, 并引导她们进行障碍物躲避。另一方面, 结合当今社会普遍应用的Android手机系统与百度地图导航技术, 能够进行汽车引路, 实现智能化驾车。既能够进行步行线路规划, 也能够进行路况针对弱势群体选择最便利、 安全的行进路线。
1.2研究内容与安排
本设计在物联网的基础上, 利用Android和Arduino平台设计了一套能够实现障碍物探测与躲避, 路线规划与控制的智能引路系统。文章主要研究内容与结构如下:
第二章: 对相关技术平台与通信技术进行介绍, 在此基础上给出本设计的总体设计方案与系统功能介绍。
第三章: 对Arduino的数据采集部分进行设计, 包括硬件的选型与实现互联, 控制程序的设计与编写部分。
第四章: Android应用软件程序主要设计, 包括手机程序界面设计, 蓝牙的相关控制程序, 以及地图控制的程序。
第六章对文章进行小结。
2.总体设计与相关技术
2.1总体设计方案
2.2.1总体设计框架
本设计的主要指令中心设备为手机, 利用Arduino技术进行道路探测与行进, 而且经过蓝牙实现系统互联。
本系统由LANDWide软件、 蓝牙通信和Arduino探测行进系统三大部分组成, 主要实现道路感应、 行动、 通信和计算和指令处理几个功能, 基于安卓系统的LANDWide软件实现人机互动, 经过Android系统实现控制与相关应用的操作, 能够根据实际使用过程中得需求进行相关程序的设计。蓝牙通信系统经过蓝牙技术实现传感器、 手机与互联网的信息交换, 是两大平台的信息传递媒介。Arduino探测行进系统则经过传感技术对道路的障碍物探测, 进行道路数据的采集, 并进行上传。该部分硬件采用包括微处理器和扩展板的Arduino开发板; 感应功能主要依靠超声波进行障碍物探测, 另外经过指南针设备进行方向感应; 驱动装置主要经过电机马达实现行进功能。
三大功能模块: ( 1) 能够感知和移动的Arduino平台小车机器人, 在完成手机指令的同时, 还能够对外部环境进行监测, 并及时反馈到手机端; ( 2) LANDWide系统软件接收到小车发来的数据后, 能够对当下地形及路况进行重新计算, 并将重新计算的方向与速度指令发送给小车; ( 3) 数据通信, 安卓手机终端能够经过2G/3 G网络实现GPS定位, 获得当前位置坐标信息, 当安卓手机终端接收到来自Arduino感应模块传来的相关信息时, 结合当前地形, 对形式方向及速度进行调节。
这个系统实现了物联网的三维信息网络构建。系统总体设计图如图2-2所示。
图2-1智能引路系统大致设计流程
系统设计首先需要进行系统功能需求分析, 从上文系统总体设计中, 我们了解了系统的总体功能需求, 主要包括网络通信, 蓝牙设计以及探测行动设计。经过对各部分子需求进行分析与划分, 实现系统高效有序运作。
2.1.2 系统的功能及管理
对于体系进行设置的首要步骤是确定作用的要求, 区分规划体系的种类, 明确能够用什么样的子体系达成相关的效果。在此体系中, 必须由局域内的无线网联合互联网, 这样才能满足各种设施间消息的互相连接、 接收和传发。体系在互联网的作用下, 能够精确得知相关的导航消息与经度和纬度消息等。另外, 在体系里面有个蓝牙, 这个部分是全部体系的至关重要位置, 它能够精准而且实时地获取感觉反应部分向网络中央传输的相关数值消息, 网络中央再以更快的速度对于数值进行处理, 然后经过里面的蓝牙部位输送命令给动作部位。侦探和勘测以及动作部位都是将AVR这个单机片当成中心, 来驱使下面的每个小的部位, 而且, 这两种部位也是命令和数值的分析与发送核心。因此, 我们最先做到的是确保子部件的发动能够符合常规, 在进行各种代码的编制演算时, 要留心把握每个部件间的协调合作, 以防发生相应的争执。对于间距的勘测和位置的检测部件属于感应部件的范畴。而移动的终极端口身为网络的核心, 而且也属于使用者的运作和掌控页面。其实, 完全的互相交流、 互相传输数值和命令便是该体系的最大特性, 它就是一个按时传输的环境。对于该体系的最终完成步骤我们能够简单表述成: 依据使用者选取的位置, 再仔细查看当地的各种环境, 然后对于行走线路进行布置, 体系会参照相关的路途环境以及指示针勘测的方位随时对行走的路线进行调节和控制。在这一过程中, 具有超声波特性的部件对于所遇到的阻碍物的间距适时进行勘测, 当这一勘测数值比规定的间距要小的时候, 必须得调节方位, 经过这些步骤, 最后能够成功将使用者参照提前规定好的线路带到目标场所。
硬件的电路形成是基于各种软件的开发研究, 而软件的设置必须得在一定的标准下进行才能够。在进行软件的研发时, 能够把实在性、 强壮性、 能够改变性和能够拓展性等, 当成要遵守的标准。采取具有能够识别的编制程序与很高的实现手段进行路线的设置, 能够使得对程序的保护与设置呈现出多种态势、 具有继承的特征, 使整个体系表现出一种较低的联合、 较高的内部相聚性, 令整个程序的拓展实现快速便捷的目的。具有高智能的引导路线的体系软件是由对感应数值的整理、 传送和处理等过程构成, 而真正掌管感应这一部件的是Arduino平台, 可是这一平台的能力相对弱小, 演算水平很低, 因此, 重点掌控计算机的是Android 平台。
2.2 相关技术
该引路系统主要涉及三大平台的选择:第一, 探测行进系统, 能进行环境探测、 制动前进或转向、 能反馈数据同时接受用户指令;第二, 手机终端, 负责同时和用户及机器人交互, 执行用户操作的同时解析机器人反馈的数据进而对机器人下达指令; 第三, 通信网络, 探测行进系统和手机终端之间的数据通路,智能引路系统选择用Android终端控制基于Arduino的轮式机器人, 包括三大元素:Arduino软硬件平台和Android终端平台, 以及两者赖以通信的蓝牙系统[10]。
2.2.1 Arduino平台
Arduino平台由硬件和软件两部分组成:Arduino板和Arduino IDE集成软件开发环境。Arduino板是组建硬件系统的实物, 包括Atmel微处理器和电路板等, 而软件程序(sketch)能够在IDE下编辑和编译, 经过USB接口能够上传到Arduino板, 实现对硬件板的编程, 硬件会自动执行写入的软件[11]。
1.硬件平台Arduino板
本设计使用Arduino uno, 其前面如图2.2所示, 长70mm宽_54mm, 下面是对该产品给出的资源做一介绍。在Arduino上能够在很弱的软件条件下形成一个系统, 提供的主要硬件是一个基于8-bit的AV R单片机ATmega328微控制器。开发板包括犯个I/O接口, 其中有:14道数字I/O接口(DO-13 ):可作为输入或输出, 由软件定义。其中数字端口的(D3,5,6,9,10,11)能够编程为6个模拟PWM输出端口 。 6个模拟输入端口(AO-5 ):输入好比传感器电压这种模拟信号, 可经过内部ADC将其转变为数字信号。板子能够对外提供3.3 V或者5 V电压接口。5 V电压为超声波测距模块和蓝牙控制模块提供电压, 3.3 V电压为指南针模块提供支持, 另有三个端口。Arduino uno有一个二级微控制器ATmega 16U2(图2.2中接近USB端口的硬件), 使主板能用USB接口与其它设备相连。
表2.1对其基本参数的简要的概述。
ATmega328是一款基于AV R先进RISC架构的8-bit CMOS低功耗微型处理器, 共有131条指令, 一个时钟周期执行一条指令, 一条指令能够同时访问两个寄存器, 犯个8位工作寄存器直接连接到ALU上, 该处理器执行代码效率非常高, 是CISC架构微处理器的十倍, 除此之外, 芯片还提供非易失性存储器:32K BytesFlash, 1 K Bytes EEPROM和2K Byte SRAM[13]。芯片有犯条GPIO线, 三个灵活的计数器, 一个串行可编程DART接口, 两线I2C串行接口和SPI串行接口等。
2.软件平台Arduino IDE
本设计使用的软件版本为Arduino 1._5.4, 在Arduino.cc官方网站下载后在电脑上安装, 就能够经过它对Arduino板进行编程, 编程语言采用C++, 被IDE传递给avr-gcc编译器转换成机器码得以执行[14]。IDE界面如图2.3所示。
开发界面非常简单, Arduino IDE提供了串行监视功能, 点击右上角功能键即可即时观测到板子与电脑的通信数据, 下方的黑色窗口, 显示程序状态和错误信息。官方提供了很多模块化的库, 在设计之前只需要将其导入即可, 另外还支持第三方库, 导入后即可在编程中使用[15]。
2.2.2 Android平台概述
1. Android系统架构
Andro id系统能够当成分层的软件栈, 共有四层每一层有一组程序组件, 如图2.4, 从低到高分别是Linux内核层、 系统运行库层和Android运行时、 应用程序框架层和应用层。整个结构粗俗地讲就是把Linux内核和C/C++库整合在一起对运行时和应用层实行管理。
(1)应用层(Applications Layer)
应用层是Android架构的最顶层, Andro id终端发布时会自带一系列核心的本地应用程序包, 包括拨号器、 短消息、 联系人管理、 地图等, 除此之外用户能够从第三方网站下载安装支持安卓系统的应用程序, 开发人员能够开发自己的Andro id应用程序在设备上运行, 所有这些程序大都用Java编写, Android架构组件重用性高, 在允许的安全访问权限下, 应用程序间能够共享活动、 服务以及数据[17]。
(2)应用程序框架(Application Frameworks Layer)
应用程序框架是应用程序直接用到的各种构建模块, 用于简化软件的重用, 它对手机一些类如资源管理、 语音呼叫等基本功能进行管理, 是隐藏在应用后的一系列服务和系统。简言之就是一组应用程序编程接口(API。应用程序框架重要模块有:活动管理器, 用于管理应用中Activity的生命周期;内容提供器, 管理应用间共享的数据;通话服务, 处理所有的语音通话, 应用中如果用到语音通话就会用到该模块;基于位置的服务与GPS和基站打交道;资源管理器处理应用中用到的各种类型的资源[18]。
( 3 ) Android运行时(Android Runtime)
Android运行时是应用程序运行的动力, 包括Android库和Dalvik虚拟机, 和库一起成为上层运行的基础。Dalvik虚拟机是一个定制的基于寄存器的虚拟机, 它对低功耗和低内存环境进行了优化, 依赖Linux内核进行进程隔离、 内存管理和线程操作, 支持多虚拟实例同时运行, 而它并不是Java虚拟机, 因此Android库提供了Android特定库可用的功能外还提供了Java核心库[3]。
(4)库(Libraries)
Android本地库层包含了各种针对特定硬件的C/C++核心库, 直接运行于内核之上, 该层的作用在于能让设备处理不同类型的数据。包括有:外观管理器, 用于形成视窗管理和离屏缓冲, 一些无法直接被调入视窗的内容会被先放置于离屏缓冲器内;媒体框架, 提供支持不同格式的音频和视频的编解码;S QLite是支持数据存储的数据库引擎;Web Kit是支持HTML格式内容的浏览器引擎;OpenGL和SGL图形库为用户呈现2D/3D图形等[6]。
( 5 ) Linux内核(Linux Kernel)
Linux内核是整个Android操作系统的基础层, 是Google基于Linux2.6内核做了一些架构上的改动得来的。它包含了所有重要的硬件驱动能与硬件打交道, 比如蓝牙驱动可驱动蓝牙硬件模块从而与之通信。另外它还相当于软件栈和硬件之间的抽象层, 执行所有核心功能, 诸如进程管理、 网络、 内存管理和各种驱动模型等[19]。
Android整个系统框架各层之间是协同工作的, 系统分层有助于我们的学习和应用, 不同的开发者需要关注不同的层, 当我们要做Android应用程序开发时, 重点应放在应用层和应用程序框架层[20]。
2.Android应用程序组件
Android系统中每个应用都是一个独立的Linux系统用户, 每个应用占用一个用户权限, ID, 应用共存表明它是一个多用户系统,系统设置中为所有应用文件设定了只用拥有该权限的应用才能访问这些文件[15]。
每个进程都有独立的虚拟机, 因此一个应用的代码运行时和其它应用隔离。安装到手机上的Android应用, 都处于一个隔离的沙盒环境中, 每个应用运行在自己的进程中,当应用组件被调用时, Android将会启动这个应用。经过这种机制, Android系统实现了最小权限机制, 每个应用将不能访问超出权限的系统组件,可是应用之间能够经过请求权限来访问数据, 例如相机能够请求使用蓝牙等。Android的应用是以组件形式构建在一起的, 每个组件能够独立的调用, 应用程序组件是最基本的程序组件,Android主要的组件有:Activity, 提供给用户一个与应用交互的用户界面[21]。Service, 在后台执行与应用相关的任务;Broadcast Receiver处理操作系统和应用之间的交互;Content Provider进行数据库管理;Intent, 在一个组件中能够借助Intent来启动另一个组件。
2.2.3蓝牙技术
不同的通信技术占用不同的射频频段, 射频频段资源非常有限, 蓝牙2.4GHz是工业、 科学、 医学(ISM)频段, 无需申请许可对所有无线系统都开放, 因此存在诸多干扰, 包括WLAN的802.11标准以及微波炉.蓝牙网络属于自组网络系统, 不需要建立固定基站或网络中心来维持网络同步, 各个蓝牙设备之间也不可避免地会互相干扰,因此蓝牙采用跳频技术提高抗干扰性,支持点对点和点对多传输, 多个蓝牙设备能够组成微微网[3]。蓝牙有三种数据传输模式:基本速率模式, 传输速率为1Mbps;增强速率模式, 传输速率为2 Mbps;高速模式, 其传输速率可达24 Mbps。蓝牙发射机依据发射功率的电平大小能够把蓝牙设备的功率分成三级:一级发射功率为100mW, 通信距离约100m;二级发射功率为2._SmW, 通信距离约10m;三级发射功率为1 mW, 距离100米, 射频模块主要负责数据发送和接收,蓝牙设备具备加密认证机制, 安全性较高,整个蓝牙系统的技术涉及射频、 基带、 固件和上层应用软件等多个领域, 蓝牙技术己经形成了一套完整的理论技术体系和健全的产品结构,随着无线通信网络技术的快速发展, 人们对高速、 便携、 低功耗、 低成本特性的蓝牙产品要求不断提高, 更加促进了蓝牙产品的发展, 因此掌握蓝牙技术和应用对我们以后学习和工作发展具有重要的意义[3]。
硬件系统选型与设计
本设计的硬件主要使用ATmega32 AVR单片机、 Arduino、 HMC_5883L指南针、 HC-SR04超声波探测模块、 HC-06蓝牙模块、 L293D电机驱动扩展板, 另外还需电机、 底板、 车轮等硬件设备[13]。
3.1蓝牙串口模块
本设计所选用的DF-BluetoothV3蓝牙模块的优点是能够防止静电损坏, 而且外形比较
展开阅读全文