毕业设计(论文)-基于安卓控制的智能无线开关

上传人:na****u 文档编号:57279015 上传时间:2022-02-23 格式:DOC 页数:81 大小:3.50MB
返回 下载 相关 举报
毕业设计(论文)-基于安卓控制的智能无线开关_第1页
第1页 / 共81页
毕业设计(论文)-基于安卓控制的智能无线开关_第2页
第2页 / 共81页
毕业设计(论文)-基于安卓控制的智能无线开关_第3页
第3页 / 共81页
点击查看更多>>
资源描述
仲恺农业工程学院毕 业 设 计基于安卓控制的智能无线开关姓 名 院(系) 自动化学院专业班级 自动化101班学 号 指导教师 职 称 讲师论文答辩日期 2014年 5月 25日仲恺农业工程学院教务处75学生毕业论文(设计)承诺书本人郑重承诺:所呈交的毕业论文(设计)是在指导老师的指导下进行的研究工作及取得的研究成果,论文中参考他人的文献资料均已明确标注出,论文中的结论和结果为本人独立完成,没有抄袭、剽窃他人研究成果。毕业论文作者: 签字日期: 摘 要本课题研究的是基于安卓手机控制的智能无线开关设计。基于android手机平台和ARM核心板,借助于蓝牙技术,设计和实现了一种无线控制开关系统。实现通过手机端无线控制ARM开发板端的LED灯的亮灭功能。Android手机作为客户端发送蓝牙信号,蓝牙模块HC-06作为服务器端接收信号,并向服务器端的控制器ARM核心板传递信号。双方通过串口进行通信。ARM控制器通过判断是否接收到信号从而控制核心板上的LED灯的亮灭。本文详细介绍了基于安卓智能手机的无线开关控制系统的设计以及实现。从课题的背景开始讨论,接着到开发平台的搭建,再到系统整体方案的设计,最后对整个设计进行总结,分析出本系统的优势以及出现的不足。关键词:android 蓝牙 无线通信 ARM目 录1 绪论1前 言11.1 近距离无线通信技术概述21.3 课题的来源背景51.4国内外研究状况61.5系统总体方案61.5.1 设计要求61.5.2 硬件的选取:61.5.3软件的设计:72 开发环境的搭建82.1 Linux开发环境搭建82.1.1 关于Linux系统82.1.2 关于GNU82.1.3 利用Vmware虚拟机搭建Linux开发环境82.2 安卓应用开发环境搭建102.2.1 关于Eclipse软件102.2.2 android SDK开发环境搭建102.2.3 android NDK 开发环境搭建113系统硬件的选取133.1关于ARM处理器133.2 GEC210开发板简介153.3 蓝牙HC-06模块的简介173.3.1 HC-06模块特征173.3.2 AT 指令集 (对蓝牙模块进行测试)194 系统软件的设计224.1 相关软件编程技术224.1.1 嵌入式C编程224.2 系统底层软件的设计224.2.1 LED灯驱动程序设计224.2.2 LED灯测试程序设计264.2.3 UART串口配置284.3 系统上层软件的设计304.3.1 android应用程序工程分析304.3.2 智能手机端的应用程序设计314.3.3 GEC210开发板端的应用程序设计375 系统整体的调试425.1 系统软硬件的测试425.2 结论与总结45参 考 文 献46Abstract47附录:48附录一:led_drv.c48附录二:led_test.c50附录三:AndroidApp工程源文件:523.1 主界面源代码MainActivity.java523.2 控制界面源代码SearchBlueTooth.java553.3 “关闭APP”类源代码SysApplication.java603.5 主界面布局文件:activity_main.xml613.6 控制界面布局文件searchbluetooth.xml63附录四:ArmApp工程源代码:634.1 主界面源文件MainActivity.java634.2 主界面布局文件activity_main.xml654.3 Jni源代码文件:654.3.1 C库源文件ArmApp.cpp654.3.2 头文件com_jhhu-armapp_MainActivity.h694.3.3 Android.mk704.3.4 Application.mk70致 谢71仲恺农业工程学院毕业论文(设计)成绩评定表72 1 绪论前 言随着移动互联网平台的发展,搭载着免费、开源的android操作系统的android智能手机在移动平台以其市场占有率第一的优势而大放异彩。然而在现实生活中存在着许多这样的应用情况,系统需要实时传输小量的、近距离的突发信号,这就需要近距离无线通信技术。因此,基于安卓智能手机控制的无线开关系统亦是一个值得关注的领域。安卓智能手机随处可见,开关更是司空见惯,无线开关也是不再新鲜,然而基于安卓智能手机控制的无线开关确实一个较为新鲜的事物。本系统是一个基于安卓手机的智能无线开关系统,其涉及的硬件设备由处理单元(基于contex-A8内核的S5PV210处理器)、发射模块(三星智能手机)、接收模块(蓝牙接收器)、ARM核心板以及其外接电路构成。软件系统则需要用JAVA语言写两个安卓APP,一个是安装到手机端作为蓝牙信号发送的发送端,另一个则是安装到ARM核心板上作为蓝牙信号的接收端。除此之外,还需要用C语言写关于ARM板上的LED灯的硬件驱动程序以及uart串口的初始化程序。当发射模块发出信号时,接收模块会接收到无线信号,ARM处理器就会作出分析使对应的LED灯执行相应的亮灭操作,以LED灯的亮灭来模拟开关的状态。此设计需要用到C语言,JAVA语言,数字电路,模拟电路,嵌入式系统设计以及安卓编程等相关知识。1.1 近距离无线通信技术概述目前使用较广泛的近距无线通信技术是蓝牙(Bluetooth),无线局域网802.11(Wi-Fi)和红外数据传输(IrDA)。同时还有一些具有发展潜力的近距无线技术标准,它们分别是:ZigBee、超宽频(Ultra WideBand)、短距通信(NFC)、WiMedia、GPS、DECT、无线1394和专用无线系统等。它们都有其立足的特点,或基于传输速度、距离、耗电量的特殊要求;或着眼于功能的扩充性;或符合某些单一应用的特别要求;或建立竞争技术的差异化等。但是没有一种技术可以完美到足以满足所有的需求。蓝牙技术有其性价比高,普遍性(一般的智能手机都有搭载蓝牙模块)的特点,较为适合用作短距离无线通信,因此此处主要对蓝牙技术进行介绍。蓝牙技术(bluetooth)技术是近几年出现的,广受业界关注的近距无线连接技术。它是一种无线数据与语音通信的开放性全球规范,它以低成本的短距离无线连接为基础,可为固定的或移动的终端设备提供廉价的接入服务。蓝牙技术是一种无线数据与语音通信的开放性全球规范,其实质内容是为固定设备或移动设备之间的通信环境建立通用的近距无线接口,将通信技术与计算机技术进一步结合起来,使各种设备在没有电线或电缆相互连接的情况下,能在近距离范围内实现相互通信或操作。其传输频段为全球公众通用的2.4GHzISM频段,提供1Mbps的传输速率和10m的传输距离。蓝牙技术诞生于1994年,Ericsson当时决定开发一种低功耗、低成本的无线接口,以建立手机及其附件间的通信。该技术还陆续获得PC行业业界巨头的支持。1998年,蓝牙技术协议由 Ericsson、IBM、Intel、NOKIA、Toshiba等5家公司达成一致。蓝牙协议的标准版本为802.15.1,由蓝牙小组(SIG)负责开发。802.15.1的最初标准基于蓝牙1.1实现,后者已构建到现行很多蓝牙设备中。新版802.15.1a基本等同于蓝牙1.2标准,具备一定的 QoS特性,并完整保持后向兼容性。蓝牙行业是个突飞猛进的行业,2004年到2011年,蓝牙设备的综合年增长率为40。07年蓝牙设备的出货量达5 亿件,市场份额增加了71。预计到2009,出货量将达到亿件。中国是世界最大的蓝牙生产研发基地,全球80%的蓝牙企业在中国,中国80%的蓝牙企业在深圳。国内最大的蓝牙方案公司深圳市吉联通数码科技有限公司、国内最大的蓝牙电池邦凯电子有限公司、全球著名的蓝牙键盘制造商中易腾达,国内最著名的蓝牙车载创美佳等公司都深圳,但蓝牙技术遭遇了最大的障碍是过于昂贵,这就使得许多用户不愿意花大价钱来购买这种无线设备。因此,首要解决的就是蓝牙附属地位的问题和蓝牙芯片国产化的问题。随着蓝牙芯片国产化,中国确定自己的技术标准,很快就可以解决目前中国蓝牙企业“山寨化”的问题,让所有中国蓝牙企业生产合乎中国技术标准的产品。二是进入了蓝牙产业链的上游,形成完整的产业链条。第三,可以借此解决目前蓝牙使用上由于“配对”复杂,而妨碍用户使用,造成市场推广的障碍。以上优势的形成,必将改变中国蓝牙行业的现有局面,并在深圳形成以高新技术为龙头的一体化蓝牙产业基地,更好的为全中国,全世界服务。业内专家认为,蓝牙的市场前景取决于蓝牙价格和基于蓝牙的应用是否能达到一定的规模。有了蓝牙,我们可以不再为数字家庭的布线而烦恼,移动电话、计算机、数码相机、摄像机、打印机、传真机和掌上电脑等能随心所欲无线连通。有了蓝牙,这些设备即会实现自动同步。即使用户的个人电脑放在手提箱内,用户也可以通过电话收电子邮件,通过移动电话屏幕阅读邮件标题,而不会有到处找连接线、开机、关机等待等等诸如此类的一系列烦恼。蓝牙技术拥有广阔的潜力市场。1.2 android操作系统简介Android操作系统是一款由Google公司于2007年11月5日宣布的基于Linux平台的开源手机操作系统。2008年9月22日,美国运营商T-Mobile USA在纽约正式发布第一款Google手机T-Mobile G1。该款手机为台湾宏达电代工制造,是世界上第一部使用Android操作系统的手机。至最新的数据显示,搭载着安卓系统的智能手机在世界市场的占有率已达到78.9%,远远抛开排名第二的ios系统的15.5%。成为目前市场占有率最高,发展最为快速的一种手机操作系统。Android系统是基于Linux和Java技术,它在底层采用Linux内核和本地库,在上层提供Java支持框架和开发接口。它借助于Linux强 大的稳定性、开放性和可移植性,Java语言开发的广泛性、简单性和可移植性,一经推出就受动广泛关注和欢迎,在嵌入式开发中产生比较深远的影响。Android的系统架构采用了分层架构的思想,如下图所示。从上层到底层共包括四层,分别是应用程序程序层、应用框架层、系统库和Android运行时和Linux内核。图1 Android系统架构图每层功能简要介绍如下:一 应用程序层该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。二 应用程序框架层该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、 电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框 架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本 身的各种应用程序组件。三 系统库和Android运行时系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。 Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如 android.os、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。四 Linux内核Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。由此可见,Android的系统架构采用分层架构的思想,架构清晰,层次分明,协同工作。1.3 课题的来源背景从2007年11月5日谷歌公司正式向外界展示了这款名为android的操作系统到如今(2014年5月),android操作系统已从最开始的1.0版本到如今的4.4版本kitkat,系统性能达到质的飞跃,UI界面更是在2.X时代升级到4.X时代的时候得到质的改变,从而使得如今最新的4.4版本是一个非常优秀的操作系统。在ARM处理器方面,经历了经典的ARM7、ARM9、ARM11等系列,如今Cortex系列更是成为了主流。而在cortex系列中,其cortex-A系列以其开放式操作系统的高性能处理器的特点性能更是远高于面向实时应用的卓越性能的Cortex-R 系列 和面向具有确定性的微控制器应用的Cortex-M 系列。Cortex-A系列较为高端的系列亦分为A8、A9、A15乃至字长为64位的A50系列。在如今的智能手机领域,A8、A9等系列被广泛应用。在短距离无线通信方面,蓝牙已经是一种非常普遍,性价比高的短距离无线通信工具。只要是智能手机,都会搭载蓝牙模块,这也就意味着,本课题的短距离无线通信工具材料来源异常丰富,可谓随手可得。1.4国内外研究状况在智能家居系统研发方面,亦即包含无线开关控制,美国及一些欧洲国家一直处于领先地位。近年来,以美国微软公司及摩托罗拉公司等为首的一批国外知名企业,先后挤身于智能家居的研发中。例如:微软公司开发的“梦幻之家”、摩托罗拉公司开发的“居所之门”、IBM公司开发的“家庭主任”等均已日趋成稳得技术强占家居市场。此外,日韩新等国的龙头企业纷纷致力于家居智能化的开发,对家居市场更是跃跃欲试。20世纪90年代后期,我国的智能小区日益兴起。众所周知,我国的智能化住宅建设最早起于上海、广州和深圳等沿海城市,并逐渐向内陆发展。在97香港回归之际,在建设部“97跨世纪住宅小区案竞赛活动”中,上海中皇广场被建设部科技委员会列为全国首家“智能住宅示范工程”,揭开了全国智能小区发展的序幕。我国的智能家居相对于国外起步较晚,尚未形成一定的国家标准。目前,主要采用国外的一些技术产品,但也有一些企业推出了自己的产品,主要有:e家庭(海尔)、e-home数字家园(清华同方)等。国内各大软、硬件机构正在积极的研制、开发更为符合市场的智能化家居设备,以解决当前智能化产品实用性差、使用复杂及产品价格昂贵等缺点,而技术创新性也逐步向国际先进水平靠拢,这样的未来值得期待。由于安卓操作系统是近几年才流行起来的,基于安卓智能手机控制的领域可谓相对以前的常规无线控制较为新鲜。1.5系统总体方案1.5.1 设计要求 本次设计要求设计出一个基于安卓智能手机控制的智能无线开关系统。通过实现从手机端发送蓝牙信号无线控制ARM核心板上的LED灯的亮灭来达到无线控制开关的功能。本次设计要求懂得一定的C语言以及JAVA语言知识,对嵌入式系统的驱动程序编程以及安卓应用程序编程有一定的了解,以及熟悉数、模电等电路知识。1.5.2 硬件的选取: 1)安卓智能手机:对此不作出太大要求,只要有足够的ROM空间能够安装蓝牙控制的APP即可。2)蓝牙接收模块:本模块分主机和从机,主机能和从机配对通信,从机与从机之间或主机与主机之间不能通信,从机能和电脑、手机等的蓝牙配对通信,购买时默认为从机。我们在做无线开关控制时,蓝牙模块主要是实现接收从手机端发送过来的指令,所以我们需要的是从机模块。3)ARM开发板(附带LED灯):此处之所以不选择我们熟悉的传统的51系列8位单片机而选择32位的基于cotex-A8内核的S5PV210处理器,是为了增加课题的新颖性以及挑战32位的ARM的驱动程序编程,该开发板搭载的是Android2.3系统。1.5.3软件的设计:1)Android的应用程序设计:需熟悉JAVA语言以及android应用程序设计。2)UART串口初始化程序:鉴于我们的蓝牙模块是通过串口与ARM核心板进行通信,故需要我们对arm板上的uart口进行一系列的初始化。3)LED灯的驱动程序设计:由于arm开发板上的android系统是基于linux内核的,故此处需要充分了解linux系统的驱动程序设计,从而才能熟练写出LED灯的驱动程序。图2 整体结构方案图2 开发环境的搭建2.1 Linux开发环境搭建2.1.1 关于Linux系统Linux操作系统诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间),其是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux用途广泛,可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。Linux存在着许多不同的Linux版本,有我们熟悉的Ubuntu、RedHat、Debian、SUSE等等,虽然各家公司的Linux系统略有不同,但它们都使用了Linux内核。在本次设计中我们选择市场上较为普遍的Ubuntu系统。2.1.2 关于GNUGNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带一份GNU宣言等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。即“反版权”(或称Copyleft)概念。GNU计划最终并没有如Richard Stallman所愿,创建出一套完全自由的操作系统,但是却创造出了vi编辑器、gcc编译器、gdb调试器等一大堆自由软件。最终GNU工程各种工具和数据库和我们熟悉的Linux内核组建成我们熟悉的Linux操作系统。本次设计中就是使用vi编辑器、gcc编译器、gdb调试器等工具在Linux平台下编辑LED灯的驱动程序和UART的初始化程序。2.1.3 利用Vmware虚拟机搭建Linux开发环境1)安装虚拟机直接双击打开VMware-workstation-9.0.1.exe,输入相应序列号即可成功安装虚拟机。2)安装Ubuntu系统根据百度经验逐步进行安装:3)搭建交叉编译环境由于我们要在X86环境下的ubuntu系统编译出能在ARM环境下运行的可执行程序,所以我们必须要通过交叉编译。则需要安装交叉编译器(cross compiler)。此处我们选择交叉编译工具:arm-linux- 4.2.2搭建步骤1)在/usr/local/下建立交叉编译器的安装目录arm:sudo mkdir /usr/local/arm2)将下载的交叉编译器包解压到/usr/local/arm目录下:sudo tar jxvf cross-4.2.2-eabi.tar.bz2 -C /usr/local/arm/3)解压成功后,修改PATH环境变量:sudo vim /etc/profile在文件为加入交叉编译器arm-linux-所在的路径:export PATH=$PATH:/usr/local/arm/4.2.2-eabi/usr/bin然后退出vim。4)更新一下配置文件/etc/profile:source /etc/profile5)工具安装成功:以上工具只是用来编译驱动程序,由于我们的arm开发板跑的是android系统,若要编译出能在其上运行的可执行C文件,普通的arm-linux-gcc编译器并无此能力,此时则需要android的mk文件,也就是需要android系统的源代码。具体下载过程见:为了使开发板能与pc机通信,则需要在windows下安装SecureCRT 5.2。安装完毕后二者通过串口进行通信。2.2 安卓应用开发环境搭建2.2.1 关于Eclipse软件Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。由于android应用程序是用java语言编写的,所以我们的android应用自然也是用Eclipse工具编写。2.2.2 android SDK开发环境搭建1)java JDK安装进入oracle官网 下载最新jdk-6u22-windows-i586.exe,双击开始安装JDK,路径选择c盘(也可以是其他路径),安装完设置java环境变量。设置方法如下:我的电脑点右键属性高级进入环境变量设置(1) 设置path变量在系统变量里找到path变量,选择编辑在变量值的最后追加;C: jdk1.6.0_22bin(2) 设置classpath环境变量在系统环境变量那一栏中点新建变量名:classpath,变量值:.;%JAVA_HOME%libtools.jar;%JAVA_HOME%libdt.jar;(3) 设置JAVA_HOME在系统环境变量那一栏中点新建变量名:JAVA_HOME变量值:C: jdk1.6.0_22检验JAVA环境:打开cmd命令行,输入javac:如显示如下界面图3 检验JAVA环境则表示安装成功,否则则应仔细检查以上配置是否正确操作,至此java环境安装完成。2)adt-bundle-windows安装进入android官网:下载adt-bundle-windows.zip,此工具集合了Eclipse软件、android SDK、ADT等插件,下载后直接解压打开即可使用。至此,常规的android SDK开发环境已成功搭建,也就是可以直接开发一般的android应用程序了。2.2.3 android NDK 开发环境搭建由于我们的接收端ARM核心板上需要运行一个android应用程序,用来读取UART串口的蓝牙模块发送来的信息,以及对LED灯等硬件进行操作,但是我们用常规的SDK开发出来的android应用程序时用纯java语言写出来的。众所周知,我们的java语言对uart串口、led灯等硬件的操控无能为力,此时我们自然会想到以操作硬件闻名的C语言了。此时也就是需要一种从java语言里调用C语言的机制,那就是JNI了。因此,为了实现java语言调用C语言的功能,我们还得再搭建一个android NDK开发的环境。进入android官网:下载android-ndk-r9d-windows-x86.zip解压都任意目录,然后打开Eclipse,点Window-Preferences-Android-NDK,设置NDK路径,如下图所示:图4 android NDK 开发环境搭建设置完成点击OK便完成android NDK开发环境的搭建了。3系统硬件的选取3.1关于ARM处理器ARM处理器是由英国ARM公司设计,由其众多合作伙伴生产的一系列的RISC处理器的集合。它的发展由经典的ARM7系列、ARM9系列、ARM11系列到现在流行的Cortex-A系列、Cortex-R系列和 Cortex-M系列。ARM处理器的应用领域十分广阔:1 )工业控制领域:作为 32 的 RISC 架构,基于 ARM 核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展, ARM 微控制器的低功耗、高性价比,向传统的 8 位 /16 位微控制器提出了挑战。 2 )无线通讯领域:目前已有超过 85% 的无线通讯设备采用了 ARM 技术, ARM 以其高性能和低成本,在该领域的地位日益巩固。 3 )消费类电子产品: ARM 技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。 4)成像和安全产品:现在流行的数码相机和打印机中绝大部分采用 ARM 技术。手机中的 32位 SIM 智能卡也采用了 ARM 技术。 除此以外, ARM 微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用 ARM处理器应用如此广泛,是因为其拥有如下一系列的特点:1)体积小、低功耗、低成本、高性能;2)支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件;3)大量使用寄存器,指令执行速度更快;4)大多数数据操作都在寄存器中完成;5)寻址方式灵活简单,执行效率高;6)指令长度固定;7)众多合作伙伴。本次设计中,在信号接收端我们使用三星公司设计的s5pv210处理器(又名“蜂鸟”),其采用了Cortex-A8内核,ARM V7指令集,主频可达1GHZ,64/32位内部总线结构,32/32KB的数据/指令一级缓存,512KB的二级缓存,可以实现2000DMIPS(每秒运算2亿条指令集)的高性能运算能力。 14141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414图5 S5PV2103.2 GEC210开发板简介GEC210是一款高性能的CortexA8开发板,其采用三星S5PV210作为主处理器,运行主频可高 1GHz。S5PV210内部集成了PowerVRSGX540高性能图形引擎,支持3D图形流畅运行,并可流畅播放1080P大尺寸视频。GEC210板载512MDDR2内存,可流畅运行Android,Linux和WinCE6等高级操作系统。它非常适合开发高端物联网终端,广告多媒体终端,智能家居,高端监控系统,游戏机控制板等设备。本次设计其运行的是Android2.3操作系统。图6 GEC210开发板硬件配置CPU处理器SamsungS5PV210,基于CortexTM-A8,运行主频1GHz内置PowerVRSGX540高性能图形引擎,支持流畅的2D/3D图形加速最高可支持1080p30fps硬件解码视频流畅播放,格式可为MPEG4,H.263,H.264等最高可支持1080p30fps硬件编码(Mpeg-2/VC1)视频输出DDR2RAM内存Size:512MB32bit数据总线,单通道运行频率:200MHzFLASH存储SLCNANDFlash:256MB(标配)/1GB软件支持gecboot-210Android2.3+Linux-2.6.35Android4.0(暂提供预览版映像文件)Linux-2.6.35+Qtopia-2.2.0/Qt-4.4.3/Qt-4.7WindowsCE6主要功能特性:1. 集成USB 2.0 Hub: 扩展出2个USB Host口2. 串口: 4路,其中1路已经转换为RS232,并通过DB9座引出(COM0),同时通过4pin的排针将其他3路引出,3. 中断式按键: 8个,分别定义不同的功能4. RJ45网口: 网卡采用DM9000AEP,10/100M自适应5. 音频输入与输出: 采用WM8960专业音频芯片,在板麦克风,内含Class D功放,并支持HDMI音频和视频同步输出 (1080P)6.VGA输出, 1600x1200 100HZ7. USB Slave: 1路,符合USB 2.0规范8. 红外接收头:1个9. ADC输入:其中AIN0连接了在板可掉电阻,用于测试10. 蜂鸣器:1路,由PWM0控制11. EEPROM: AT24C08(256 Byte),用于I2C测试12. LCD接口:2个LCD接口,均为40 Pin 0.5mm间距贴片座,13. SDIO接口:用于连接SD WiFi模块等14. CMOS Camera: 用于连接CMOS摄像头15. RTC时钟:带备份电池16. PCB层数:217. PCB尺寸:180 x 130mm,可方便固定各种LCD模块,尤其是7寸LCD模块18. 供电:DC-5V3.3 蓝牙HC-06模块的简介本次设计采用民用级蓝牙模块HC-06,它通过UART连接到GEC210底板上与S5PV210进行通信。图7 蓝牙HC-06图8 模块原理图3.3.1 HC-06模块特征1、无线收发 灵敏度(误码率)达到 80dBm -4 - 6dBm 功率可调输出2、性能概要 完整的蓝牙解决方案 蓝牙2.0 带EDR, 2Mbps-3Mbps 调制度 内置 2.4GHz 天线, 用户无需调试天线 外置 8Mbit FLASH 低电压3.3V 工作(3.1V4.2V)配对时3040MA 波动,配对完毕通信8MA 可选PIO 控制 标准HCI 端口(UART or USB) USB 协议: Full Speed USB1.1, Compliant With 2.0 模块可以作为SMD 贴片工艺 RoHS 制程 引脚半孔工艺 数字2.4GHz 无线收发射 CSR BC04 蓝牙芯片技术 自适应跳频技术 体积小,(27mm13mm2mm) 简单的外围设计电路 蓝牙Class 2 功率级别 存储温度:-40 至+85 度,工作温度:-25 至+75 度 协波干扰:2.4MHz,发射功率 3 dBm 误码率:0,但会在传输链路产生信号衰变,才有误码,如RS232 和TTL 线路处理线路中3、低功耗4、高性能无线收发系统5、低成本6、应用领域 蓝牙车载免提 蓝牙GPS 蓝牙PCMCIA , USB Dongle 蓝牙数据传送7、软件 CSR3.3.2 AT 指令集 (对蓝牙模块进行测试)进入AT 指令的方法:给模块上电,不配对的情况下,就是AT 模式了。指令间隔1S 左右。出厂参数:波特率9600N81,名字linvor,密码12341、测试通讯发送:AT(返回OK,一秒左右发一次)返回:OK2、改蓝牙串口通讯波特率发送:AT+BAUD1返回:OK1200发送:AT+BAUD2返回:OK24001-12002-24003-48004-9600(默认就是这个设置)5-192006-384007-576008-1152009-230400A-460800B-921600C-1382400 设置超过115200 后用电脑无法使用,要用单片机编程于高于115200 才能使用此波特率和重新发AT 命令设低波特率 用AT 命令设好波特率后,下次上电使用不需再设,可以掉电保存波特率。3、改蓝牙名称发送:AT+NAMEname返回:OKname参数name:所要设置的当前名称,即蓝牙被搜索到的名称。20 个字符以内。例:发送AT+NAMEbill_gates返回OKname这时蓝牙名称改为bill_gates参数可以掉电保存,只需修改一次。PDA 端刷新服务可以看到更改后的蓝牙名称,名字不可超过20 个字符。4、改蓝牙配对密码发送:AT+PINxxxx返回:OKsetpin参数xxxx:所要设置的配对密码,4 个数字,此命令可用于从机或主机。从机是适配器或手机弹出要求输入配对密码窗口时,手工输入此参数就可以连接从机。主蓝牙模块搜索从机后,如果密码正确,则会自动配对,主模块除了可以连接配对从模块外,其他产品包含从模块的时候也可以连接配对,比如含蓝牙的数码相机,蓝牙GPS,蓝牙串口打印机,等等,特别地,蓝牙GPS 为典型例子例:发送:AT+PIN8888返回:OKsetpin这时蓝牙配对密码改为8888,模块在出厂时的默认配对密码是1234。参数可以掉电保存,只需修改一次。5、无校验设置指令:(V1.5 版后支持)AT+PN(默认就是这个设置)6、偶校验设置指令:(V1.5 版后支持)AT+PE7、奇校验设置指令:(V1.5 版后支持)AT+PO8、获取AT 指令版本命令:AT+VERSION返回LinvorV1.n 则为正品4 系统软件的设计4.1 相关软件编程技术4.1.1 嵌入式C编程Windows平台下的普通C语言编程跟Linux平台下的嵌入式C语言编程几乎没什么不同。主要差别只是在于编译器、API等开发工具的不同。但是,在嵌入式C编程的世界里,如果要编写出嵌入式驱动程序,仅仅是熟悉C语言是远远不够的,还得精通嵌入式芯片工作原理(寄存器设定等),操作系统原理(存储空间分配等),除此之外,还需要了解基本的数模电的电路知识等硬件知识。可见,嵌入式C编程比普通的C编程难度大多了。4.1.2 安卓JAVA编程JAVA语言是典型的面向对象的语言。面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。本次设计我们的android应用程序用的是java语言,因此必须得对面向对象思想有个深刻的认识。4.2 系统底层软件的设计本系统的底层软件指LED灯的驱动程序,测试程序以及UART串口的初始化程序,这些程序的编写都是在ubuntu环境下用vi编辑器编写的。4.2.1 LED灯驱动程序设计我们知道,要写出硬件的驱动程序,除了拥有必要的软件编程能力之外,必须得熟悉硬件的工作原理。此驱动程序的源文件名为:led_drv.c我们先查看LED灯的电路原理图,通过查看GEC210开发板核心版的schematic,可知原理图如下:图9 LED灯的电路原理图由图可知,核心版上的4个led灯是与处理器的GPJ2_X引脚连接,根据二极管的工作原理,VDD_REG1_IO端为高电平,则只要把GPJ2_X端设置为低电平,led灯就会被点亮。再查此原理图,可知GPJ2_X引脚与处理器的连接如下:图10 GPJ2_X引脚与处理器的连接此时则可知道要控制led的亮灭先执行两个步骤,第一:把管理GPJ2_X的控制寄存器GPJ2_CON相应位设置为输出模式,第二:把数据寄存器GPJ2DAT设置为输出低电平。此驱动程序的源文件名为:led_drv.c(具体内容请见附录)led_drv.c核心代码如下:1、驱动模块加载函数:static int _init gec210_led_dev_init(void) int ret;int i;for (i = 0; i LED_NUM; i+) ret = gpio_request(led_gpiosi, LED);/申请LED灯的I/O口s3c_gpio_cfgpin(led_gpiosi, S3C_GPIO_OUTPUT);gpio_set_value(led_gpiosi, 1);ret = misc_register(&gec210_led_dev); /注册杂项设备printk(DEVICE_NAMEtinitializedn);return ret;2、驱动模块卸载函数:static void _exit gec210_led_dev_exit(void) int i;for (i = 0; i MAX_NR ) return -EINVAL;switch( cmd ) case LED1: /设置LED1 的开或者关gpio_set_value(led_gpios_IOC_NR(cmd),arg);printk(led 1n);break;case LED2: /设置LED2 的开或者关gpio_set_value(led_gpios_IOC_NR(cmd),arg);printk(led2n);break;case LED3: /设置LED3 的开或者关gpio_set_value(led_gpios_IOC_NR(cmd),arg);printk(led3n);break;case LED4: /设置LED4 的开或者关gpio_set_value(led_gpios_IOC_NR(cmd),arg);printk(led4n);break;default:printk(defaultn);return -EINVAL;return 0;/把自定义的ioctl函数赋值给file_operations static struct file_operations gec210_led_dev_fops = .owner= THIS_MODULE,.unlocked_ioctl= gec210_leds_ioctl,4、Makefile文件内容:CONFIG_MYCHAR_DEV ?=mifneq ($(KERNELRELEASE),)dc_motor -objs:=led_drv.oobj-$(CONFIG_MYCHAR_DEV)+=led_drv.oelsePWD :=$(shell pwd)KERN_VER = $(shell uname -r)KERN_DIR = /home/chengjunyi/androidsource/gec210/class60/linux-2.6.35.7-gec-android/modules:$(MAKE) -C $(KERN_DIR) M=$(PWD) modulesendifclean:rm -rf *.o *core .depend *.cmd *.ko *.mod.c *.tmp_versions Makefile编译完成后,用make命令对led_drv.c文件编译,生成led_drv.ko文件,在pc端通过adb push 命令下载到开发板端,然后在开发板端的终端输入insmod led_drv.ko命令加载驱动模块,再通过chmod命令修改驱动权限,则已成功加载led灯的驱动程序了。4.2.2 LED灯测试程序设计有了上面的驱动程序,自然得写一个应用程序去操控LED灯,以测试驱动程序是否成功编写。此处并不用驱动程序那么复杂,只需写一个简单的C程序,通过main函数的参数把用户从键盘输入的数据通过ioctl函数把参数传递到底层的驱动程序,以控制LED灯的亮灭。此测试程序的源文件名为:led_test.c(具体内容请见附录)核心代码如下:fd = open(/dev/leds, O_RDWR); / 打开设备led_no = strtoul(argv1, 0, 0) - 1; / 操作哪个LED?if (!strcmp(argv2, on) /开灯 switch(led_no) case 0: ioctl(fd,LED1,IOCTL_LED_ON); break; case 1: ioctl(fd,LED2,IOCTL_LED_ON); break; case 2: ioctl(fd,LED3,IOCTL_LED_ON); break; case 3: ioctl(fd,LED4,IOCTL_LED_ON); break; default: break; else if (!strcmp(argv2, off) /关灯 switch(led_no) case 0: ioctl(fd,LED1,IOCTL_LED_OFF); break; case 1: ioctl(fd,LED2,IOCTL_LED_OFF); break; case 2: ioctl(fd,LED3,IOCTL_LED_OFF); break; case 3: ioctl(fd,LED4,IOCTL_LED_OFF); break; default: break; 测试程序编写完毕后,一般的linux系统环境下只需通过arm-linux-gcc交叉编译后即可成功把可执行文件下载到开发板上运行,但是由于我们的开发板搭载的是android系统,android系统并不支持此交叉编译器编译出来的可执行文件,此时则需要Android.mk文件进行编译。Android.mk文件编写如下:LOCAL_PATH:= $(call my-dir) /对LOCAL_PATH进行赋值,获取编译源代位置include $(CLEAR_VARS)/清空全局变量(LOCAL_打头的变量),除了这个LOCAL_PATH之外LOCAL_SRC_FILES := led_test.c /编译哪些文件LOCAL_MODULE := ledtest /生
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕业论文


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!