毕业论文--基于Android的智能插座APP设计.doc_第1页
毕业论文--基于Android的智能插座APP设计.doc_第2页
毕业论文--基于Android的智能插座APP设计.doc_第3页
毕业论文--基于Android的智能插座APP设计.doc_第4页
毕业论文--基于Android的智能插座APP设计.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南大学毕业设计(论文) 第30页 HUNAN UNIVERSITY毕业设计(论文)论文题目基于Android的智能插座APP设计学生姓名学生学号专业班级电子信息工程1103班学院名称电气与信息工程学院指导老师学院院长2015年5月20日摘要随着互联网的普及,人类社会已经步入了一个全互联的时代,人人互联,人物互联,物物互联,已经成为时代发展的主旋律。远程监控,智能家居安防,正在使人们的家居生活发生翻天覆地的变化。随着人们对智能化家居需求的进一步提升,作为家居电气智能化的接入点插座,也顺势成为智能化家居系统改造的核心和首要切入点。作为家居电气智能化改造的切入点,从源头上解决室内用电控制,进一步简化人们的家居生活,提升家居安防水平,本文提出了一种能通过基于Android智能系统实现远程监视和控制的智能插座。设计了一套能通过安卓设备WIFI接口对插座实施监控的智能插座,及其相应的Android APP。本系统硬件部分采用USR-WIFI232系列的WIFI无线通信模块接受和发送相关状态信息和控制指令,采用STC89C52系列单片机来执行特定指令,实现对插座继电器的控制。系统软件部分采用Eclipse基于Android 4.4.2的开发环境开发,APP与插座通过UDP协议握手,获取到插座IP后使用Socket套接字,通过TCP协议进行数据传输,实现APP对插座的控制。经过实验验证,本系统能通过基于Android的APP对对应插座进行实时控制,能有效的满足用户对家居只能化的要求。从源头上提升家居智能化程度。关键词:无线通信,Socket套接字,数据传输The application of intelligence socket based on the AndroidAbstractAs the Spreading of the Internet, we have stepped into an internet era. The use of internet linking between people to people, people to item, item to item has become the main rhythm of the era development and progress. The adoption of remote monitoring and intelligent security and protection in home life is greatly changing peoples life. With the improved requirements for intelligent home, socket, as the access of intelligent home electricity, is naturally become core and point cut in the reform and update of intelligent home system.Socket is the point cut of intelligent home electricity, to control home electricity from the source, to further simplify peoples home life, to enhance home safety and protection. This paper introduced a kind of intelligent socket, based on Android system, which can realize remote monitoring and controlling. Designed a set of intelligent socket which can be monitored through android device WIFI, and matching Android APP. The hardware of this system adopt wireless communication module of series USR-WIFI232 to accept and send related status info as well as control instruction, using series STC89C52 SCM to execute instruction, realizing the control of socket relay. The software part use Eclipse, based on develop environment of Android 4.4.2, combine the APP and socket with UDP agreement, get the socket IP, then through TCP agreement transfer date to realize the control of socket.After experimental verification, this system can realize real time control to corresponding socket through the APP based on Android, can effectively meet the Users requirement of home intelligent. To improve intelligent degree of home from the source.KEY WORDS:Wireless Communication; Socket; Data transmission目 录第1章 绪论11.1 项目背景及研究意义11.2 国内外研究现状分析11.3 系统设计目标21.4 本文主要内容2第2章 总体方案设计42.1 基本设计思路42.2 总体方案设计42.2.1 内网框架图42.2.2 硬件系统内网通信流程52.2.3 软件系统内网通信流程62.3 基于Android的智能插座相关技术介绍72.3.1 微控制器(MCU)技术72.3.2 无线通信技术72.3.3 Android简介82.3.4 本章小结10第3章 智能插座系统硬件设计113.1 硬件系统框架113.2 STC89C52模块123.3 电源模块123.4 USR-WIFI模块143.4.1 USR-WIFI232简介143.4.2 USR-WIFI232传输模式143.4.3 USR-WIFI232组网方式143.4.4 WIFI模块寻址153.4.5 无线模块的配设153.5 本章小结16第4章 智能插座系统APP设计174.1 Android开发知识174.1.1 开发环境配设174.1.2 文件结构介绍194.1.3 Android组件194.2 软件功能模块设计204.2.1 UDP广播214.2.2 UDP Server线程224.2.3 Socket套接字244.3 软件用户界面设计254.4 本章小结26第5章 模块功能性验证26总结与展望29致 谢29参考文献30第1章 绪论1.1 项目背景及研究意义随着互联网的普及和发展,人们对于互联网和智能化的依赖性持续上升,据统计,截止2014年12月,中国网民的数量已达到6.49亿,全年新增网民3117。在我过互联网的普及率已经达到47.9%,相比2013年年底增加了2.1个百分点。其中手机网民规模5.57亿,相比2013年增加了5672万。网民中使用手机上网的用户群占比由2013年的81%增长到了85.8%。且仍保持高速增长的态势。伴随着移动互联网的高速发展,移动智能终端已经在人们生活中发挥着不可或缺的作用,人们对以苹果、安卓为首的移动终端操作系统的依赖性持续上升。其中安卓操作系统以其高开放性、高可移植性占据着移动只能终端操作系统的半壁江山。据市场分析机构Strategy Analytics公布的数据,截止2014年第二季度,Android操作系统在全球的份额已达到84.6%。在此情形下,与时俱进的学习Android 系统特性,掌握Android APP的开发,具有及其重要的意义。智能家居是互联网技术向传统家电产业发展渗透的必然结果。从社会发展属性来看,近年来信息化的高速进展,通讯的高层次化与自由化、业务量飞速增加以及人类对工作环境的舒适性、安全性、效率性要求的提高,使得智能家居的需求量大为增加此外在科学技术层面,由于电子信息通讯技术与计算机控制技术的发展,也促成了智能家居的诞生。近年来,在以Android操作系统为代表的智能移动终端的普及,智能家居更是迎来了发展的蜜月期。在中国,以海尔为首的智能家居系统已初见雏形。但受开发成本和需求关系的制约,现行主要智能家居产品多活跃与中高端市场。但随着人们对互联网认知的加深,低端市场需求旺盛,开发出一款低成本、高性价比的智能家居产品去满足市场需求,具有极高的商业价值。1.2 国内外研究现状分析当下智能家居技术主要指的是通讯或控制协议,主要设计硬件接口和软件协议两部分。笼统来看目前市场上主要分为两大派别,即无线与有线技术。有线技术又分为RS485、IEEE802.3 (Ethernet)、EIB/KNX、LonWorks、X-10,PLC-BUS等小派。无线技术也分为RF射频技术、蓝牙(Bluetooth)、Wi-Fi、Zigbee、Z-Wave等。无线技术是近年智能家居发展的主流和方向。以Wi-Fi、Zigbee技术组建的智能家居系统占据了智能家居领域的半壁江山。ZigBee是基于IEEE802.15.4的通信协议,在近距离传输方面虽然有着复杂度低、适应能力强、功耗低、可用节点数量巨大的优势,但其成本偏高、节点容量利用率不高、衍生能力不强等缺点制约着该协议在智能家居领域的应用。Wi-Fi是基于IEEE802.11b的通信协议。IEEE802.11b是改进的第二代无线局域网标准,其最高带宽可达11Mbps,传输距离达百米单位范围,与以太网类似的连接协议和数据包确认提供了可靠数据传送和网络贷款的有效使用,最多三个访问点可以同时定位于有效使用范围中,具有良好的可伸缩性。内置式的鉴定和加密为其提供了良好的安全性能。Wi-Fi作为当下最为主流的通信技术具有覆盖面积广,速度快,开发难度低,成本低廉,在移动终端设备中广泛应用等特点,十分适合作为面向低端市场的智能家居的无线传输协议。1.3 系统设计目标 综上所述,智能家居系统最重要的是解决硬件接口与软件通信协议的无线通信问题。本系统的初衷在于提供面向低端市场的智能家居解决方案,以相对低廉的成本开发出足以满足用户日常需求的智能插座产品。以此为目标,系统在硬件的选择上,选用相对廉价的STC89C52单片机。软件上选用最为普及的Android开源系统作为应用平台,开发出基于Wi-Fi通信协议的Android App。旨在最大限度的压缩成本的同时减少用户初次使用软件时的学习成本。1.4 本文主要内容根据系统基本功能的需求,论文描述了系统各功能部件模块的设计,提出了一种能通过Android系统控制家用智能插座的软件解决方案,即利用UDP和TCP传输协议,通过Wi-Fi使智能插座与手机组网,并使用SOCKET套接字进行数据传输的软件算法。以及相应的智能插座硬件解决方案。第一章主要介绍了移动互联网的发展现状,提出了在移动互联网时代,学习和研究基于Android的智能家居系统的意义。同时分析了国内外在智能家居领域所用的主要协议及其优缺点,衍生出已Wi-Fi作为本系统网络开发协议的必要性。最后,说明了该系统的主要目的及其面向的阶层。第二章主要介绍了基于Android的智能插座系统的总体设计方案,分别从软件和硬件两部分提出了系统的实现方法,包括系统的租房方式及网内数据的传输实现方式。其次,本章还简要的介绍了实现该系统所用到的相应的技术手段。是系统设计的总起。第三章主要介绍了智能插座系统的硬件构成,阐述了该系统硬件设计的整体框架。着重介绍了硬件系统中WIFI无线通信模块的功能、组网方式、模式配设,以及其在以STA模式接入路由器时的寻址问题。第四章是本文的有关系统软件部分的介绍,章节开篇介绍有关Android开发的知识,到软件各功能模块的实现,最后到软件的UI设计。详实的介绍了软件开发的过程。第二节是本章的重点。分别从UDP广播的发生、UDP Service线程对约定端口号的监听、通过Socket套接字实现智能插座和手机APP的数据传输三模块阐述了软件通过WIFI通信功能的实现。第五章是对本文所提系统的实验性验证。通过将连接好的硬件系统和手机连入同一局域网。用手机APP搜索并连接智能插座设备。通过验证APP是否可以正常接入和控制设备,从而验证系统设计是否符合要求。第2章 总体方案设计2.1 基本设计思路智能插座系统硬件部分由Wi-Fi模块、继电器模块、电源模块和处理器模块构成。Wi-Fi模块以STA模式接入路由器与移动终端设备组成小型局域网,开启UDP Server进程,等待移动终端的握手,接到握手信息后通过UDP Client广播自身IP信息,等待移动终端建立TCP连接。连接建立后,Wi-Fi模块将从移动终端接收到的数据传递给处理器模块,处理器从Wi-Fi芯片得到数据后,通过编程设定,控制常开继电器对应的引脚电平,来控制继电器的通断,已此来实现智能插座的通断电。软件部分,在软件运行后,建立UDP Server(Port 5001),TCP Client(Port 60000),UDP Client(Port 5000)三个连接线程。UDP Client在局域网中广播握手信息,UDP Server监听来自插座端的数据包信息,并将接受到的IP信息传递给TCP Client线程进行TCP传输。2.2 总体方案设计2.2.1 内网框架图根据总体方案的设计思路,智能插座和Android智能终端通过Wi-Fi以STA的方式接入同一内网,其基本连接框图如下图所示。图2.1内网框架图2.2.2 硬件系统内网通信流程系统上电后,建立三个链接, UDP Client(Port 5001) ,TCP Server(Port 60000),TCP Client(Port 5001)。处于监听状态,UDP CLIENT 的地址为广播地址 (55 或者192.168.X.255)。UDP Server 监听到来之手机APP 的握手广播包。通过UDP Client 广播自身的IP 地址出去,等待手机APP 连接TCP Server。连接成功后通过TCP Server 进行通讯。通信流程图如下:图2.2 硬件系统内网通信流程图2.2.3 软件系统内网通信流程软件运行后,建立UDP Server(Port 5001),TCP Client(Port 60000),UDP Client(Port 5000)三个线程。当用户点击连接按钮时,通过发送广播包,内容为握手包内容。UDP Server 等待接收来自智能插座的包含IP信息的数据报。UDP Server 接收到来自PAD 的自身IP 广播包后将其传值给TCP线程。TCP Client 通过获取到的IP 地址去连接智能插座,并且通过TCP 进行数据通讯。通信流程图如下:图2.3 软件系统内网通信流程图2.3 基于Android的智能插座相关技术介绍2.3.1 微控制器(MCU)技术微控制器(Microcontroller or Microcontroller Unit)也称微处理器,它是微型计算机的核心部件,是一个大规模集成电路芯片,它集成了运算器、控制器、寄存器组和内部总线等部件,它本身并不是计算机,而是微型计算机的控制和运算部分。微控制器最早出现于上世纪七十年代中叶,经过二十多年的发展,它的成本变得愈发低廉,但性能却越来越强大,时至今日其应用几乎无处不在,遍及各行各业各个领域。例子不胜枚举,如电机控制、智能玩具、条码扫描终端、游戏终端、行动电话、楼宇安全控制、工业自动化控制和白色家电等。绝大多数微控制器都是基于冯诺伊曼结构的,这种结构清楚地定义了微控制器所必需的四个基本部分:中央处理器核心,程序存储器(只读存储器或者闪存)、数据存储器(随机存储器)、一个或者更多的定时/计数器,还有用来与外围设备以及扩展资源进行通信的输入/输出端口。所有这些功能部件都被集成在单个集成电路芯片上。微控制器的工作原理相对独立,一个简单的单片机在软件和晶振下工作只需要一个时钟发生器及很少的RAM和ROM(或者EPROM, E2PROM)就行。同时,单片机具有多种可选的输入输出设备,例如AD转换器、定时器、各种串口,以及其他串行通讯接口,例如I2C,串行周边接口,控制器局域网等等,这些集成在设备内部的部分可以通过特定的指令控制操作。单片机时钟频率通常较同时代的计算机芯片低,但它价格低廉,能够提供充足的程序存储器、丰富的片上接口。某些架构的单片机生产厂商众多,例如8051系列、Z80系列。现代的单片机支持一些内建的高级编程语言,比如BASIC语言、C语言、C+等。2.3.2 无线通信技术无线通信通常是指利用无线电波进行通信,一般指非广播通信,即使用便携式或移动式通信设备的个人之间的通信。采用无线通信的方式发布跌倒报警信息非常适合希望能够自由行动的配戴者。无线通信技术,比如:蓝牙(Bluetooth)、线局域网802.11(Wi-Fi)和红外数据传输(IrDA)等均得到了广泛的使用。近几年来,通信技术的全球化发展进程日新月异,尤其是近两三年来,无线通信技术的发展速度与应用领域有超过了有线通信技术的趋势,呈现出热火朝天的发展态势。其中最具代表性的技术有宽带无线接入、蜂窝移动通信,此外还有卫星通信、集群通信,以及手机数据流量业务与技术等。同时更新更具科技含量的通信技术正在崛起,如Zigbee、NFC(短距通信)、Ultra Wideband (W超宽频)、iMedia、GPS、DECT、无线1394和专用无线系统等。各自都有无法替代的特点,或基于传输距离、速率、功耗的特定要求,或着重于其他功能的扩充,或是满足某些单一应用的特别需要,或建立竞争技术的差异化等。本设计中的无线通信模块是Wi-Fi模块,其通信协议主要涉及UDP、TCP以及SOCKET套接字。本系统实现数据传输主要用到Client和Server(C/S)模式,包括UDP Server、UDP Client和TCP Server、TCP Client。TCP Server是指TCP 侦听、等待网络客户端连接。与WIFI 的AP 模式类似,本身不主动连接,而是等待TCP Client 建立连接。TCP Client是指TCP 网络服务提供客户端连接。与WIFI 的STA 模式类似,主动去向TCP Server 建立连接。TCP协议要想实现数据通信,必须TCP Client 连上TCP Server。2.3.3 Android简介Android平台是世界上使用最广的手机平台,它被全世界超过190个国家的几十亿部手机所使用,它拥有世界上最庞大的客户群,并且仍然以一个十分快速的速度在增长每天都有上百万的新用户第一次打开他们的Android设备,开始寻找APP,游戏和其他的数字内容。得利于开源的LINUX以及超过300家软硬件合作伙伴的贡献,Android迅速的成为增长速度最快的移动平台操作系统,Android的开放性让它很容易受到了消费者和开发者的喜爱,也因此促进了APP的开发和消费。Android的用户每个月从谷歌商店中,下载超过15亿次的应用和游戏。Android是在Linux和Java的基础上构建而成的,是当下可移植行最高的移动平台操作系统。Android是一个完全开源的平台,这样开发者的开发成本就变低了,而手机的成本也进而降低,Android之所以在市场上比其他平台更具优势,是因为其具有下列特性:(1) 应用程序框架:在应用程序开发时,框架支持控件的替换和重用,也就是说开发者不需重复写入控件,只要调用,只要开发效率就大大的提升了。(2) 自主研发的Dalvik虚拟机:Android针对移动设备的特性,并没有使用SUN公司的基于JME引擎的JAVA虚拟机,而是自己开发出了效率高,资源消耗小,而且保证了API兼容的基于寄存器的Dalvik虚拟机。(3) 强大的图形库:Android具有基于OpenGL ES 1.0的3D图形库和自定义的2D图形库,方便了开发者。(4) SQLite:使用了SQLite作为数据库,操作十分方便(5) 强大的多媒体框架:支持常见的多种音视频格式,且可以通过相应API进行视频的录制,预览,网络资源的播放等。(6) 丰富的开发环境:谷歌提供了Android的SDK,里面包括了大量的库和开发工具,供开发者进行调用。2.3.4 本章小结根据基于Android的智能插座APP的设计要求,本章主要介绍了该系统的总体设计思路,简单明了的说明了系统功能的实现方法,包括系统的组网、硬件系统内网通信的模型和软件系统内网通信的模型两部分。另外本章还简明扼要的介绍了系统所涉及的主要开发技术,囊括了从硬件模块到软件模块的基础技术的介绍。以及Android开发过程中主要开发组件的基础应用的介绍。第3章 智能插座系统硬件设计3.1 硬件系统框架智能插座的硬件设计部分主要包括三个模块: MCU模块、电源模块、Wi-Fi模块、常开继电器模块。电源模块为系统提供3.3V的电压接入。Wi-Fi模块和MCU模块的TX、RX端口交叉相连,实现模块间的数据收发。TX接口为数据发送端,RX接口为数据接收端。MCU模块的一个通用引脚与常开继电器开关连接,通过编程的手段根据Wi-Fi芯片传递给MCU的数据来控制常开继电器的通断,以此实现对智能插座的控制。主要硬件部分设计示意图如下:图3.1 硬件系统示意图图例说明:TX为发送端,RX为传输端。在连接时应将MCU的TX、RX和WIFI芯片的TX、RX交叉相连。GPIO为通用接口。3.2 STC89C52模块STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器。 STC89C52是在经典的MCS-51内核的基础上改动而来,使得相比原51芯片具有更强大的功能。89C52单片机额定工作频率为12MHZ,最高支持24MHZ的工作频率,拥有8K片内FLASH程序储存器,用于存放用户代码、512Byte的片内数据RAM、3个16 位定时器/计时器、支持2个优先级的八个中断源、32个可编程的I/O接口。IO接口包括并行I/O接口P0和P1、P2、P3三组准双向口。P0作为通用I/O口时,P0引脚需外加上拉电阻。不外加上拉电阻时,引脚作外部程序或数据储存器的数据/地址总线,在数据/地址总线的作用下实现上拉。P1、P2、P3引脚具有内部上拉功能,可做准双向口使用,用作输入时引脚被拉成高电平。 在本系统中,STC89C53作为智能插座的MCU,主要负责处理Wi-Fi芯片接收到的来自APP的数据,通过编程的手段根据接收到的数据来控制拆开继电器的通断的方式来控制智能插座的通断。3.3 电源模块电源模块采用两级稳压,负责给用户终端整个系统提供电源。首先采用LM317把9V稳成5V,再通过LM1117把5V稳成3.3V,满足各个模块的电压供应。LM317是工业级的稳压芯片,其输入电压的范围较小,但输出电压的纹波较小,比78系列的稳压芯片更加可靠,可以直接作为单片机的供电电源。二级稳压采用LM1117-3.3,通过输入5V,直接输出3.3V,外围辅助电路少,减少因元器件参数引起的稳压误差,可以作为参考电源。其设计的原理图如图4.2和图4.3所示:图3.2 5V稳压电路图3.3 3.3V稳压电路所选用的加速度传感器的输出是微小的电压信号,所以系统设计中抗干扰功能是不可或缺的一部分,它既影响到传感器采集到的微弱信号的准确度和及时性,同时也影响系统全局的稳定度和可靠度。所以,抗干扰功能在设计都需要兼并考虑硬件和软件部分。软件抗干扰措施主要指修改有关系统监测精确度和稳定性的不合理的偏差值,减少或消除噪声对加速度传感器信号采集处理的影响,可以选用的方法有均值滤波等。硬件部分抗干扰设计主要包括,电路板的合理布线、各个元件本身的去耦及消除噪声和芯片供电电源的滤波,比如,电源噪声可以严重干扰对其敏感的无线收发电路,数字部分也受其的干扰较大,所以设计电路的时候可以采用磁珠隔离的方法,将无线射频部分的电源和回路地与数字部分的干扰分离。3.4 USR-WIFI模块3.4.1 USR-WIFI232简介无线通信模块选用的是USR公司的USR-WIFI232模组。USR-WIFI232模组是一款一体化的802.11 b/g/n Wi-Fi 的模组,提供了一种将用户的物理设备连接到Wi-Fi 无线网络上,并提供UART 数据传输接口的解决方案。通过该模组,传统的低端串口设备或MCU 控制的设备可以很方便的接入Wi-Fi 无线网络,从而实现物联网络控制与管理。该模组硬件上集成了MAC,基频芯片,射频收发单元,以及功率放大器;嵌入式的固件则支持Wi-Fi 协议及配置,以及组网的TCP/IP 协议栈。USR-WIFI232-A/B/C 采用业内工业级最高性能嵌入式结构,并针对智能家具,智能电网,手持设备,个人医疗,工业控制等这些数据传输领域的应用,做了专业的优化。USR-WIFI232作为热点可以同时容纳32 台Wi-Fi客户端同时接入,也可同时容纳32个TCP 客户端。3.4.2 USR-WIFI232传输模式USR-WIFI232模块共有三种传输模式:透明传输模式、串口指令模式、GPIO传输模式。透明传输模式下,模块实现串口与网络之间的透明传输,实现通用串口设备与网络设备之间的数据传递。透明传输模式是复杂度最少的数据传输。串口指令模式下,用户可以按照我们的协议发送数据给服务器,无需重启设备,即可向不同的服务器发送数据。GPIO模式下UART 的4 引脚定义为GPIO,其它信号如nReady,nLink 也定义成GPIO,nReload 还是恢复出厂设置功能脚。模块工作在GPIO 模式时, PC 或其它网络设备可以通过WIFI 与模块建立连接(TCP/UDP),然后通过命令控制GPIO 或读GPIO 状态。本系统采用的传输模式为透明传输模式。3.4.3 USR-WIFI232组网方式USR-WIFI232的无线模块即可以配置成一个无线STA,也可以配置成AP。所以USR-WIFI232-A/B/C 逻辑上支持两个无线接口,一个作为STA,另一个接口相当于一个AP,其它STA 可以通过这个模块的AP 接口连入无线网络。所以,利用USR-WIFI232-A/B/C 可以提供十分灵活的组网方式。本系统中USR-WIFI模组作为STA接入路由器,与手机组成局域网。AP:无线接入点。如无线路由器就是一个AP,其作用是实现其他无线终端设备的相互连接。STA:无线站点,是一个无线终端设备。如手机(WIFI接口)等。3.4.4 WIFI模块寻址模块作为STA接入路由器后,模块在网络中的IP地址有接入的路由器自行分配,无法通过固有的IP地址建立连接。所以需要采用UDP广播的方式来对模块进行寻址,已获取其IP。具体步骤如下:1、 手机端通过UDP Client(55:5000)广播握手信息,该信息为模块约定的发送本地IP的口令。2、 模块收到口令后,通过UDP Client向该地址单播模块的本地IP。3、 手机端UDP Server线程收到IP地址后,与模块建立TCP连接。3.4.5 无线模块的配设首次使用USR-WIFI232模块时需要用PC连接模块默认AP,用用户名admin,密码admin登入55模块Web页面对模块进行配设。进入Web页面后点击模式选择,如下图:图3.4 无线模式配设模式选择选择Station模式,数据传输模式选择透明传输模式,TCP连接密码验证选择关闭,单击确定完成模式的配设。点击无线终端设置进行STA接入配设,如下图:图3.5 STA配设在该页面选择要接入的路由器AP,填写密码单击确定完成模块的配设。3.5 本章小结本章主要介绍了智能插座系统的硬件构成,阐述了该系统硬件设计的整体框架。着重介绍了硬件系统中WIFI无线通信模块的功能、组网方式,以及其在以STA模式接入路由器时的寻址问题。在介绍完了理论知识后,本章3.4.5给出了USR-WIFI模块的配设流程。在智能家居系统硬件的设计上,作为无线通信的应用,如何解决系统的无线接入、配设和数据传输是重点,也是难点。第4章 智能插座系统APP设计4.1 Android开发知识4.1.1 开发环境配设本软件系统用的开发环境为谷歌公司整合提供的集成开发环境ADT Bundle。它包含了Android SDK和内置的ADT(Android Developer Tools)的集成开发环境Eclipse,以及一些Android平台相关的工具。Eclipse是一个基于Java的可拓展的开源平台。在Eclipse各功能模块都有插件提供,可以通过安装不同的插件包来实现开发功能的无缝集成。由于Eclipse是基于JAVA的开发框架,在使用Eclipse进行软件开发之前,必须先安装JDK。JDK是JDK(Java Development Kit)是Sun Microsystems提供的java类语言的开发工具。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境、Java工具和Java基础的类库。JDK工具包可以去Sun Microsystems公司官网下载安装。安装完成后可以CMD命令java version查看java版本号。本机安装的java版本号为1.8.0_25(图4.1)。安装完JDK后,解压之前下载的ADT Bundle压缩包,得到Eclipse、SDK文件夹和SDK Manager.exe文件。Eclipse文件夹为Eclipse主程序,SDK文件夹为Android开发工具包。SDK Manager.exe开发工具管理程序,可以通过SDK Manager对不同的Android SDK及其相关工具进行管理。本机所用Android SDK版本号为Android 4.4.2(API 19)(图4.2)。由于国内对google的封杀本机在安装相关SDK是使用的镜像服务器地址为端口为80。完成对Android SDK的配设后,即可双击Eclipse.exe进入主程序(图4.3)。Eclipse主界面如图4.3所示,左侧为工程(包)浏览器(Package Explorer),用于显示工程(包)结构;中部为代码区,用于编辑程序代码;右侧为工程概要区,用于显示代码中的方法、变量等,快速定位相应的方法、变量;上部为菜单栏和工具栏;下部为日志区,用与追踪程序运行状况和错误信息。图4.1 JDK 版本图4.2 SDK Manager图4.3 Eclipse主界面4.1.2 文件结构介绍如图4.3中Eclipse主界面左侧工程浏览器所示,一个完整的Android项目包括系统库文件、src、gen、assets、bin、res、AndroidManifest.xml。src为Java代码存放区;gen存放项目自动生成的R.java文件,用来联程序和资源文件;assets用来存放必要的媒体文件;bin存放工程编译过程中产生的编译文件及程序APK文件;res资源存放文件夹,其下包含drawable、layout、values等子文件夹,drawable用于存放程序中包含的所有图片文件,layout为布局文件夹,存放程序各个活动界面的布局文件,value下的strings.xml文件用与存放程序中所用的字符串;AndroidManifest.xml文件为Android应用程序的入口文件,文件定义了程序所有组件,以及程序所需的权限信息和相关配设信息。4.1.3 Android组件Android开发过程主要是对Android四大组件的开发。包括活动(Activity)、服务(Service)、广播接收(BroadcastReceiver)以及内容提供者(ContentProvider)。活动(Activity)是Android程序的主体,任何程序的运行流程都在活动中运行,是Android开发最基本的模块。一个Android程序至少包括一个Activity,包含多个Activity,在程序执行过程中根据用户的操作,在多个Activity之间进行跳转。Activity有 standard、singleTop、singleTask、singleInstance四种启动模式,可以通过配设AndroidManifest.xml 文件的标签来设置启动对应的启动属性。每个Activity都有自己的生命周期。服务(Service)是安卓系统组件的一种,它的级别跟Activity差不多,不同的是Service不能在前台运行,只能在后台运行,与其他组件进行数据交换。服务可以通过Context.startService()和Context.bindService()两种方式开启。用第一种方法开启时,Service从onCreat到onStart启动,直接调用onDestroy销毁。而第二种方式开启,则是将Service和相关活动绑定,当活动退出时,Service自动销毁。Broadcast是Android提供的在应用程序之间传输信息的一种机制。BroadcastReceiver则是对Broadcast发送的信息进行过滤和做出响应的组件。通过BroadcastReceiver可以让应用对外部事件做出响应。BroadcastReceiver有两种注册方式。其一是在AndroidManifest.xml文件中注册,用这种方法注册的BroadcastReceiver无论程序启动与否均可对广播事件进行监听。其二是在程序代码中注册,该种方法注册的BroadcastReceiver,可用unregisterReceiver()方法取消注册。取消注册后无法监听广播。Content Provider在安卓中充当第三方应用数据访问接口的角色。在安卓系统中对数据的保护有很严格的要求,各应用程序的数据库、文件等都被封装屏蔽,不允许其他应用随意访问。Content Provider可以将应用对外公开的数据,封装成独立的内容提供包,每个包用URI标识,供外部应用查询。在Android开发的过程中合理的应用Android四大组件,能给应用提供更加丰富的体验。在本系统中,着重对Activity的开发。4.2 软件功能模块设计图4.4 软件框架软件框架如上图所示,用户界面由连接服务器按钮和开关控制按钮组成。用户点击连接服务器按钮后,后台UDP Client线程在局域网广播发送握手信号,并启动UDP Service线程监听5001端口,线程收到服务器端发送过来的含有IP信息的单播信息后,启动解析程序,从数据包中剥离出目标IP地址,并将值传递给TCPServerIP,TCP线程收到IP值后尝试跟目标IP建立TCP连接。连接建立后启用Socket套接字进行数据传输。4.2.1 UDP广播UDP协议是不可靠传输协议。使用UDP协议进行信息的传输之前不需要建议连接。换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信息封装到一个待发送的报文中并且发送出去。至于服务器端是否存在,或者能否收到该报文,客户端根本不用管。通常我们讨论的UDP的程序都是一对一的单播程序。对于广播,网络中的所有主机都会接收一份数据副本。只有UDP套接字允许广播或多播。广播UDP与单播UDP的区别就是IP地址不同,广播使用广播地址55,将消息发送到在同一广播网络上的每个主机。值得强调的是:本地广播信息是不会被路由器转发。当然这是十分容易理解的,因为如果路由器转发了广播信息,那么势必会引起网络瘫痪。这也是为什么IP协议的设计者故意没有定义互联网范围的广播机制。广播地址通常用于在网络游戏中处于同一本地网络的玩家之间交流状态信息等。其实广播顾名思义,就是想局域网内所有的人说话,但是广播还是要指明接收者的端口号的,因为不可能接受者的所有端口都来收听广播。UDP Client收到握手信息msg后,程序将信息转换成字节码的形式加上信息长度、广播地址和端口号以数据报的形式通过Socket套接字发送。广播地址为55端口号为5000。代码如下:public void send(String msg) msg= (msg=null)?no messge to send!:msg; int serverport=5000; Log.d(udp client,udp发送数据:+msg); DatagramSocket s= null; try s = new DatagramSocket(); catch(SocketException e) e.printStackTrace(); InetAddress local = null; try local = InetAddress.getByName(55); catch(UnknownHostException e) e.printStackTrace(); int msg_len=msg.length(); byte messageByte=msg.getBytes(); DatagramPacket p = new DatagramPacket(messageByte,msg_len,local,serverport); try s.send(p); s.close(); catch(IOException e) e.printStackTrace(); 4.2.2 UDP Server线程软件在后台建立UDP Server对5001端口进行监听,服务器地址为,收到插座端发来数据接收请求后,启动Socket套接字,进行数据传输,线程收到插座发来的带有自身IP信息的数据包之后,对数据包进行解析去掉包头“AA”之后利用System.arraycopy(message, 2, message2, 0, i-2)函数将解析出来的IP信息复制到新的字符串。再通过TCPServerIP=new String(message2)将IP信息赋值给全局变量TCPServerIP。完成握手。关键代码如下:public void run() / UDP服务器监听的端口 Integer port = 5001; /String myselfip=getlocalip(); / 接收的字节大小,客户端发送的数据不能超过这个大小 byte message = new byte100; try / 建立Socket连接 DatagramSocket datagramSocket = new DatagramSocket(port); datagramSocket.setBroadcast(true); DatagramPacket datagramPacket = new DatagramPacket(message, message.length); while (!

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论