1、第 43 卷 2015 年第 8 期yanz检测时间:2016-05-29 10:03:44基于 Android/Arduino 平台的智能引路系统的设计和实现摘要在技术不断发展的今天,Android 操作系统不但开发利用,Arduino 平台也日益完善,将两者实现有限结合,搭建智能移动平台能够运用到很多范畴,改进我们的生活质量,给人们带来便利。本文经过分析人们在智能引路系统的实际需求后,对相应技术进行研究讨论,最终选定Arduino 和 Android 两大平台为本设计的技术支撑,在此基础上通过蓝牙实现两者的信息传递与互联,设计出一套智能引路系统。系统设计主要包括总体设计,Arduino 设
2、计和 Android 平台软件设计,软件基于 Java 程序语言进行编写,最后通过测试验证了系统设计的有限性与实用性。该系统在一整套软硬件的协同作用下可以实现智能引路行车,包括转向、测距、方面探测等等智能功能,极大的方便了人们的日常行车活动。关键字:Android/Arduino 平台;智能引路系统;设计与实现Abstract在技术不断发展的今天,Android 操作系统不但开发利用,Arduino 平台也日益完善,将两者实现有限结合,搭建智能移动平台可以应用到很多领域,改善人们的生活质量,方便给人们提供便利。In technology development today, Android o
3、perating 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 peoples quality of life, to provide people with convenient conven
4、ience. 本文通过分析人们在智能引路系统的实际需求后,对相关设计技术进行研究分析,最后选定Arduino 和 Android 平台为本设计的技术支持,在此基础上通过蓝牙实现两者的信息传递与互联,设计出一套智能引路系统。系统设计主要包括总体设计,Arduino 设计和 Android 平台软件设计,软件基于 Java 程序语言进行编写,最后通过测试验证了系统设计的有限性与实用性。该系统在一整套软硬件的协同作用下可以实现智能引路行车,包括转向、测距、方面探测等等智能功能,极大的方便了人们的日常行车活动。Through the analysis of people after the actua
5、l 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 s
6、ystem. 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 s
7、ystem 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 peoples daily traffic activity. 关键字:Android/Arduino 平台;智能引路系统;设计与实现Keywords:Android
8、/Arduino; intelligent guide system; design and Implementation 目录摘要 PAGEREF _Toc27365 1Abstract 2目录 31.绪论 51.1 本设计的研究背景及意义 51.1.1 无线通信技术发展 51.1.2 硬件平台简介 61.1.3 手机操作系统介绍 71.1.4 研究意义 91.2 研究内容与安排 102.总体设计与相关技术 112.1 总体设计方案 112.2.1 总体设计框架 112.1.2 系统的功能及管理 122.2 相关技术 132.2.1 Arduino 平台 132.2.2 Android 平台
9、概述 162.2.3 蓝牙技术 193. 硬件系统选型与设计 193.1 蓝牙串口模块 203.2 指南针 I2C 总线连接 213.2.1 指南针芯片 213.2.2 指南针与 Arduino 的 I2C 通信 233.3 H 桥控制马达 243.4 超声波测距模块 263.5 电源模块 274. Arduino 与 Android 平台控制应用软件实现 274.1 Arduino 控制程序设计 284.1.1 小车超声测距和避障的程序 284.1.2 小车和手机通讯协议 294.2 Android 平台控制应用软件设计 314.2.1 界面设计 314.2.2 蓝牙控制 324.2.3 地
10、图控制系统实现 345. 智能引路系统测试 385.1 小车调试的结果和结论 385.2 应用处理软件实现结果 406. 小结 44参考文献 451.绪论1.1 本设计的研究背景及意义1.1.1 无线通信技术发展随着通信技术的发展,无论是在物联网,还是互联网,传统的有线传输技术已经越来越不能满足企业和个人的需要。当今通信技术正朝着“无线”和“高速”的方向发展。无线传输以其特有的优势得到了个人和企业的青睐。在移动终端中,无线传输技术主要包括:(1)WiFiWiFi 全称 Wireless Fidelity,是一种无线局域高保真网络传输技术,它能提供高质量的无线局域网(WLAN)服务,所有基于 I
11、EEE 802.11 标准并通过 WiFi 组织测试的无线局域网均称为 WiFi。在历经 IEEE 802.11 a/b/g 传输协议的发展后,IEEE 802.11 n 对物理层进行了优化,使得吞吐量从 54Mbps 提高到 300-600Mbps 支持 WiFi 技术的设备之间可以直接通信,也可以在访问点或基站的协调下进行通信。大多数情况是为设备提供一个接入点(热点),通过该接入点,个人电脑以及移动终端设备等均可无线接入互联网,并保证高带宽的网络数据交换。一个 WiFi 热点的覆盖范围室内最低 35 米,室外能达到 100 米以上,其信号强度会受到建筑物的影响。如果想进一步扩大覆盖范围需要
12、增添接入点。由于 WiFi 的接入不需要物理连接,所以其安全性较低 1。(2)蓝牙蓝牙(Bluetooth)是一种需要设备相互靠近以进行数据交换的短距离无线传输技术,广泛用于手持 设备、电脑,甚至音响、打印机、手表等小型设备,其优势在于低成本、低功耗、小型化等;由于其需要匹配特定对象的特点,相对于 WiFi,蓝牙更多用于私人设备之间的语音数据传输,属于个人局域网(WPAN ),安全性要高于 WiFi,蓝牙协议遵从 IEEE 802.1 5.1,其功耗远低于 802.11设备 ,支持单点对单点,单点对多点的传输,一般传输距离为 10 米,有信号加强装置最远可达 50米,其实际的传输距离依赖于环境
13、,在范围边界其传输性能会下降3。通过二者的比较,结合本设计的特点:机实时双工通信,蓝牙的低成本、低消耗特应用场景为室外近身使用,需要和手点使其成为最好的选择。表 2-1 对两种类型的无线通信进行了对比。1.1.2 硬件平台简介硬件平台需要有微处理器,能进行简单的计算,可以反复编程、可接受外部指令并执行,更重要的是要有多个接口易于扩展;Arduino 开发板是一个基于开放源代码的 Simple I/O 软硬件平台,以廉价的微型处理器为核心,支持多种扩展接口,可以反复编程非常适来承担本设计的硬件平台;Arduino 中文称阿德伟诺,名称源于一个意大利古代国王之名,Arduino 硬件平台是一块基于
14、单片机的微控制器,用户可以通过其 USB 串行接口对其进行编程,广泛用于机器人、可穿戴设备等;其特点是:具备 I/O 功能, 支持直流电源和 USB 端口供电,可扩展外接红外探测,蓝牙、WiFi 设备,马达驱动,LED 显示,温度探测等模块;其蓝牙、WiFi 的可扩展性为其与手机进行无线通信提供了可能2。Arduino 现有多个版本,每个版本侧重点不同。 Arduino Duemilanove, ArduinoMini, Arduino Mega2560, LiliPad Arduino, Arduino uno 等,以及最新的 ArduinoYun。其中Duemilanove 是基本款,后续
15、许多产品都是在该产品的基础上设计生产的;Arduino Yun 是最新高端产品,它不仅延续了 Arduino 架构并且增加了 Linux 系统,是系列产品中首个集成 WiFi 模块的成员,可以通过 WiFi 无线操作 Linux 模块,但价格比较昂贵 2。Arduino uno 是 USB 接口,采用 ATmega 16U2 芯片进行 USB 转串口,先前的版本需要用 FTDI USB 转串口驱动串行通信;它能够控制电机和其他小型物理设备,批量读取传感器和开关信号,非常适合做实时互动通信;通过对比 Arduino 现有的几个版本,本设计最终选择了 Arduino uno,完全满足本设计需要;在
16、未来,英特尔将为 Arduino 开源项目提供 Galileo x86 芯片,德州仪器将为其提供 ARM 芯片,所以Arduino 硬件平台将向多系统架构发展,前景十分好4 。1.1.3 手机操作系统介绍除了 Android 平台外,当前的主流智能手机平台还有苹果公司的 i0 S 操作系统和微软公司的Windows Phone 平台,三类手机平台均支持与 Arduino 的互联,现对这三个系统做一比较5 。( 1) iOS(iPhone OS)系统Apple iOS 是苹果公司为 iPhone 开发的手持设备操作系统,最早于 2007 年公布,其后续产品链 iPod touch, iPad 均
17、采用了这一系统,2013 年 9 月苹果发布了最新一版 iOS 7 操作系统,使其手机市场份额迅速提升到 12 070(截至 2013 年 10 月),成为我国市场份额第三, iOS 系统最大的优势在于它是一个生态系统,用户可以在苹果的各款产品之间同步自己的数据和信息,这点对于如今多电子平台的操作十分重要,另外苹果 App 商店提供大量高质量的 APP,基于 iOS 系统的APP 开发简单,但开发人员若想发布其自行开发的软件则需要付费加入 iPhone 开发者计划,获得苹果公司 的批准,iOS 系统最大的缺点在于软硬件系统的封闭性,采用该系统的公司只有苹果一家,产品价格都偏高,使得用户群并不那
18、么广泛,严重制约了其在低端市场的发展,iPhone 和Arduino 之间可以采用两种通信方式: 一种是有线连接,一种是通过蓝牙或 WiFi 的无线连接16。( 2 ) Windows Phone ( WP)系统Windows Phone 是 2010 年 10 月由微软公布的便携智能设备的操作系统,取代之前的Windows Mobile,并于 2011 年与前世界手机巨头诺基亚合作,代替诺基亚之前的操作系统Symbian,虽然发布时间不长,但其新颖的界面和强大的功能吸引了众多用户和开发者,WP 最新版本为 Windows Phone8 ,WP8 将其应用与微软服务 Windows8 进行同步
19、适配,形成良性生态圈 ,拥有 WP 就意味着拥有微软公司的系列办公软件和邮件管理系统,这对商务人士是极大的方便,WP 虽起步较晚,但无疑有较大的特色和优势 ,wP8 最大的优点是其流畅度和稳定性,两种性能都强于 Android 和 iOS,但由于其面世时间较短系统还不完整,还需要进一步改善系统,比如批量选择、截屏功能、重力感应锁定等,其单工作业或伪后台作业也显示了系统的不足,WP8 平台开发语言是 C+,入门简单,开发者可以方便的开发出各种应用程序,但由于上市时间较晚,加之有部分未开放的 API 使得应用软件数量非常有限,机型数量也较少。随着三星、HTC、诺基亚、联想等 OEM 厂商的加入,再
20、加上微软公司雄厚的开发实力,其前景还是非常好 的,WP7 不支持与外界硬件通信,通过改进后 WP8 可以与 Arduino 通过蓝牙进行通信16。( 3 ) Android 系统Google 公司于 2007 年公布了开放源码的操作系统 Android,是由开放手机联盟(OHA)支持的基于 Linux 的系统,主要使用于便携手持设备,OHA 获得了软件、硬件和通信行业公司的支持,共同致力为手持设备建立开放、先进的标准,Android 平台的特点在于,第一,系统的开放性,开放迎来了更多的竞争和生命力,所以它有了近乎无限的扩展性,Android 的开发门坎低开发周期短,用户群很大,并有大量的第三方
21、开发者为 Android 开发应用程序;第二,定制化强,Android 操作系统是基于 Linux 内核的,对硬件兼容性强, Andro id 开发语言是 Java 和 C+,其底层代码可见,因此众多手机厂商通过在其开源架构的基础上构建自己的框架,实现个性化 UI 定制,做自己的系统并进行深度优化,满足其各自需要硬件软件两头做的需求,Android 系统安装在不同硬件上,有高端到低端不 同档次,这正满足了用户的多样化;第三,Andro id 系统也存在一些问题,市面上众多的机型给消费者带来了更多选择的同时,使得有些应用在不同厂商机型下会有不兼容的情况,另外其版本升级较快,相互之间的兼容性不强,
22、给用户使用带来不便6。2013 年 9 月,Google 发布了最新一版的 Android4.4 KitKat,对 RAM 进行了优化,也进一步优化了系统在低配硬件上的运行效果,使得系统可以在一些老款手机上流畅运行,也能更好的在智能穿戴设备上运行。 4.4 版本还更新了蓝牙配置文件,可支持的设备更多,另外优化了很多软件,更大程度地方便用户、符合用户的习惯,基于 Android 系统的开放性、用户群体广泛、软件开发周期短等特点,加上 Android 与 Arduino 兼容性较强,笔者最终选择了 Android 终端9。1.1.4 研究意义目前海内的智能引路系统还正在发展时期,在步行引路系统的研
23、究与实践中,我国曾经试行过盲人智能导航系统,但是由于系统在实际投入中所需要的资金、人力较大,同时所涉及的改造安装配合场所范围大,未能在实现广泛的应用。此外,Google 公司设计的自动驾驶汽车利用了雷达、红外扫描、GPS 等等高新技术支持,能够极大的方便满人的汽车驾驶,但是由于国内路况复杂,车辆较多,同时智能引路系统的应用还需要更多方面的配合,例如前期还需要智能交通系统的设计与建设,相关交通法律法规的出台与完善。由于种种实际应用的困难,该技术也未能正式投入使用中来。国内的智能引路系统的发展与实际应用存在着许多方面的难点与困难,要实现自动驾驶汽车的投入使用还有很长的研究开发与实践之路要走。在信息
24、技术如此发达的今天,高科技给人们的生活带来了巨大的便利,例如现在手机地图导航软件已经成为日常人们的出行的重要工具,但是对于残障人士等弱势群体而言,却无法享受这些应用带来的便利,因此对现有的导航软件进行再研究再开发,使得残障人士也可以进行使用是我们需要不断研究与努力的方向。本文旨在通过研究设计智能引路系统,来推进中国智能交通的发展,促进技术研发与实际应用。本文的设计具有投入成本低,开发研究周期短,设计自成一体,无需额外设备支持等优点。设计基于目前国内已经进行深入研究与开发的物联网,物联网将一系列技术和设备通过协议约定来实现信息与 物理世界的融合与通信,这些技术包括红外感应、RFID ,激光扫描、
25、GPS 等等,物联网使得传统网络的人与人的通信扩大到了人与物、环境间的互相通信,可以帮助进行智能定位、识别、监控等功能。此设计真正意义是是此案人类通信技术的三维互联。本设计的智能引路系统在此基础上,一方面可以帮助人们,特别是盲人解决外出困难,帮助盲人进行障碍物探测,并引导他们进行障碍物躲避。另一方面,结合当今社会普遍应用的 Android 手机系统与百度地图导航技术,可以进行汽车引路,实现智能化驾车。既可以进行步行线路规划,也可以进行路况针对弱势群体选择最便利、安全的行进路线。1.2 研究内容与安排本设计在物联网的基础上,利用 Android 和 Arduino 平台设计了一套可以实现障碍物探
26、测与躲避,路线规划与控制的智能引路系统。文章主要研究内容与结构如下:第二章:对相关技术平台与通信技术进行介绍,在此基础上给出本设计的总体设计方案与系统功能介绍。第三章:对 Arduino 的数据采集部分进行设计,包括硬件的选型与实现互联,控制程序的设计与编写部分。第四章:Android 应用软件程序主要设计,包括手机程序界面设计,蓝牙的相关控制程序,以及地图控制的程序。第六章对文章进行小结。2.总体设计与相关技术2.1 总体设计方案2.2.1 总体设计框架本设计的主要指令中心设备为手机,利用 Arduino 技术进行道路探测与行进,并且通过蓝牙实现系统互联。本系统由 LANDWide 软件、蓝
27、牙通信和 Arduino 探测行进系统三大部分组成,主要实现道路感应、行动、通信和计算和指令处理几个功能,基于安卓系统的 LANDWide 软件实现人机互动,通过 Android 系统实现控制与相关应用的操作,可以根据实际使用过程中得需求进行相关程序的设计。蓝牙通信系统通过蓝牙技术实现传感器、手机与互联网的信息交换,是两大平台的信息传递媒介。Arduino 探测行进系统则通过传感技术对道路的障碍物探测,进行道路数据的采集,并进行上传。该部分硬件采用包括微处理器和扩展板的 Arduino 开发板;感应功能主要依靠超声波进行障碍物探测,另外通过指南针设备进行方向感应;驱动装置主要通过电机马达实现行
28、进功能。三大功能模块:(1)可以感知和移动的 Arduino 平台小车机器人,在完成手机指令的同时,还可以对外部环境进行监测,并及时反馈到手机端;(2)LANDWide 系统软件接收到小车发来的数据后,能够对当下地形及路况进行重新计算,并将重新计算的方向与速度指令发送给小车;(3)数据通信,安卓手机终端可以通过 2G/3 G 网络实现 GPS 定位,获得当前位置坐标信息,当安卓手机终端接收到来自 Arduino 感应模块传来的相关信息时,结合当前地形,对形式方向及速度进行调节。这个系统实现了物联网的三维信息网络构建。系统总体设计图如图 2-2 所示。图 2-1 智能引路系统大体设计流程系统设计
29、首先需要进行系统功能需求分析,从上文系统总体设计中,我们了解了系统的总体功能需求,主要包括网络通信,蓝牙设计以及探测行动设计。通过对各部分子需求进行分析与划分,实现系统高效有序运作。2.1.2 系统的功能及管理对于体系进行设置的首要步骤是确定作用的要求,区分规划体系的种类,明确可以用什么样的子体系达成相关的效果。在此体系中,必须由局域内的无线网联合互联网,这样才能满足各种设施间消息的互相连接、接收和传发。体系在互联网的作用下,能够精确得知相关的导航消息与经度和纬度消息等。另外,在体系里面有个蓝牙,这个部分是全部体系的至关重要位置,它可以精准而且实时地获取感觉反应部分向网络中央传输的相关数值消息
30、,网络中央再以更快的速度对于数值进行处置,然后经过里面的蓝牙部位输送命令给动作部位。侦探和勘测以及动作部位都是将 AVR 这个单机片当成中心,来驱使下面的每个小的部位,而且,这两种部位也是命令和数值的分析与发送核心。所以,我们最先做到的是确保子部件的发动可以符合常规,在进行各种代码的编制演算时,要留心把握每个部件间的协调合作,以防发生相应的争执。对于间距的勘测和位置的检测部件属于感应部件的范畴。而移动的终极端口身为网络的核心,而且也属于使用者的运作和掌控页面。其实,完全的互相交流、互相传输数值和命令便是该体系的最大特性,它就是一个按时传输的环境。对于该体系的最终完成步骤我们能够简单表述成:依据
31、使用者选取的位置,再仔细查看当地的各种环境,然后对于行走线路进行布置,体系会参照相关的路途环境以及指示针勘测的方位随时对行走的路线进行调节和控制。在这一过程中,具有超声波特性的部件对于所遇到的阻碍物的间距适时进行勘测,当这一勘测数值比规定的间距要小的时候,必须得调节方位,通过这些步骤,最后可以成功将使用者参照提前规定好的线路带到目标场所。硬件的电路形成是基于各种软件的开发研究,而软件的设置必须得在一定的标准下进行才可以。在进行软件的研发时,可以把实在性、强壮性、能够改变性和能够拓展性等,当成要遵守的标准。采取具有可以识别的编制程序与很高的实现手段进行路线的设置,能够使得对程序的保护与设置呈现出
32、多种态势、具有继承的特征,使整个体系表现出一种较低的联合、较高的内部相聚性,令整个程序的拓展实现快速便捷的目的。具有高智能的引导路线的体系软件是由对感应数值的整理、传送和处置等过程构成,而真正掌管感应这一部件的是 Arduino 平台,但是这一平台的能力相对弱小,演算水平很低,所以,重点掌控计算机的是 Android 平台。2.2 相关技术该引路系统主要涉及三大平台的选择:第一,探测行进系统,能进行环境探测、制动前进或转向、能反馈数据同时接受用户指令;第二,手机终端,负责同时和用户及机器人交互,执行用户操作的同时解析机器人反馈的数据进而对机器人下达指令;第三,通信网络,探测行进系统和手机终端之
33、间的数据通路,智能引路系统选择用 Android 终端控制基于 Arduino 的轮式机器人,包括三大元素 :Arduino 软硬件平台和 Android 终端平台,以及两者赖以通信的蓝牙系统10。2.2.1 Arduino 平台Arduino 平台由硬件和软件两部分组成:Arduino 板和 Arduino IDE 集成软件开发环境。Arduino 板是组建硬件系统的实物,包括 Atmel 微处理器和电路板等,而软件程序(sketch)可以在 IDE 下编辑和编译,通过 USB 接口可以上传到 Arduino 板,实现对硬件板的编程,硬件会自动执行写入的软件11。1.硬件平台 Arduino
34、 板本设计使用 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 将其转变为数字信号。 板子可以对外提供
35、 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
36、 架构微处理器的十倍,除此之外,芯片还提供非易失性存储器:32K BytesFlash, 1 K Bytes EEPROM 和 2K Byte SRAM13。芯片有犯条 GPIO 线,三个灵活的计数器,一个串行可编程 DART 接口,两线 I2C 串行接口和 SPI 串行接口等。2.软件平台 Arduino IDE本设计使用的软件版本为 Arduino 1._5.4,在 Arduino.cc 官方网站下载后在电脑上安装,就可以通过它对 Arduino 板进行编程,编程语言采用 C+,被 IDE 传递给 avr-gcc 编译器转换成机器码得以执行14。IDE 界面如图 2.3 所示。开发界面非常
37、简单,Arduino IDE 提供了串行监视功能,点击右上角功能键即可即时观测到板子与电脑的通信数据,下方的黑色窗口,显示程序状态和错误信息。官方提供了很多模块化的库,在设计之前只需要将其导入即可,另外还支持第三方库,导入后即可在编程中使用15。 2.2.2 Android 平台概述1. Android 系统架构Andro id 系统能够当成分层的软件栈,共有四层每一层有一组程序组件,如图 2.4,从低到高分别是 Linux 内核层、系统运行库层和 Android 运行时、应用程序框架层和应用层。整个结构粗俗地讲就是把 Linux 内核和 C/C+库整合在一起对运行时和应用层实行管理。(1)应
38、用层(Applications Layer)应用层是 Android 架构的最顶层,Andro id 终端发布时会自带一系列核心的本地应用程序包,包括拨号器、短消息、联系人管理、地图等,除此之外用户可以从第三方网站下载安装支持安卓系统的应用程序,开发人员可以开发自己的 Andro id 应用程序在设备上运行,所有这些程序大都用Java 编写,Android 架构组件重用性高,在允许的安全访问权限下,应用程序间可以共享活动、服务以及数据17。(2)应用程序框架(Application Frameworks Layer)应用程序框架是应用程序直接用到的各种构建模块,用于简化软件的重用,它对手机一些
39、类如资源管理、语音呼叫等基本功能进行管理,是隐藏在应用后的一系列服务和系统。简言之就是一组应用程序编程接口(API。应用程序框架重要模块有:活动管理器,用于管理应用中 Activity 的生命周期;内容提供器,管理应用间共享的数据; 通话服务,处理所有的语音通话,应用中如果用到语音通话就会用到该模块;基于位置的服务与 GPS 和基站打交道 ;资源管理器处理应用中用到的各种类型的资源18。 ( 3 ) Android 运行时 (Android Runtime)Android 运行时是应用程序运行的动力,包括 Android 库和 Dalvik 虚拟机,和库一起成为上层运行的基础。Dalvik 虚
40、拟机是一个定制的基于寄存器的虚拟机,它对低功耗和低内存环境进行了优化,依赖 Linux 内核进行进程隔离、内存管理和线程操作,支持多虚拟实例同时运行,而它并不是 Java 虚拟机,因此 Android 库提供了 Android 特定库可用的功能外还提供了 Java 核心库3 。(4)库(Libraries) Android 本地库层包含了各种针对特定硬件的 C/C+核心库,直接运行于内核之上,该层的作用在于能让设备处理不同类型的数据。 包括有:外观管理器,用于形成视窗管理和离屏缓冲,一些无法直接被调入视窗的内容会被先放置于离屏缓冲器内;媒体框架,提供支持不同格式的音频和视频的编解码;S QLi
41、te 是支持数据存储的数据库引擎;Web Kit 是支持 HTML 格式内容的浏览器引擎;OpenGL 和 SGL 图形库为用户呈现 2D/3D 图形等6。( 5 ) Linux 内核(Linux Kernel)Linux 内核是整个 Android 操作系统的基础层,是 Google 基于 Linux2.6 内核做了一些架构上的改动得来的。它包含了所有重要的硬件驱动能与硬件打交道,比如蓝牙驱动可驱动蓝牙硬件模块从而与之通信。另外它还相当于软件栈和硬件之间的抽象层,执行所有核心功能,诸如进程管理、网络、内存管理和各种驱动模型等19。Android 整个系统框架各层之间是协同工作的,系统分层有助
42、于我们的学习和应用,不同的开发者需要关注不同的层,当我们要做 Android 应用程序开发时,重点应放在应用层和应用程序框架层20。2.Android 应用程序组件Android 系统中每个应用都是一个独立的 Linux 系统用户,每个应用占用一个用户权限,ID,应用共存表明它是一个多用户系统,系统设置中为所有应用文件设定了只用拥有该权限的应用才能访问这些文件15。每个进程都有独立的虚拟机,因此一个应用的代码运行时和其它应用隔离。安装到手机上的Android 应用,都处于一个隔离的沙盒环境中,每个应用运行在自己的进程中,当应用组件被调用时,Android 将会启动这个应用。通过这种机制,And
43、roid 系统实现了最小权限机制,每个应用将不能访问超出权限的系统组件,但是应用之间可以通过请求权限来访问数据,例如相机可以请求使用蓝牙等。 Android 的应用是以组件形式构建在一起的,每个组件可以独立的调用,应用程序组件是最基本的程序组件,Android 主要的组件有:Activity,提供给用户一个与应用交互的用户界面21。Service,在后台执行与应用相关的任务;Broadcast Receiver 处理操作系统和应用之间的交互;Content Provider 进行数据库管理;Intent,在一个组件中可以借助 Intent 来启动另一个组件。2.2.3 蓝牙技术不同的通信技术占
44、用不同的射频频段,射频频段资源非常有限,蓝牙 2.4GHz 是工业、科学、医学(ISM)频段,无需申请许可对所有无线系统都开放,因此存在诸多干扰,包括 WLAN 的802.11 标准以及微波炉 .蓝牙网络属于自组网络系统,不需要建立固定基站或网络中心来维持网络同步,各个蓝牙设备之间也 不可避免地会互相干扰,因此蓝牙采用跳频技术提高抗干扰性,支持点对点和点对多传输,多个蓝牙设备可以组成微微网3。蓝牙有三种数据传输模式: 基本速率模式,传输速率为 1Mbps;增强速率模式,传输速率为 2 Mbps;高速模式,其传输速率可达 24 Mbps。蓝牙发射机依据发射功率的电平大小能够把蓝牙设备的功率分成三
45、级:一级发射功率为 100mW,通信距离约 100m;二级发射功率为 2._SmW,通信距离约 10m;三级发射功率为 1 mW,距离 100米, 射频模块主要负责数据发送和接收,蓝牙设备具备加密认证机制,安全性较高,整个蓝牙系统的技术涉及射频、基带、固件和上层应用软件等多个领域,蓝牙技术己经形成了一套完整的理论技术体系和健全的产品结构,随着无线通信网络技术的快速发展,人们对高速、便携、低功耗、低成本特性的蓝牙产品要求不断提高,更加促进了蓝牙产品的发展,因此掌握蓝牙技术和应用对我们以后学习和工作发展具有重要的意义3。硬件系统选型与设计本设计的硬件主要使用 ATmega32 AVR 单片机、Ar
46、duino、HMC_5883L 指南针、HC-SR04超声波探测模块、HC-06 蓝牙模块、L293D 电机驱动扩展板,另外还需电机、底板、车轮等硬件设备13。3.1 蓝牙串口模块本设计所选用的 DF-BluetoothV3 蓝牙模块的优点是能够防止静电损坏,而且外形比较精致,供电电压范围 3.5-8V 以及 3.3V,电压范围较宽,能够广泛应用于各种场所14。该蓝牙串口具体的功能框图如下。图 3-1 蓝牙功能框图该模块安装有 STATE、LINK 两个信号灯,用来表明蓝牙模块的使用状态,当 STATE 发出每342ms 一次,2.9Hz 的灯光闪烁时,表明该模块处于搜索工作中,当 STATE
47、 发出每 2s 一次,0.5Hz 的闪烁时,表明蓝牙处于连接状态;当蓝牙配对成功后,LINK 会处于常亮状态。另外,指示灯除了只是工作状态外,我们也可以通过设计的开关键对指示灯进行控制,可以关闭 LINK 指示灯节约电源。 可以通过 AT Mode 键发出 AT 指令,对模块进行波特率的修改、让设备的两个模块进行主从模块的分配,两个模块进入主从机模式后,可以进行自由配对,并进行数据传输通信,具体的技术要求如下: 1、蓝牙芯片:CSR BC4171432、蓝牙协议:Bluetooth Specification v2.0+EDR3, USB 协议:USB v1.1/2.04、工作频率:2.4-2
48、.48GHz unlicensed ISM bandS、调制方式:GFSK(Gaussian Frequency Shift Keying)6、发射功率: pairedDevices;/对所有的配对设备进行记录BluetoothAdapter mBluetoothAdapter;/API 入口控制private static final UUID myUUID=UUID.fromString“00001101-0000-1000-8000-00805F9B34FB“);/连接小车的蓝牙的 UUIDBluetoothSocket bsocket;/实现与小车通信的 Socket 对象blic S
49、ocketThread mSocketThread;/连接蓝牙Pupublic ConnectedThread mConnectedThread;/与进行蓝牙通信String cmdBuffer=new String();/命令缓冲区:用于放置未处理的指令对蓝牙代码进行初始化mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); /蓝牙入口初始化if( ! mBluetoothAdapter.isEnabled()/设备开启状态检测Intent enableIntent=new Intent(BluetoothAdapter.ACTION_REQUEST_ ENABLE);startActivityForResult(enableIntent, ena);else/显示连接的蓝牙设备名称 pairedDevices=mBluetoothAdapter.getBondedDevices();接着需要选择完成配对的设备,然后发出连接请求,这就需要取得对方设备的 MAC 地址,然后进入连接线程:BluetoothDevice device=mBluetoothAdapter.