




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEIV摘要可见光通信技术是21世纪兴起的无线光通信技术,是对光无线通信领域的又一开拓。在可见光通信中,LED灯的作用极为显著。LED灯在系统中同时起到室内照明和通信的双重功能,是传统照明系统所无法比拟的。在本文中,将以可见光通信为基础,实现室内定位技术,为以后实现高精度室内定位技术打下基础。在可见光通信定位系统中,引入了新型的移动平台——安卓。安卓的搭建将使可见光通信系统变得更加便携。本文主要论述可见光通信系统的组成及原理,FPGA模块的原理,以及安卓移动平台搭建与软件开发。作者阅读了大量可见光通信系统相关文献,并在Eclipse平台上用java语言开发了软件来接收从FPGA模块传输的数据并在坐标系中显示出来。本文首先介绍可见光通信系统的应用背景;其次论述可见光通信系统的工作原理;然后简单论述FPGA模块的工作原理;接着介绍及安卓移动平台及开发的软件;然后再介绍实验中使用的芯片及;最后介绍芯片与电脑端及FPGA模块的连接及软件在芯片与FPGA相连时的结果及其分析。关键词:可见光通信;室内定位;FPGA;安卓
AbstractVisiblelightcommunicationisanewtechniqueofWirelessopticalcommunicationin21century,whichisanewdevelopmentofWirelessopticalcommunication.Inthevisiblelightcommunication,LEDplaysanimportantrole.LEDcanbelightingandtransmitsourceatthesametime,whichisbeyondthetraditionalsource.Inthispaper,wewillusethevisiblelightcommunicationsystemasabasementtobuilttheindoors-positioningsystemsothatitcanbeusedinthefurtherhigh-accuracypositioningtechnologystudy.Inthevisiblelightindoorspositioningsystem,weintroduceanewplatform,android.Theandroidplatformcanmakethevisiblelightindoorspositioningsystemmoreconvenienttocarry.Thispaperputsemphasisontheconstructionandthetheoryofvisiblelightcommunicationsystem,thetheoryofFPGA.andhowtouseandroiddevelopmenttoolstobuildandroidsoftware.Theauthorreadagreatamountofliteratureandstandardpapers,managetobuildthesoftwareinjavaontheeclipseplatformtoreceivethedatafromFPGAanddisplayinthecoordinatesystem.Inthispaper,theauthorfirstlyintroducesthebackgroundofvisiblelightcommunication.Secondlyhedetailsthetheoryofvisiblelightcommunicationsystem.Then,theauthordiscusseshowFPGAworks.Next,hediscusseswhatisandroidandhowtobuildsoftwareinthecomputer,andpresentsthesoftwareusingintheexperiment.Then,hepresentsthechipsusingintheexperiment.Finally,theauthorpresentstheresultofconnectingthechipstotheFPGAandtothecomputer,analysesandsubjectivelyevaluatestheresult.Keywords:VisibleLightCommunications;IndoorsPositioning;FPGA;Android;
目录TOC\o"1-3"摘要 IAbstract II目录 III第1章 引言 11.1 选题背景——室内定位的应用前景 11.2 定位技术现状 11.3 本文的安排和作者的工作概要 2第2章 可见光通信技术及系统 42.1 光通信的发展历程 42.1.1 光通信的关键突破 42.1.2 LED照明技术的兴起 42.1.3 光通信基本概念及其优点 42.2 可见光通信的工作原理 52.2.1 传统不可见光无线通信技术 52.2.2 可见光通信技术 62.3 室内可见光通信系统 72.3.1 典型室内可见光通信系统基本组成 72.3.2 室内可见光通信定位系统 82.3.3 可见光光通信系统的特点 9第3章 通信平台的建立 103.1 信号处理模块——FPGA模块结构与接口 103.1.1 FPGA基本组成 103.1.2 FPGA的特点 103.1.3 FPGA的配置模式 103.1.4 FPGA的配置过程 123.1.5 UART异步串行通信口 133.2 安卓移动平台 133.2.1 安卓系统的特点 143.2.2 安卓系统的架构 143.2.3 搭建安卓开发平台Eclipse 163.3 安卓软件开发 183.3.1 接收模块 183.3.2 数据转换模块 193.3.3 显示模块 20第4章 安卓设备的连接与通信 214.1 FT311D模块 214.1.1 FT311D模块介绍 214.1.2 FT311D产品特点 224.2 FT232RL模块 224.2.1 FT232RL模块介绍 224.2.2 FT232RL产品特点 234.3 电脑端与安卓设备之间的连接与通信 244.3.1 电脑端、模块与安卓的连接 244.3.2 电脑端与安卓设备连接测试 254.4 FPGA模块与安卓设备之间的连接通信 284.4.1 FPGA与安卓的连接 284.4.2 FPGA与安卓的连接测试 30总结 32致谢 33参考文献 34北京理工大学本科生毕业设计(论文)PAGE36引言选题背景——室内定位的应用前景随着经济的不断增长和现代技术的不断发展,加上智能手机的普及以及移动互联网的发展,导航、定位服务的需求日益增大,地图与导航类软件将更侧重于室内导航,尤其是在比较复杂的室内环境,如展览馆、机场大厅、图书馆、仓库、超市、地下停车场等公共场所,常常需要确定人们在室内的位置信息。据研究调查显示,人们平均80%至90%的时间在室内,其中平均70%的时间在使用移动电话,80%数据连接使用时间在室内。因而室内定位有着十分广泛的应用前景。在公共安全和应急响应方面,室内定位有助于救援人员精确定位求救者,定位建筑物的位置,甚至是楼层、房间号。在手机购物、移动电子商务、个性化广告和优惠信息方面可以通过室内定位根据不同的位置发送不同信息。室内定位在大型建筑物公共安全、应急疏散及灾后救援等重大需求面前,需要在建筑物内精确定位位置,而实现在大型复杂建筑环境内高精度的定位将为导航监控与应急服务管理提供帮助。定位技术现状定位技术可大致分为室外定位和室内定位两种。室外定位我们比较熟悉的是全球定位系统(GPS),是由美国建立的一个卫星导航定位系统。GPS定位主要用于对人及设备进行实时远程定位监控的技术。但由于全球定位系统GPS属于卫星定位,定位精度较低。而随着基于定位技术的服务受到越来越多的关注,实现高精度的定位越来越成为人们的需求,引得国内外对室内定位研究很热。室内定位是指在一定空间内的定位技术。有许多大学和研究机构一直在研究室内定位技术,这些技术的实现方法主要可以分为三种:三角定位法,场景分析法以及近似法,常用的室内定位技术主要有红外线、802.11、超声波和无线射频(RFID)技术。红外线:Olivetti研究实验室的ActiveBadge系统采用红外线技术实现室内定位技术,有直线视距和传输距离较短两大主要缺点,使得它在室内定位中的效果较差。IEEE802.11:RADAR是一种基于射频的室内定位系统,采用标准的802.11网络对空间进行定位,该系统采用经验测试和信号传播模型相结合的方式,易于安装、需要很少基站,能采用相同的底层无线网络结构,但系统总精度不高。超声波:ActiveBat是采用超声波定位的典型例子,它采用超声波时延信号进行定位,其整体定位精度较高,但需要大量的底层硬件设施投资,成本太高。无线射频技术RFID定位是一种基于信号强度的定位技术,它使用接收到的信号强度指示(ReceivedSignalStrengthIndicator,RSSI)来确定待定位物体的位置。无线射频识别RFID具有其独特的非接触性,以及非视性(不用在可视范围内),但它仍有占用无线电频谱、有电磁干扰和电磁辐射等缺点。除了上述这些方法,最新的一个研究热点是基于LED白光的可见光通信技术的室内定位。白光LED用电场发光、低电压供电,光效高、寿命长、安全性好、稳定性高、低功耗、无辐射、抗震、可靠、耐用,是理想的照明光源。白光LED的响应时间短、具有高速调制特性,使得白光LED还可以进行通信,实现照明和通信双重功能,使可见光通信技术(VisibleLightCommunication,简称VLC)因运而生。与传统射频通信以及其它无线光通信系统相比,可见光通信技术的发射功率高,且不占用无线电频谱、无电磁干扰和无电磁辐射、节约能源[2],使得它成为室内定位中一个研究的热点。本文的安排和作者的工作概要经过老师和学长学姐们的努力,实验室里已经初步搭建好一个可见光通信系统平台,其中三个LED灯两两相距20cm,成一个等边三角形,三角形中间放置一个光电探测器,光电探测器可以接收来自三个LED灯的光强信号并通过FPGA模块形成位置信息,位置数据再传入电脑上位机,电脑上位机根据不同的位置发送不同位置的广告信息,实现在不同位置传输和显示不同广告信息的功能。然而由于电脑端比较笨拙,不利于携带,考虑到未来手机设备,移动电子商务等发展起来,应用在移动平台上更有宽广的应用前景,于是本文提出了一种用安卓移动设备作为上位机,通过有线的方式实现FPGA的数据接收和传输。本文第2章详细地讲述可见光通信系统的基本组成以及系统的原理。第3章介绍通信平台的建立,包括FPGA模块的工作原理以及模块的接口类型、安卓移动平台、安卓开发平台及实验中安卓软件的具体代码。第4章介绍应用于本次实验的两个开发模块——FT311D模块及FT232RL模块、电脑端及FPGA模块与安卓设备之间,检验软件的可行性
可见光通信技术及系统光通信的发展历程光通信的关键突破1880年,贝尔把太阳光当作光源,以大气为传输媒质,用硒晶体接收光,成功实现光电话,通话距离最远达到213米。1881年,贝尔用一篇题为《关于利用光线进行声音的产生与复制》的论文,报导了他的光电话装置。1960年,美国著名科学家梅曼(Meiman)发明了世界上第一个红宝石激光器。激光器发出的激光谱线很窄,比传统的光源要窄好多,而且强度又高、方向性又好、相干性还好,是极为理想的相干光源,作为信息的载体是最好不过的了。在光纤发展起来之后,不可见光通信系统渐渐成熟起来。LED照明技术的兴起最近几年,随着发光二极管LightEmittingDiode,LED半导体器件的照明技术发展迅速,将信号调制到LED灯上,使LED具有照明和通信两种功能,实现可见光传输信息的技术也逐渐发展起来。随着工艺的不断进步,白光LED光源得以生产。白光LED灯的出现使高效率照明技术前进了一大步,也使可见光通信得以有载体传输信息。白光LED采用电场发光和低电压供电,具有寿命长、光效高、稳定性高、安全性好、无辐射、低功耗、抗震、可靠耐用等特点,几乎综合了各种传统光源的优点,被誉为2l世纪新固体光源时代的革命性技术。用白光LED来传输超高速数据是明智的选择。白光LED可以在波长450nm至470nm的蓝光LED上覆盖一层YAG淡黄色荧光粉涂层制成,这种黄色磷光体是掺了铈的钇铝石榴石(Ce3+:YAG)晶体磨成粉末后和一种稠密的黏合剂混合制成的。光通信基本概念及其优点光通信指的是用光作为信息的载体来传递信息,它是由电通信发展而来。在光通信以前基本是利用电通信。光通信技术是与成熟的电通信技术密不可分的。现代的光通信技术基本还是电通信技术和光子技术相结合的技术。光通信技术与电通信技术相结合,使得通信技术在电通信技术的基础上多加上了光通信的优点。这些优点有:容许的频带很宽,在不同频带上传输都可以。传输带宽较大,容量较大。损耗较小,经中继后可传输的距离很长。误码率较小。抗电磁干扰。安全性高,保密性好。节约金属材料。可见光通信的工作原理传统不可见光无线通信技术可见光是电磁波谱中人眼可以感知的电磁波部分,不可见光是指除可见光外其他所有人眼所不能感知的电磁波,包括无线电波、微波、红外光、紫外光、x射线、γ射线、远红外线等。利用950nm近红外波段的红外光来通信的技术叫红外通信技术。红外通信先将二进制信号在发送端调制成一系列脉冲串信号,信号传入红外发射管中,由红外发射管发射红外信号,信号经过红外信道传输到接收端,接收端将接收到的光脉冲转换回电信号。电信号经放大、滤波等处理后,进入解调电路进行解调,还原成二进制数字信号,最后输出。利用在200nm到280nm之间的紫外光通信来。紫外光通信基于大气散射和吸收,基本原理是以日盲区的光谱为载波,将信息电信号在发射端调制,然后加载至紫外光载波上,信号通过大气散射作用传播,信号到达接收端时,接收端接收紫外光束,经解调转换成原信号。紫外光通信在复杂环境下可近距离通信,且抗干扰、安全性好。射频频段的无线电波应用最广泛,无线电技术利用导体中电流强度的改变产生无线电波,通过把信号调制到无线电波上进行传输,在接收端,无线电波会引起电磁场变化从而在导体中产生电流,将信号从电流中解调出来就实现了通信。可见光通信技术可见光通信(VisibleLightCommunications,VLC)技术指通过把高速信号调制到半导体器件LED灯上进行传输,用光电探测器接收光载波信号,因肉眼察觉不到光LED灯的高速调制,使得LED灯同时具有照明和通信两个作用。室内可见光通信是在LED灯发展起来之后新兴的一门技术。通信系统发射端将信号调制成电信号,再通过LED灯转换成光信号传输。接收端用光电探测器将可见光信号接收并转化成电信号,最后解调信号读取。传统光通信利用不可见光,一般是无线电磁波传播信息。由于传统光通信已经很成熟了,相匹配的标准也是很受业界支持采用。传统的光通信可以利用中转站传输到很远的地方,而且覆盖面特别广。但无线电占用无线电磁谱,高频的无线电磁波还容易被电子设备干扰,且对人体有电磁辐射伤害,这些缺点使得可见光通信的优点显现出来。可见光通信不占用无线电磁谱,没有电磁干扰和电磁辐射,虽然传输距离受到限制,但从另一方面讲可以使得信息不泄漏,保证了信息的安全。可见光通信的通信速度可达兆每秒或百兆每秒,通过LED灯照射就可以传输信息,通信速率可以保证多台电脑同时使用。本节主要介绍了光通信的发展以及可见光通信的工作原理,与传统光通信不同的是,可见光通信系统所用的可见光波长范围为紫色的380nm到红色的780nm,这也体现了可见光通信系统既能用来照明,又能用来通信的特点。下一节我们会讨论可见光通信在室内定位技术里的应用。室内可见光通信系统典型室内可见光通信系统基本组成图STYLEREF1\s2SEQ图\*ARABIC\s11室内可见光通信系统结构示意图如图所示为室内可见光通信系统的典型结构图,该系统包含白光LED光源、可见光无线集线器(VLCHub)、计算机、可见光通信适配器(VLCAdapter)、光电探测器(PD)及相应信号处理单元等。计算机发出信息,通过适配器把信息传输到天花板上的光电探测器,探测器将光信息转换成电信号,在传入无线集线器。集线器将信号处理后通过光源发射出去,到达计算机接收端时,信号被解调出来,传入计算机实现通信。可见光通信系统包括下行链路(downlink)和上行链路(uplink)两部分,两条链路都包括发射和接收。由白光LED光源和信号处理单元完成发射部分。LED主光源在天花板上,每个用户的适配器上还都有一个用户光源。室内可见光通信定位系统如图所示为室内可见光通信定位系统结构图:图STYLEREF1\s2SEQ图\*ARABIC\s12室内可见光通信定位系统结构图室内可见光通信定位系统包括LED灯、光电探测器、FPGA信号处理模块等。室内可见光系统也有上行链路和下行链路。其中上行链路由用户发送信息至服务器,下行链路由服务器发送信息至用户。在实验中有三个两两相距20cm的LED灯在光电探测器上方,光电探测器放置于三个LED灯之间。下行链路中,LED灯发出的光经过不同的距离传输到光电探测器上,接收到来自三个不同的LED灯发出的光,探测出距离三个LED灯的距离信息,把距离信息传输到FPGA模块,FPGA模块把信息进行处理。在FPGA模块中,以其中一个LED灯为原点,三个LED灯组成的三角形的一边为x轴,建立坐标系,把接收到的距离信息转化成位置坐标信息并输出,通过有线的方式传输至终端显示,完成下行链路。在实验中用安卓系统来作为终端来显示数据,同时安卓系统还可以把用户的信息还可以发送回服务器,也就是可以实现上行链路。但安卓可以用多种方式连接。大致有以下三种方式:用音频接口连接。音频接口传输速率不快,而且以音频信号为主,在这里不是很适合用作信号传递的接口。用蓝牙连接。蓝牙可以无线传播,速率也可以很快,但蓝牙一旦遇到人多的时候就有可能连接不上。用USB接线连接。USB接线可以连接到安卓上,虽然是用有线的方式,但它克服了多个终端同时连接的问题,传输速率可以很快。是实验中比较理想的连接方式。可见光光通信系统的特点与普通光无线通信和射频通信相比,可见光通信具有以下突出特点[4]:1) 可见光无毒无害;2) 可见光可以通过室内LED灯安装,方便快捷。3) 发射功率高。普通光无线通信如果发射功率一高会损害人的眼睛,因而发射功率不能太高。而可见光无害,发射功率较高。本章介绍可见光通信系统的组成及室内可见光通信定位系统的组成,是本实验所依赖的系统,也是实验的基础。下一章将介绍可见光通信系统中信号处理的模块。
通信平台的建立信号处理模块——FPGA模块结构与接口FPGA基本组成FPGA是英文Field-ProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL可编程化阵列逻辑ProgrammableArrayLogic、GAL通用阵列逻辑GenericArrayLogic、CPLD复杂可编程逻辑器件ComplexProgrammableLogicDevice等可编程器件的基础上更新一步发展的产物。现场可编程门阵列是专用集成电路(ASICApplication-specificintegratedcircuit)领域中的一种半定制电路,有定制的优点,且与传统可编程器件相比,它还有多种门电路它的出现不但解决了定制电路的不足,而且克服了原有可编程器件门电路数有限的缺点。FPGA采用逻辑单元阵列LCA(LogicCellArray),内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。FPGA的特点1) FPGA可以设计ASIC电路,不需要生产芯片。2) FPGA可作为试样测试全定制或半定制ASIC电路。3) FPGA内部有极其丰富的触发器和I/O引脚。4) FPGA的设计周期很短、开发费用很低、风险非常小的器件。5) FPGA用了高速CHMOS工艺,功耗低且兼容CMOS、TTL电平。FPGA的配置模式FPGA用芯片中的RAM存入程序,根据程序来设置工作状态,当FPGA工作是,需要在RAM中写入程序。程序可以配置FPGA的模式,不同的配置模式用不同的编程方式写入。加电时,FPGA芯片将EPROM(ErasableProgrammableReadOnlyMemory)中的数据读入芯片内的编程RAM中,完成后,FPGA开始工作。断电后,FPGA内部逻辑关系消失,这使得FPGA可以重复使用。FPGA编程无须专用的编程器,用通用的EPROM或PROM就可以。要改变程序功能时只需换一片EPROM就可以了。所以,FPGA可以通过不同的程序来使用不用的电路功能,这是FPGA特别灵活的地方。FPGA器件需要每次都配置一次,所以配置下载方式也有不同,分为以下三种:主动串行配置方式(AS)和被动串行配置方式(PS)和JTAG联合测试工作组(JointTestActionGroup)配置方式。主动串行AS配置方式由FPGA器件引导配置过程,所使用的器件是新型低成本器件,如EPCS1、EPCS4。器件的芯片包含永久性存储器和四个引脚接口。AS配置芯片有一个串行接口来存取数据,FPGA主动从串行接口读取数据。AS配置方式可以通过DATA0引脚把数据传入FPGA,而且与DCLK输入同步,每一个DCLK时钟周期传输一位数据。由于这种模式由FPGA主动去配置接口,因而这种配置方式称为主动串行配置方式,即AS配置方式。它与FPGA的接口为以下简单的4个信号线:.串行时钟输入DCLK:.AS控制信号输入ASDI;.片选信号nCS;.串行数据输出DATA0。被动串行PS配置方式被动串行PS配置方式是由外接计算机或控制器来控制配置过程的配置方式,这种方式可以使用下载电缆、加强型配置器件等配置器件或智能主机来配置,配置时DATA0引脚把数据传入FPGA,在DCLK上升沿锁存,每一个时钟周期传入一位数据。在这种配置方式下,由于FPGA被动接收配置时钟、命令和数据,发出配置状态信号等,因而这种配置方式被称为被动串行配置方式,即PS配置方式。与FPGA的信号接口:.配置时钟DCLK;.配置数据DATA0;.配置命令nCONFIG;.状态信号nSTATUS;.配置完成指示CONF_DONE。JTAG配置方式JTAG是国际标准的测试协议,主要用于测试芯片。JTAG接口用联合边界扫描接口引脚,配置可用Altera下载电缆或主控器。JTAG接口由四个必需的信号TDI、TDO、TMS和TCK以及一个可选信号TRST组成,其中:.TDI用于测试数据的输入;.TDO用于测试数据的输出;.TMS模式控制管脚,决定JTAG电路TAP状态机的跳变;.TCK测试时钟;.TRST:如果JTAG电路不用,可以连到GND。FPGA的配置过程FPGA正常工作时,配置数据存储在StaticRandomAccessMemorySRAM中,SRAM单元也被称为配置存储器configureRAM。SRAM存储器数据易失,在FPGA上电后,配置数据需要由外部电路驱动重新载入到芯片内的配置RAM中。芯片配置完,寄存器和I/O管脚需要初始化initialization。初始化后芯片才能正常工作。FPGA通电后进入配置模式configuration,接着配置数据以每一个时钟周期一个数据传入FPGA。数据传入完毕后,FPGA进入初始化模式。初始化完毕,进入用户模式user-mode。当FPGA在配置模式和初始化模式下时,I/O管脚处于高阻态(或内部弱上拉状态),进入用户模式后,用户I/O管脚就可以正常工作了。在可见光通信系统中,从光电探测器中探测到的光强信息被输送入FPGA里,FPGA配置的程序里可以将接收到的光强信息经过程序运算,得出光电探测器所在的坐标并输出。输出的接口为UART串行接口,将在下一节介绍。UART异步串行通信口UART通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter)也称异步串行通信口,涵盖了RS232、RS449、RS423、RS422和RS485等接口标准规范和总线标准规范,这些标准规定了通信接口的传输速率、电气特性、机械特性和连接特性等。在实验中我们所用的标准是RS232。在RS-232标准中,字符是以一个接一个的串行(serial)比特串传输的。这种标准需要的传输线少,而且配线非常简单、传送距离比较远。编码格式常用的是异步起停(asynchronousstart-stop)格式,这种编码格式由一个起始比特(bit)开始,后面有七或八个数据比特,然后有奇偶校验比特,由一或两个停止比特结束。这种编码标准,如果要发送一个字符,那么至少需要十比特,但也有优点,那就是传输速率、发送信号的速率全都以十划分。通常代替异步起停方式可以使用高级数据链路控制协议(High-LevelDataLinkControl或简称HDLC)。RS-232标准中,逻辑一和逻辑零电压级数被定义了,标准传输速率和连接器类型也都确定下来了。信号大小在正负3V到15V之间。RS-232规定接近零的电平无效;逻辑一用负电平表示,有效负电平的信号状态称为传号(marking),意为OFF;逻辑零用正电平表示,有效正电平的信号状态称为空号(spacing),意为ON。供电电源的不同,可能导致不同的电平,±5V、±10V、±12V和±15V都是可能的。本节主要介绍可见光通信系统中信号处理模块FPGA及模块所使用的串口协议RS232。实验用需要把信号从FPGA中传输出来,传入到安卓移动平台里,因而还需对安卓移动平台做一个介绍,这部分将放在下一节。安卓移动平台为了实现FPGA模块与安卓的连接,我们需要先了解安卓。本节介绍安卓系统的特点和架构,及如何搭建安卓开发平台。安卓系统的特点Android是一种基于Linux内核的操作系统,系统开放源代码,比较自由,主要应用于移动设备,如智能手机和平板电脑等,是Google公司及手机联盟联合开发的。安卓作为移动平台上的载体已经越来越深入到我们的生活。安卓平台有以下五种特点:1) 生态系统的开放性,开发的平台允许任何第三方加入。2) 打破应用程序边界。安卓系统中各个应用均可通过标准API调用核心移动设备功能,系统功能可被应用调用,应用也可以被应用调用。3) 应用程序平等性。每个应用程序都没有等级之分,任何应用都能被替换或扩展。4) 应用支持WEB嵌入,方便应用程序通过web展示应用内容。5) 支持后台运行。安卓基于Linux内核开发,支持多任务运行。安卓系统的架构安卓涵盖核心库,核心库里提供JAVA编程语言核心库里的绝大多数功能。安卓采用了分层的设计构架模式,其系统架构图如下:图STYLEREF1\s3SEQ图\*ARABIC\s11安卓系统架构图最上一层是核心应用程序。每一版Android发布的同时都会带有一系列核心应用程序包,里面包含了SMS短信、联系人管理器、日历、email、地图、浏览器等。这些应用用JAVA语言编成。除了这些应用,第三方开发的应用也属于这一层。应用程序框架开发人员可以完全访问核心应用程序所用的API框架。这种架构设计使组件很容易就可以被重用,任何程序都可以使用功能快。同时这种重用机制也使得应用可以十分方便地被替换。每个应用背后还有一系列服务和系统,如下:丰富而可扩展的视图(Views)。试图可用来构建应用程序。涵盖了网格(grids)、列表(lists)、按钮(buttons)、文本框(textboxes)甚至是可嵌入式的web浏览器。内容提供器(ContentProviders)。它使应用程序能够访问或者共享其他应用程序的数据。资源管理器(ResourceManager)。它能访问非代码资源,如本地字符串、图形和布局文件(layoutfiles)等。通知管理器(NotificationManager)。它让应用程序可以在状态栏中显示自定义的提示信息。活动管理器(ActivityManager)。它用来管理应用程序生命周期并提供常用的导航回退功能。程序库Android有C/C++库,这些库可以被调用。它们为开发者提供了服务。其中核心库如下:系统C库——一个从伯克利软件套件(BSDBerkeleySoftwareDistribution,是Unix的衍生系统)继承而来的标准C系统函数库(libc),专门为基于嵌入式(embedded)Linux的设备定制。媒体库——基于PacketVideoOpenCORE;该库能够支持多种常用音频、视频格式,而且支持静态图像文件。编码格式有多种,包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。SurfaceManager——用来管理和显示子系统,同时提供2D和3D图层的无缝融合。LibWebCore——一个web浏览器引擎,支持Android浏览器和可嵌入史web视图。SGL——底层2D图形引擎。3Dlibraries——基于OpenGLES1.0APIs实现;3D硬件加速或高度优化的3D软加速都基于它。FreeType——用于显示位图(bitmap)和矢量(vector)字体。SQLite——一个轻型关系型数据库引擎。Android运行库Android拥有一个核心库,而多数的程序都运行在自己的进程里,各自拥有一个Dalvik虚拟机。Dalvik的存在使多线程运行成为可能。Android的核心系统服务依赖于Linux内核,而Linux内核作为硬件和软件栈间的抽象层存在。搭建安卓开发平台Eclipse为了开发安卓软件以显示接收数据的坐标信息,本节内容介绍如何安装Eclipse安卓开发平台以及如何在电脑端设置开发环境。Eclipse是一个基于Java的开放可扩展开发平台。软件本身只是框架和服务,但通过插件和组件可以构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。安装过程如下:安装Java运行环境JRE和JDK;安装EclipseIDEforJavaEEDevelopers;安装AndroidADT(eclipse插件),如图:图STYLEREF1\s3SEQ图\*ARABIC\s12eclipse软件截图配置Android模拟器。由于Eclipse可选用的安卓模拟器较多,实验中选用Genymotion,以保证运行流畅。图STYLEREF1\s3SEQ图\*ARABIC\s13电脑端上的安卓虚拟机截图至此已经安卓平台初步搭建好。下一步就是利用开发平台开发出能够接收数据的软件。安卓软件开发接收模块利用FPGA传输光电探测器的位置信号,需要从FPGA模块传输出光电探测器的数据信息,再接入安卓。这里我们需要用JAVA语言编写串口接收模块的程序。程序的第一步为设置串口接收数据结构。主要有publicvoidonClick(Viewv){ if(false==bConfiged){ bConfiged=true; uartInterface.SetConfig(baudRate,dataBit,stopBit,parity,flowControl); savePreference(); } if(true==bConfiged){ configButton.setBackgroundColor(0xff888888);//color //GRAY:0xff888888 configButton.setText("Configured"); }}程序的第二步为接收数据模块,用于接收来自串口的数据。首先需要设计一个handler来接收message。再设计一个函数appendData来读取数据。ReadDataView用来将数据从字符串型转化成浮点型,方便显示。关键代码如下:/*创建handler*/finalHandlerhandler=newHandler(){ @Override publicvoidhandleMessage(Messagemsg){ for(inti=0;i<actualNumBytes[0];i++){ readBufferToChar[i]=(char)readBuffer[i];} appendData(readBufferToChar,actualNumBytes[0]); readDataView(readBufferToChar,actualNumBytes[0]);}};/*创建类handler_thread*/privateclasshandler_threadextendsThread{ HandlermHandler; handler_thread(Handlerh){mHandler=h;} publicvoidrun(){ Messagemsg; while(true){ try{Thread.sleep(200); }catch(InterruptedExceptione){} /*uartInterface为FT311UARTInterface.java的类,类中的ReadData函数接收数据*/ status=uartInterface.ReadData(4096,readBuffer,actualNumBytes); if(status==0x00&&actualNumBytes[0]>0){ msg=mHandler.obtainMessage(); mHandler.sendMessage(msg);}}}}主要的程序在附录II里数据转换模块由于接收的数据为字符类型,在显示过程中需要把字符类型转化为整型类型,以方便显示。我们规定为以三个LED灯组成的等边三角形的一条边作为x轴建立直角坐标系,三个LED灯的距离为两两20cm,从FPGA模块里传入的数据精确到小数点后两位,传入的数据以XX.XX,XX.XX/n的形式输入。我们编写一个新的函数,命名为readDataView。用字符串长度和特殊的记号来辨别输入信号,信号一旦满足上述格式,就把字符串转化成浮点数。具体程序如下: publicvoidreadDataView(char[]data,intlen){ if(len==12&&data[2]==46&&data[5]==44&&data[8]==46){ int[]readBufferToInt; readBufferToInt=newint[11]; for(inti=0;i<len;i++){ readBufferToInt[i]=data[i]-48; } floatDataX=readBufferToInt[0]*10+readBufferToInt[1]+readBufferToInt[3]/10+readBufferToInt[4]/100; floatDataY=readBufferToInt[6]*10+readBufferToInt[7]+readBufferToInt[9]/10+readBufferToInt[10]/100; }显示模块数据接收并转化之后,还要一部分为软件接收位置信息并显示部分,这里我们编写第二个Activity来显示,命名为CanvasActivity.java。其中用到的二维画图类Canvas画布。Activity中先获取屏幕的高度screenHeight、宽度screenWidth、分辨率densityDpi等信息。再画出坐标轴,其中用到了canvas.drawLine、canvas.drawText等。其中为了使Canvas实时刷新,在程序中我们还用到invalidate()函数。这个函数能使Canvas画布失效,这时候系统会自动重新调用onDraw函数来重绘Canvas,从而起到刷新的作用。主要的程序在附录中:本章介绍安卓移动平台的基本框架以及在电脑端搭建好安卓软件开发平台。这些部署工作做好之后,下一步实验中需要测试如何能将安卓与串口连接上。
安卓设备的连接与通信安卓接口为USB口,而FPGA模块接口为串口,为了使安卓与FPGA模块能够连接到一起,实验中需要找模块使它们连接到一块。通过市场调研及比较,为了实现FPGA模块与安卓设备的连接,可以选用FT311D模块。同时,为了测试模块的连接性,实验中先用电脑端模拟FPGA模块与安卓设备连接进行调试。如果安卓可以与电脑端连接并调试,那么安卓与FPGA模块的连接就容易得多,而且更有利于分辨错误的来源。下一节将会详细介绍FT311D模块的基本情况。FT311D模块FT311D模块介绍FT311D模块是英商飞特帝亚有限公司(FTDI)推出的可用在多介面的安卓主控IC,可即时连接由安卓USB到GPIO、UART、PWM、I2C主控、SPI从或SPI主控介面。FT311D不需要固件,也不需要驱动,有APK应用程序就可以实现数据通信,不用担心安卓系统升级,使用简便。模块芯片图如下:图STYLEREF1\s4SEQ图\*ARABIC\s11-aFT311D模块图正面图4-1-bFT311D模块图背面FT311D产品特点模块中含有两个USB口,一个USBA型口,一个microUSB口。USB口为USB2.0全速HOST,速率可以达到12Mbit/s。模块电源口入口处设置了500mA的自恢复保险丝,能起到保护作用。模块上有四个直径3mm的安装孔,利于固定。FT311D的长*宽*高为50mm*29mm*12mm,工作温度在-40°C至85°C之间,供电电源为3.3V,IO口兼容5V电平。在48MHz下工作时,吸收电流为25mA。待机模式下耗电为128µA。芯片能够将USB端口桥接到六个不同的接口类型,即GPIO,UART,I2C,SPI从控端和主控端。FT311D在物联网、仪器仪表、车载、最新网银U盾、医疗保健、教育电子等方面具有广泛应用,是连接智能手机或平板USB转串口的最佳方案。FT311D模块可以实现连接安卓的功能,但实验测试中需要用电脑端来模拟FPGA开发板与安卓移动设备的连接,因而需要寻找一个模块实现电脑端通过FT311D模块来连接到安卓上。FT311D开发板只能用杜邦线连接,电脑端可以用串口或USB来连接。根据这一点并经过市场调研和比较,选用FT232RL模块使电脑端的USB接口转成串口连接到FT311D开发版上,就可以实现电脑端模拟FPGA,从而连接到安卓设备上来调试软件。下面我们来介绍一下FT232RL模块。FT232RL模块FT232RL模块介绍FT232RL模块是由英商飞特帝亚有限公司FTDI公司推出的实现USB转TTL/CMOS、GPIO模块。其模块图如下:图STYLEREF1\s4SEQ图\*ARABIC\s12FT232RL模块图FT232RL产品特点串行接口RS232是单个设备与电脑相连接的最常用的方式,因其硬件连接实现简单。串行接口RS232是一种低速串行通信中增加通信距离的单端标准。模块芯片采用FT232RL,数据传输稳定,波特率最高可达3Mbit/s。FT232RL芯片里含有EEPROM,可用于配置I/O管脚以及存储USB、VID、PID、序列号和产品描述信息等。模块采用带有四个插针的microUSB连接器,数据线与microUSB接口的安卓手机或平板通用,同时还能保证连接器的稳固性。模块使用500mA自恢复保险丝,保障在短路时也不会损害电脑;模块芯片整合了电平转换模块,I/O接口的电平支持5V至2.8V的宽范围;模块支持三种供电方式,5V、3.3V和外部输入1.8至5V,从而能够以5V、3.3V、2.8V、1.8V的CMOS驱动输出和TTL输入。模块上为每组电压都设置了滤波电容,在电压输出口还设置了一个高品质的钽电容,保障电源的品质。模块上设置三个指示灯,分别为电源指示灯(红色)、收和发指示灯(黄绿色)。FT232RL模块上所有的信号都有引出,方便功能扩展。模块上安装了四个螺丝固定孔,方便安装使用。模块上USB信号采用高速差分布线方式,保障数据的可靠传输。本节跟上两节介绍了实验中所用到的两块芯片,分别为FT311D和FT232RL。下一节将进行连接测试。电脑端与安卓设备之间的连接与通信电脑端、模块与安卓的连接本节内容介绍FT311D模块与FT232RL模块及安卓之间的连接与通信,实现互相收发数据功能。在实验中电脑端代替FPGA实现发送数据的功能。具体连接步骤如下:第一步:在安卓设备上安装FT311DChinese.apk;第二步:设置FT311D开发板拨码开关为UART串口调试模式(011);第三步:连接电脑、FT311D模块、FT232RL模块及安卓设备。具体连接示意图如图。图图STYLEREF1\s4SEQ图\*ARABIC\s13安卓终端和计算机连接示意图②①④③计算机模拟FPGAFT232RL模块FT311D开发板安卓设备5V电源适配器具体连接步骤如下:首先连接USB转TTL电平模块FT232RL和FT311D开发板间的杜邦线,FT232RL模块的发送端与FT311D模块的接收端相连,FT232RL模块的接收端与FT311D模块的发送端相连,FT232RL模块与FT311D模块彼此共地,连接线序参照开发板背面图表。其次用USB接线把FT232RL模块与计算机相连,FT232RL模块的插口为MicroUSB口。再用5V电源适配器通过USB接线给FT311D开发板供电。最后用USB数据线连接FT311D开发板和安卓设备,数据线的USBA型口与FT311D开发板相连,MicroUSB口与安卓设备相连,如图:图STYLEREF1\s4SEQ图\*ARABIC\s14FT311D模块与FT232RL连接示意图电脑端与安卓设备连接测试连接完毕后,如果连接无误,安卓设备会自动弹出FT311DChinese.apk应用程序串口通信测试界面。实验中所用的安卓设备是三星I9508,设置图如下:图STYLEREF1\s4SEQ图\*ARABIC\s15安卓测试软件示意图这时需要在电脑端安装FT232RT的驱动程序,开启SSCOM32.exe应用程序调试收发数据。SSCOM32程序界面如下图:图STYLEREF1\s4SEQ图\*ARABIC\s16电脑端串口调试助手软件示意图从电脑端的SSCOM32程序中输入“helloandroid”,点击发送按钮,发送至安卓设备。安卓设备显示如下:图STYLEREF1\s4SEQ图\*ARABIC\s17安卓测试软件测试图从电脑端SSCOM32勾选定时发送,电脑端就会定时连续发送“helloandroid”至安卓设备。安卓设备中的程序显示为:图STYLEREF1\s4SEQ图\*ARABIC\s18安卓测试软件测试过程图在安卓设备中输入“hiworld!”,点击write发送至电脑端,电脑端SSCOM32程序显示为:图STYLEREF1\s4SEQ图\*ARABIC\s19电脑端串口调试助手调试过程图至此安卓与电脑端连接测试成功,说明安卓设备与FT311D的串口通讯连接是可行的。本节测试了FT311D连接安卓与电脑端,实现了串口通讯连接,结果是成功的,下一节实验中将会测试FT311D连接安卓与FPGA模块。FPGA模块与安卓设备之间的连接通信在测试FT311D与安卓和FPGA模块的通信连接之前,还需对安卓应用软件加以改进,使软件可以显示从FPGA模块传输而来的坐标位置信息以及动态的该坐标在坐标系中的移动图。因而下一节先讨论安卓具体的软件开发FPGA与安卓的连接在上节实验中,我们用FT232RL在电脑端上测试FT311D模块,实验测试的结果是FT311D可以准确地接收到来自电脑端的数据。在这一节里,我们需要使FPGA模块与安卓相连,必须用FT311D模块,而FPGA模块里的逻辑电平可以起到发送数据的作用,因而可以使FT311D模块直接与FPGA模块相连接。连接顺序如下:FT311D模块接收端与FPGA模块发送端相连接,FT311D模块发送端与FPGA模块接收端相连接,两模块共地。5V电源适配器与FT311D模块相连供电;FT311D模块用USB线与安卓设备相连接。连接图如下:图STYLEREF1\s4SEQ图\*ARABIC\s110FPGA与安卓通过FT311D模块连接示意图图图STYLEREF1\s4SEQ图\*ARABIC\s111FPGA模块与安卓通过FT311D模块连接示意图①③②FPGA模块FT311D开发板安卓设备5V电源适配器FPGA与安卓的连接测试实验中事先在FPGA模块里写入了程序,使模块不停的发送69。在FPGA模块与安卓相连接完毕后,如果配对成功,安卓设备会自动弹出UARTLoopbackActivity.apk串口通信测试界面,本次实验中所用的安卓设备是三星I9508,安卓弹出的串口通信测试界面图如下:图STYLEREF1\s4SEQ图\*ARABIC\s112安卓测试软件图点下configure按钮,确定参数设定为,波特率为9600,数据位为8,校验位为0,停止位为1。我们看到安卓软件中接收区不停地在显示交替的69,证明连接成功。测试中按下CanvasDataView按钮可以实现坐标系的显示。图STYLEREF1\s4SEQ图\*ARABIC\s113安卓软件测试图图STYLEREF1\s4SEQ图\*ARABIC\s1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高尔夫球场设计与建造
- 2024-2025粤教粤科版一年级下册科学期中考试卷参考答案
- 安全生产标准化
- 税务师考试涉税服务实务练习题及答案2-2023-背题版
- 2025年公司、项目部、各个班组三级安全培训考试试题含答案
- 2025年部门安全培训考试试题附参考答案【能力提升】
- 2024-2025新员工入职前安全培训考试试题答案新版
- 25年公司三级安全培训考试试题【培优】
- 2025安全管理人员安全培训考试试题及答案典型题
- 2025年全员安全培训考试试题附答案【基础题】
- 2024中考英语必考1600词汇分类速记表
- 江苏泰州市泰兴经济开发区国有企业招聘笔试题库2024
- 2024年风力发电运维值班员(技师)技能鉴定考试题库-下(判断题)
- DL∕T 1709.3-2017 智能电网调度控制系统技术规范 第3部分:基础平台
- 考核办法和考核方案
- 化妆品生产OEM合同书
- 海上CANTITRAVEL平台桩基施工关键技术应用v7
- 有色金属冶金概论课程教案
- 华为MA5800配置及调试手册
- 中国生产安全行业市场运行动态及投资发展潜力分析报告
- 2023-2024年电子物证专业考试复习题库(含答案)
评论
0/150
提交评论