远程遥控智能家电系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编号: ________
湖北文理学院理工学院本科毕业论文〔设计〕
题目远程遥控智能家电系统的设计________
电子科学与信息工程系计算机科学与技术专业
学号_________________
学生姓名樊友蜀__________________
指导教师李桂华__________________
起讫日期~_________
湖北文理学院理工学院
学位论文原创性声明
本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要奉献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承当。
作者签名:日期:年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保存、使用学位论文的规定,同意学校保存并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权湖北文理学
院理工学院可以将本学位论文的全部或局部内容编入有关数据库进行检索,可以采用影印、
缩印或扫描等复制手段保存和汇编本学位论文。
保密□,在年解密后适用本授权书。
本学位论文属于
不保密□。
〔请在以上相应方框内打“√〞〕
作者签名:
导师签名:日期:
日期:
年月日年月日
远程遥控智能家电系统的设计
摘要:随着计算机技术的开展,远程信息交互变得简单。
智能设备的诞生使得人们的生活更加方便。
尤其是近几年“物联网〞概念的出现,使得智能设备接入网络的技术开展迅速,尤其是智能家电领域。
当智能家电接入网络之后,我们可以通过或者其他手持智能设备在世界任意角落控制家里的家电设备。
其给我们带来的方便性,不言而喻。
本文那么是基于最新“物联网〞技术,描述了实现手持智能终端控制家电设备的开发过程。
介绍了系统所使用的技术,实现的方法以及系统的特点。
实现通过安卓终端远程查看室内电灯的状态和和对其状态的控制,以及实现对室内温度实时查看的功能。
关键词:智能家电;远程控制;智能终端;物联网
Design of remote control system of intelligent home appliances
Abstr act:
Wit
h thedevelopmentofcomputertechnology,
remo
te
informa
tion
excha nge
eas
ier.
Bornsmar
t
dev
ices
makepeople'
s
livesmor
e
conveni
ent.
Especiallyinrecentyearsther e
"thin
gs"
concept,makingsmartdevice
s
ac
cess
networktechnologyisdevelopingrapidly,
espec
ially
i
n
t
he
field
of
intelli
gent
homeapplianc
es.Whentheaccessnetworksmartappliances,
wecanphoneorothe r
smarthandhelddevicesinanycorneroftheworldtocontrolhomeappliances. Whichhasbroughtusconvenience,self-evident.
Thisarti cle
isbasedont
he
la
test
"Inte
rnet
o
f
Thi
ngs"
Thin
king
technol
ogy,
describestheimplementationofsmarthandheldterminalcontrolappliance sin
thedevelopmentprocess.Thetechnicalsystemused,thecharacteristicsof
implementedmethodsandsystems.Checkultimately
i
ndoor
lampbyAndro
id
han
dset
remotecontrolstatusandswitchstatus,aswellastheindoortemperature toachievereal-timeviewing.
Keywords:SmartAppliances;remotecontrol;IntelligentTerminal;Internet ofThings
目录
1 引言错误!未定义书签。
课题研究背景和意义错误!未定义书签。
课题研究的限制及开展趋势 1
2 开发环境与技术 2
开发环境 2
相关技术 2
3 系统分析 4
系统可行性分析 4
需求分析 4
数据流分析 5
4 系统总体设计错误!未定义书签。
系统总体结构设计 6
各局部功能设计7
数据库设计8
5 系统详细设计与实现10
嵌入式局部10
桌面客户端局部11
效劳器端局部13
手持端局部错误!未定义书签。
6 系统测试17
软件测试概述17
软件测试环境17
系统测试17
7 总结与展望19
总结19
展望19
参考文献
错误!未定义书签。
.............................................
.....
致
谢....................................................错误!未定义书签。
1引言
课题研究背景和意义
随着社会信息化的加快,人们的工作、生活和通讯、信息的关系日益紧密。
信息化社会在改变人们生活方式与工作习惯的同时,也对传统的生产方式提出了挑战,社会、技术以及经济的进步更使人们的观念随之巨变。
人们对传统电器的要求早已不只是功能强大、方便快捷,更为关注的是更加人性化的普及的智能化环境,智能电器始终引领人们生活品位的提高。
在科学技术与实际生活关系日益密切的今天,智能家居为越来越多追求时尚与方便的年轻一族们追捧。
通过远程控制智能家电系统,人们可以不受时间和空间的束缚,在任意时间、地点
通过手持设备查看家里电器是否还在工作并根据需要对其进行远程控制,从而改变其工作状态。
例如当我们出门忘记关灯,那么在出门之后我可以查看家里电灯是否处于开着
的状态,并把它远程关掉。
也可以实时获取家里必要数据,例如获取温度或者湿度,并通过远程控制家电进行调节。
课题研究的限制及开展趋势
当家庭智能网关将家庭中各种各样的家电设备通过家庭总线技术连接在一起时,就构成了功能强大、高度智能化的现代智能家居系统。
智能家居强调人的主观能动性,重
视人与居住环境的协调,能够随心所欲地控制居住环境
错误!
未找到引用
源。
自
1999
年起,
国家
信息产业部、科委、建委等部门组织有关专家论证和规划我国如何开展智能小区、智能
家庭方案。
国家经贸委又组织长虹、海尔、中兴等十一家相关企业成立家居网络、智能化联合体,目的在于开展家庭网络技术以及终端产品的研发。
使我国这一领域得以有序
和顺序的开展。
就目前趋势看,全世界在未来两年将有1亿家庭进入智能化、网络化,每年带来的
市场总值高达4500亿美元其中3700亿元是硬件产品的价值,截止到
2021年,50%以上
的新房将具有一定的智能型家居。
据调查,仅北京市场每年
就有15
亿左右的智能开关
市场目标销售额。
可见智能家居的市场潜力之巨大
错误!
未找到引用
源。
随着大屏幕触屏智能稳稳地确立移动网络市场的绝对霸主地位,包括平板电脑
的受欢送程度,我们发现,可视化控制和操作逐渐成为市场的主流趋势。
所以,智能家
居的可视
化操作将成为
未来很长一段
时间内的流行
趋势。
可视化
控制操作其实
就是更加
错误!未找到
引用方便和简单,受众范围将不再局限于年轻人,老人孩子都可以非常轻松地掌握
源。
2开发环境与技术
开发环境
eclipse
eclipse 是著名的集成开发环境,它通过不同的插件实现不同需求的开发,且其界
面友好,扩展插件功能丰富,使用简单,得到了绝大多数java 开发者的青睐。
本系统桌面端、效劳器端以及手持客户端程序也是基于java语言的,所以选用eclipse 作为
这三局部的开发环境。
KeiluVision4MDK-ARM
KeiluVision4 提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境〔uVision〕将这些局部组
合在一起。
且其界面友好,调试功能强大,支持芯片型号众多,所以选其作为本系统嵌
入式局部的开发环境。
MySQL
MySQL是一个关系型数据库管理系统,它支持标准的sql语言,功能强大,访问速
度快,体积小,存储数据量大。
由于它是开源的,总体拥有本钱低,更是众多中小企业
的选择。
所以选择MySQL作为本系统数据库管理系统。
ADT
本系统手持客户端以安卓平台为主,开发工具那么选用google官方的开发工具ADT。
且
其作为插件集成在eclipse中,组成功能的强大的android集成开发环境。
所以本系统开发工具选用ADT开发手持端软件局部错误!未找到引用源。
相关技术
JavaSocket
技术
本系统桌面端、效劳器端、手持端三局部的通信都
通过scoke
完成。
Socket和
t
ServerSo
cket类库位于包中。
ServerSocket用于效劳器端,Socket在建立网络连接时使用。
当桌面端和手持端成功连接效劳器端时,三局部都会产生一个实例,在获得实例的输入输出流之后,通过向输入输出流写入字符或读取字符完成信息交互。
Javacomm技术
目前,常见的Java串口包有SUN在1998年发布的串口通API下)、的串口通信API以及一个开源的实现。
鉴于在Windows下SUN的API比拟常用以及IBM的实现和SUN的在API层面都是一样的,所以本系统选用SUN的串口通信API在Windows平台下的使用
错误!未找到引用源。
Java多线程技术
Java多线程技术实现了软件多任务并发执行。
效劳器采用多线程实现多客户端连
接。
在实现socket信息交互方面,多线程是必不可少的。
基于stm32的嵌入式控制技术
嵌入式技术依靠其体积小、本钱低、功能强等特点,适应了智能化开展的最新要求。
单片机作为控制系统的微处理器,在数据处理和代码存储等方面都已经无法满足系统的
要求,ARM微处理器资源丰富,具有良好的通用性。
Cortex-M3是ARM公司最新推出的第一款基于ARMv7体系的处理器内核。
基于Cortex-M3内核的STM32系列处理器于2007年由ST公
司率先推出,它集先进Cortex-M3内核结构、出众创新的外设、良好的功耗和低本钱于一体,极大的满足自动控制系统设计要求错误!未找到引用源。
3系统分析
系统可行性分析
技术可行性
系统手持端、效劳器端、桌面端使用java语言开发,嵌入式端使用C语言开发。
数据库选择MySQL。
开发工具使用eclipse和KeilMDK。
考虑到现今硬件的开展,在硬件上同样也是可行的。
综合技术分析来看,技术可行性本系统是可行的。
经济可行性
系统所采用的开发工具及技术均是免费的。
整个系统的开发均由本人完成,从而节
省了人力本钱。
硬件本钱方面,嵌入式模块为STM32F103C8T6核心板,价格较为廉价。
开发者有能力承当,所以经济方面也是可行的。
运行可行性
系统在开发完成之后,由开发人员调试连接完成。
在效劳器端,启动效劳器程序即可。
桌面程序端完成之后在桌面电脑开启运行即可。
对用户来说,使用桌面客户程序跟
普通软件一样。
因此,使用并没有难度。
而手持端那么是一款安装在安卓上的 app。
界面简洁,操作简单。
所以系统在运行方面也是可行的。
需求分析
需求分析是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。
需求分析是软件开发的一个关键过程。
在这个过程中,需要和用户进行反复沟通以确定用户的需求。
只有在确定了这些需求后,才能够分析和寻求新系统的解决方法。
需求分析阶段的任务是确定软件系统功能。
本系统的
使用者主要是普通家电控制用户,其次是效劳器管理用户错误!未找到引用源。
功能性需求分析
查看家电工作状态
该系统需要提供查看功能,用户能够通过手持设备端,实时查看各个家电工作状态。
以便根据家电的工作状态,作出需要的控制操作。
(2)控制家电的工作状态
系统的核心功能即要能够实现用户对家电的远程控制,用户能够通过手持端操作界
面按钮实现对指定家电的控制。
并且要求嵌入式控制端能够采集控制反响信息,并将其
传回手持控制端,以方便用户查看。
用户注册功能
新的用户上线需要进行注册,在注册之后才能进行连接,所以要求系统具有注册功
能。
方便的效劳器端程序管理
效劳器端管理人员要确保信息传递稳定可靠,拒绝非法连接。
其次需要根据当前硬
件资源限制最大连接数,防止因过多连接导致系统崩溃。
另外还需要效劳器端释放掉已经断开连接的资源。
可扩展性需求
每个用户需要控制的智能电器设备不尽相同,这需要软件具有较好的通用性。
其次
是当用户添加了新的电器或者淘汰了老旧电器之后,软件并不需要做大量软件更新。
这
就需要系统具有良好的扩展性和兼容性。
非功能性需求分析
平安性需求
每一个家庭同一时间只允许一个手持端进行控制,还要确保家电不会被他人获取连接,或进行非法控制。
界面需求
简洁美观的操作界面必然是受欢送的软件,优秀的软件界面有简便易用,突出重点,容错高等特点。
而广义上讲,软件界面就是某样事物面向外界而展示其特点及功用的
组成局部。
通常我们说的软件界面就是狭义上的软件界面。
因为软件是用户的工具,
用户需要工具使用方便,界面能直观反响信息错误!未找到引用源。
数据流分析
桌面客户端注册,桌面客户端在建立连接之前需要先注册。
桌面客户端提交用户信息给
效劳器,效劳器建桌面端提交过来的信息写入数据库。
用户注册数据流如下图。
效劳器审核信
用户选择详细信息详细信息用户信息
息
图用户注册数据流图
4系统总体设计
系统总体结构设计
系统总体分为四大局部,分别为嵌入式控制局部、桌面客户端局部、效劳器局部和
手持端局部。
每一局部的相关功能采用模块化设计,本阶段确定各模块功能和数据库设计。
每个模块分开依据高内聚低耦合的原那么错误!未找到引用源。
系统功能结构图如下图。
信息收发模块
嵌入式控制部数据处理模块
外设连接模块
用户注册模块
用户登陆模块
桌面客户端部
桌面转嵌入模
嵌入转桌面模
效劳器控制模远程控制系统
接受请求模块
数据交换模块
效劳器局部
注册模块
桌面登陆模块
手持端登陆模
登陆模块
手持端局部信息接收模块
信息发送模块
图系统功能结构图
各局部功能设计
嵌入式局部
嵌入式局部需要接收来自桌面客户端的命令,然后通过解析不同的命令进行执行,
最后通过IO口执行相关指令。
由此分析嵌入式局部主要分为三大模块,分别为信息收
发模块,数据处理模块,外设连接模块。
信息收发模块负责与桌面客户端进行通信,数
据处理模块负责解析来自桌面客户端的命令并发出向IO发送相关指令。
还需要将智能
电器设备传回的数据进行处理然后发送到信息收发模块。
让其把信息传至桌面客户端错误!未找到引用源。
嵌入式功能结构图如下图。
信息收发模块
嵌入式控制局部数据处理模块
外设连接模块
图嵌入式功能结构图
桌面客户端局部
桌面客户端局部主要负责用户账户注册、用户登陆、接收来自效劳器的信息并将其
转发到嵌入式端和接收来自嵌入式端的信息并将其转发到效劳器。
通过以上分析桌面客
户端主要分为用户注册模块、用户登陆模块、接收效劳器信息转发嵌入式模块〔以下称
效劳器转嵌入式模块〕和接收嵌入式信息转发效劳器信息模块〔以下称嵌入式转效劳器模块〕错误!未找到引用源。
桌面客户端局部功能结构图如下图。
用户注册模块
用户登陆模块
桌面客户端
效劳器转嵌入式模块
嵌入式转效劳器模块
图桌面客户端功能结构图
效劳器端局部
效劳器局部主要功能为:关闭和开启效劳器,接收请求,处理来自桌面注册请求,
处理桌面登陆请求,处理手持端登陆请求,交换数据。
通过分析效劳器应包含以下六大
模块,分别是,效劳器控制模块、接收请求模块、注册模块、桌面登陆模块、手持端登陆模块、数据交换模块错误!未找到引用源。
效劳器端功能模块结构图如下图。
效劳器控制模块
接受请求模块
数据交换模块
效劳器端
注册模块
桌面登陆模块
手持端登陆模块
图效劳器端功能结构图
手持端局部
手持端主要负责与用户的交互,首先需要登陆效劳器,所以手持端需要有登陆功能,当用户操作相关控件或者输入相关信息,手持端需要将请求发送至效劳器端,当有来自效劳器的信息时,手持端需要接收来自效劳器的信息并将其进行适宜处理之后在界
信息发送模块
错误!未找到面进行反映。
由以上分析,手持端需要登陆模块、信息发送模块,信息接收模块
引用源。
手持端局部功能模块结构图如下图。
图手持设备端功能结构图
数据库设计
数据库概念设计
由数据流分析,得到图和图所示E-R图。
密码
用户名智
能电
用户器
图用户信息
电器名设备按
钮
智能电器
图智能电器
数据库逻辑设计
通过以上用户实体图知道,数据库需要一张USER_INFO表记录用户的信息,当用户
用手持设备连接效劳器时,需要提交验证信息,效劳器通过比拟用户提交的信息与数据库中的信息进行比照,然后反响给用户,确定是否登录成功。
USER_INFO表如表所示。
表USER_INFO表
字段名类型说明
其他
User_na
me Varchar〔20〕用户名
主键
User_pw
d Varchar〔20〕密码
Have_D
evice Varchar〔500〕
拥有的电器设备
通过上面数据库逻辑设计知道,数据库需要Divice_info 表记录了各个设备的信息,通过不同设备信息进行不同操作。
Divice_info 表如表所示。
表USER_INFO表
字段名类型说明
其他
Device_n
ame Varchar〔20〕电器名
主键
Device_but
ton Varchar〔500〕拥有的按钮
5系统详细设计与实现
详细设计是软件工程中软件开发的一个步骤,是对总体设计的一个细化。
本章将在
总体设计的根底上对各个模块进行编码实现。
嵌入式局部
信息收发模块
信息收发主要利用stm32的USART模块进行通信,本系统采用的STM32F103C8T6的核心板,该芯片共有三个USART,这里我们选用 USART1。
首先初始化USART,然后配置
io口。
由于Uart1与PA9和PA10共用,所以将PA10配置为浮空输入,将PA10配置为
推挽输出。
配置代码较多,故将具体配置代码写成一个函数myusart_config() ,以便后
面程序再需同样配置,调用函数即可。
串口模块调取USART_GetFlagStatus()。
函数不断获得存放器复位标志,当串口模块获得信息,串口相应存放器标志位复位,从而判断
消息是否接受完成。
如果信息接收完成,串口模块将信息发送给信息处理模块。
通过以
上配置,信息收发模块也就完成了。
下面是主要的配置代码。
USART_Init(USART1,&USART_InitStructure);
=GPIO_Mode_AF_PP;
错误
;
未找到引
用源。
=GPIO_Mode_IN_FLOATING !
数据处理模块
首先在数据处理模块设置一个字符型变量result ,信息接收模块将接收到的信息存入该变量,数据处理模块循环检测该变量的值,如果值为空那么继续检测,如果不为空,
那么通过判断代码对其进行命令解析,然后将不同的解析命令写到外设模块。
同时由将来
自外设的数据进行处理后送到收发模块。
由于命令较少,为了提高嵌入式处理模块的速
度,从而将命令简化为单个字符。
当命令为“c〞时,处理模块作出关灯指令;当命令
为“o〞时,处理模块作出开灯指令;当命令为“ t〞时,处理模块作出采集温度指令。
嵌入式模块中采用的温度传感器DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点错误!未找到引用源。
它读取并返回的数据随温度不同而不同,当温度为正时,直接将读取的十六进制数值转换为十进制便得到实际温度值。
当温度为
负值,需要将读取的数值取反后加一便得到需要的温度值。
当收发模块读取到采集温度
命令并将其写入变量result 中,数据处理模块将想外设采集温度的指令。
在得到来自外设采集的信息后,数据处理模块对其进行处理,最后以十进制的格式送到发送模块发
送出去以下为处理模块关键代码。
While〔1〕{
If(command==’c’){
Close_light();
}elseif(command== ’o’){
Open_light();
}elseif(command== ’t’){
Tem=Get_temerature():
}
}
外设连接模块
灯光控制主要通过IO口的上下电平来控制,当IO口输出高电平点亮灯光,当IO 口输出低电平关闭灯光。
首先配置PC13为推挽输出IO,外设连接模块接受来自处理模
块的命令,从而执行输出上下电平的命令。
温度读入功能那么是通过PA6连接温度传感器
DS18B20实现温度读入错误!未找到引用源。
返回的外设将读入的值进行处理,然后输出给信息收
发模块最后传递给桌面端。
本系统采用STM32F103C8T6芯片的最小系统板进行嵌入式处
理,由于其具有大量IO口,外设控制能力强,可以同时控制大量家电。
关键代码如下。
错误!
未temperature_convert();
指定书签。
+(b)+"℃";
daout=newDataOutputStream());
("data:"+str);
效劳器端局部
效劳器控制模块
此模块主要是开启效劳器,启动接收请求的线程。
再效劳器需要关闭的时候,停止效劳,关闭所有的套接字释放资源。
启动和停止效劳器的操作通过界面上开始与停止按钮实现。
界面上设计两个textarea空间,分别用于显示来自桌面客户端和手持设备端的连接。
效劳器界面如下图。
图效劳器界面
关键代码如下所示。
Stringstr=().toString();
if(!("RUNNABLE")){();}
接收请求模块
为了实现效劳器能转发多个客户端的功能,在点击启动效劳器时,开启一个专门建
立连接的线程Accept_Thread(),线程不断的的重复监听来自桌面客户端或者手持设备
端的连接,每当监听到来自客户端的连接,此线程便为连接创立一个新线程。
新的线程
负责处理连接的信息交互。
关键代码如下。
socket=();
thread=newService_Thread(socket,desk_table,pwd_table);
();
注册模块
注册模块在接收到来自客户端的注册请求字符串时,先用正那么表达式将字符串中的
信息进行截取,截取的分隔符为“:〞。
截取后首先查询数据库是否存在相同的用户名,
如果存在,返回字符串“error〞,如果不存在,那么讲信息写入User_info 表和Device_info
表并返回“succss〞。
桌面登陆模块
当桌面客户端发送登陆请求,效劳器线程取得登陆信息,并同查询数据库获得信息
与登陆信息比拟,如果相同那么返回“succss〞并将生产的socket放入一个全局数据结
构Hashtable,中key用户名,值为socket。
关键代码如下。
(client_name,soc);
(client_name,pwd);
手持端登陆模块
当Accept_Thread()接收到手持端请求时,同样为其建立一个新线程。
线程首先查
询Hashtable是否存相同账户的客户端套接字,如果不存在,那么返回error。
如果存在,那么查询数据信息并比拟是否和请求中的信息相同,如果相同,那么返回succss,并建立信息交互线程。
否那么返回error。
关键代码如下。
scend=(Socket)(client_name);
套接字"+scend);
Strings=(String)(client_name);
if((scend==null)||!(pwd))){daout=new
DataOutputStream(out);("error");();();}
Service_Thread2service_Thread2=newService_Thread2(scend,soc);
();
数据交换模块
效劳器负责信息的双向交互,所以当手持端与桌面端建立连接之后,需要开启两个
线程,分别为从手持端到桌面端Service_Thread 和桌面端到手持端Service_Thread2 的信息交互线程。
两个线程均用无限循环实现,其中一个线程线程获取桌面端的输入流用来读取来自桌面的消息,同时获取手持端的输出流,用来将信息发送到手持端。
另一
个转发线程那么相仿。
关键代码如下。
Service_Thread2service_Thread2=newService_Thread2(scend,soc);
()
手持端局部
登陆模块
此模块主要由界面局部组成,界面设计用户信息输入框和用户命令操作按钮。
当用
户填写完信息,点击登陆按钮,此模块将开启两个模块分别用于向效劳器发送消息和接
收来来自效劳器的消息。
发送线程首先将向效劳器发送如下格式的字符串client :name:
〔这里是用户填写的姓名〕:〔这里是用户填写的密码〕。
此时接收模块不停读取来自服务器的消息,如果收到来自效劳器的字符串succes说明登录成功。
此时线程通过
handler向主界面发送消息,主界面收到消息更新界面按钮。
用户通过操作界面按钮触发发送模块向效劳器发送命令。
手持端界面如下图。
图手持端界面。