基于android的智能家居系统设计学士学位论文Word下载.docx
《基于android的智能家居系统设计学士学位论文Word下载.docx》由会员分享,可在线阅读,更多相关《基于android的智能家居系统设计学士学位论文Word下载.docx(54页珍藏版)》请在冰豆网上搜索。
![基于android的智能家居系统设计学士学位论文Word下载.docx](https://file1.bdocx.com/fileroot1/2023-2/2/8dd81bab-3e69-4525-b114-915d71901b96/8dd81bab-3e69-4525-b114-915d71901b961.gif)
Owingtotheverybigproject,itisfinishbytwppeople’steamwork.Andinthispaper,SmartHomeinandatacamefromtheJAVAbyJNIbasedonClanguage,andthenbythevarioushardwareactionhasreachedthedemandoftheuser,andthehardwaredriveprogram.
Keywords:
SmartHome,JNI,Clanguage
1绪论
1.1研究背景和意义
智能家居(英文:
smarthome,homeautomation)是以住宅为平台,利用综合布线技术、网络通信技术、安全防范技术、自动控制技术、音视频技术将家居生活有关的设施集成,构建高效的住宅设施与家庭日程事务的管理系统,提升家居安全性、便利性、舒适性、艺术性,并实现环保节能的居住环境。
智能家居是在互联网的影响之下物联化体现。
智能家居通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、影音服务器、影柜系统、网络家电等)连接到一起,提供家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段。
与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、网络通信、信息家电、设备自动化,提供全方位的信息交互功能,甚至为各种能源费用节约资金。
智能家居的概念起源很早,但一直未有具体的建筑案例出现,直到1984年美国联合科技公司(UnitedTechnologiesBuildingSystem)将建筑设备信息化、整合化概念应用于美国康涅狄格州(Connecticut)哈特佛市(Hartford)的CityPlaceBuilding时,才出现了首栋的“智能型建筑”,从此揭开了全世界争相建造智能家居派的序幕。
国内现状
智能家居作为一个新生产业,处于一个导入期与成长期的临界点,市场消费观念还未形成,但随着智能家居市场推广普及的进一步落实,培育起消费者的使用习惯,智能家居市场的消费潜力必然是巨大的,产业前景光明。
正因为如此,国内优秀的智能家居生产企业愈来愈重视对行业市场的研究,特别是对企业发展环境和客户需求趋势变化的深入研究,一大批国内优秀的智能家居品牌迅速崛起,逐渐成为智能家居产业中的翘楚!
智能家居至今在中国已经历了近12年的发展,从人们最初的梦想,到今天真实的走进我们的生活,经历了一个艰难的过程。
[2]
智能家居在中国的发展经历的四个阶段,分别是萌芽期/智能小区期、开创期、徘徊期、融合演变期。
萌芽期/智能小区期(1994年-1999年)
这是智能家居在中国的第一个发展阶段,整个行业还处在一个概念熟悉、产品认知的阶段,这时没有出现专业的智能家居生产厂商,只有深圳有一两家从事美国X-10智能家居代理销售的公司从事进口零售业务,产品多销售给居住国内的欧美用户。
开创期(2000年-2005年)
国内先后成立了五十多家智能家居研发生产企业,主要集中在深圳、上海、天津、北京、杭州、厦门等地。
智能家居的市场营销、技术培训体系逐渐完善起来,此阶段,国外智能家居产品基本没有进入国内市场。
徘徊期(2006-2010年)
2005年以后,由于上一阶段智能家居企业的野蛮成长和恶性竞争,给智能家居行业带来了极大的负面影响:
包括过分夸大智能家居的功能而实际上无法达到这个效果、厂商只顾发展代理商却忽略了对代理商的培训和扶持导致代理商经营困难、产品不稳定导致用户高投诉率。
行业用户、媒体开始质疑智能家居的实际效果,由原来的鼓吹变得谨慎,市场销售也几年出来增长减缓甚至部分区域出现了销售额下降的现象。
2005年-2007年,大约有20多家智能家居生产企业退出了这一市场,各地代理商结业转行的也不在少数。
许多坚持下来的智能家居企业,在这几年也经历了缩减规模的痛苦。
正在这一时期,国外的智能家居品牌却暗中布局进入了中国市场,而活跃在市场上的国外主要智能家居品牌都是这一时期进入中国市场的,如罗格朗、霍尼韦尔、施耐德、Control4等。
国内部分存活下来的企业也逐渐找到自己的发展方向,例如天津瑞朗,青岛爱尔豪斯,海尔,科道等,用X10,深圳索科特做了空调远程控制,成为工业智控的厂家。
融合演变期(2011-2020年)
进入2011年以来,市场明显看到了增长的势头,而且大的行业背景是房地产受到调控。
智能家居的放量增长说明智能家居行业进入了一个拐点,由徘徊期进入了新一轮的融合演变期。
接下来的三到五年,智能家居一方面进入一个相对快速的发展阶段,另一方面协议与技术标准开始主动互通和融合,行业并购现象开始出来甚至成为主流。
接下来的五到十年,将是智能家居行业发展极为快速,但也是最不可琢磨的时期,由于住宅家庭成为各行业争夺的焦点市场,智能家居作为一个承接平台成为各方力量首先争夺的目标。
谁能最终胜出,我们可以作种种分析,但最终结果,也许只有到时才知。
但不管如何发展,这个阶段国内将诞生多家年销售额上百亿元的智能家居企业。
5、爆发期
进入到2014年以来,各大厂商已开始密集布局智能家居,尽管从产业来看,业内还没有特别成功的案例显现,这预示着行业发展仍处于探索阶段,但越来越多的厂商开始介入和参与已使得外界意识到,智能家居未来已不可逆转。
目前来看,智能家居经过一年多产业磨合,已正处爆发前夜。
业内人士认为,2015年随着合作企业已普遍进入到出成果时刻,智能家居新品将会层出不穷,业内涌现的新案例也会越来越多。
[1]
国内相关政策
截止2013年,全球范围内信息技术创新不断加快,信息领域新产品、新服务、新业态大量涌现,不断激发新的消费需求,成为日益活跃的消费热点。
我国市场规模庞大,正处于居民消费升级和信息化、工业化、城镇化、农业现代化加快融合发展的阶段,信息消费具有良好发展基础和巨大发展潜力。
我国政府为了推动信息化、智能化城市发展也在2013年8月14日发表了关于促进信息消费扩大内需的若干意见,大力测发展宽带普及、宽带提速,加快推动信息消费持续增长,这都为智能家居、物联网行业的发展打下了坚实的基础。
政策摘要:
增强信息产品供给能力
鼓励智能终端产品创新发展。
面向移动互联网、云计算、大数据等热点,加快实施智能终端产业化工程,支持研发智能手机、智能电视等终端产品,促进终端与服务一体化发展。
支持数字家庭智能终端研发及产业化,大力推进数字家庭示范应用和数字家庭产业基地建设。
鼓励整机企业与芯片、器件、软件企业协作,研发各类新型信息消费电子产品。
支持电信、广电运营单位和制造企业通过定制、集中采购等方式开展合作,带动智能终端产品竞争力提升,夯实信息消费的产业基础。
[3]
国外现状
自从世界上第一幢智能建筑1984年在美国出现后,美国、加拿大、欧洲、澳大利亚和东南亚等经济比较发达的国家先后提出了各种智能家居的方案。
智能家居在美国、德国、新加坡、日本等国都有广泛应用。
1998年5月新加坡举办的“98亚洲家庭电器与电子消费品国际展览会”上,通过在场内模拟“未来之家”,推出了新加坡模式的家庭智能化系统。
它的系统功能包括三表抄送功能、安防报警功能、可视对讲功能、监控中心功能、家电控制功能、有线电视接入、电话接入、住户信息留言功能、家庭智能控制面板、智能布线箱、宽带网接入和统软件配置等。
根据美国该行业之专业顾问公司PARKS的统计资料显示:
1995年,美国一个家庭要安装家庭自动化设备的平均费用在7000至9000美元之间。
1995年美国家庭已使用先进家庭自动化设备的比率为0.33%,看来市场真正启动尚需时日。
预计这五年内,家庭自动化的市场年平均增长率为8%。
PARKS公司的资料亦显示:
到2004年,家庭网络市场总额可达57亿美元。
据国际专家预测,到2000年底国际智能家居的产品销售额可达24亿美元。
2004年可达148亿美元。
发展机遇
智慧家居是今后家居领域发展的必然趋势,虽然市场推广才刚刚开始,但行业的竞争已经很激烈,光是宁波就有不下5家企业专门从事这方面开发。
制造企业在产业调整和转型中,都需要运用到大数据。
今后,数据将成为推进社会进步的第四生产力。
市场潜力巨大,同时,智慧家居所依托的大数据分析,也是传统制造企业转型升级的重要途径。
总论:
比尔盖茨是国外第一个使用智能家居的家庭,至今快有三十年的历史了,智能家居控制系统也逐渐走进大家的视野。
这两年随着wifi的普及,无线智能家居逐渐取代了有线产品,在无线领域国内并不落后于国外,同样使用最新Zigbee智能家居,但目前国内智能家居虽有潜力但发展缓慢,人们的消费观和消费能力并不充分。
根据《中国智能家居设备行业发展环境与市场需求预测分析报告前瞻》分析,目前我国智能家居产品与技术的百花齐放,市场开始明显出现低、中、高不同产品档次的分水岭,行业进入快速成长期。
面对中国庞大的需求市场,预计该行业将以年均19.8%的速率增长,在2015年产值达1240亿元。
[4]
发展
智能家居最初的发展主要以灯光遥控控制、电器远程控制和电动窗帘控制为主,随着行业的发展,智能控制的功能越来越多,控制的对象不断扩展,控制的联动场景要求更高,其不断延伸到家庭安防报警、背景音乐、可视对讲、门禁指纹控制等领域,可以说智能家居几乎可以涵盖所有传统的弱电行业,市场发展前景诱人,因此和其产业相关的各路品牌不约而同加大力度争夺智能家居业务,市场渐成春秋争霸之势。
(以上图片来自XX的搜索)
1.2本设计所完成的工作
本文根据系统分为6个界面,包括主界面、灯光界面、闹钟界面、窗帘界面、空调及排气界面、安防界面,其中用户最先能看到的是主界面,从主界面可以进入其他的5个二级界面。
如图1.1所示
图1-1
主界面除了作为其他界面的入口,还包括当前的温湿度显示,选择在家和外出模式的切换。
其中当外出模式切换到在家模式和进入安防设置的时候需要用到RFID认证。
在灯光界面中的按钮是能够判断灯光的状态的,因此在灯光界面中会不断刷新并上传灯光的状态以便LED灯和按键的状态保持一致。
闹钟界面中我们提供一个定时闹钟可以设定在24小时内使蜂鸣器动作一次。
并且可以再闹钟发出声响之前取消。
在空调界面中由于也需要用到显示温度,可以通过温度控制空调的开启,另外由于硬件上的限制,空调在演示中也是以LED灯的形式演示。
窗帘界面可以提供两种控制窗帘的方法,包括手动直接控制窗帘和通过光照值控制窗帘的开关,为了方便用户设定合适的光照值,界面中有对当前光感的监控。
安防系统需要通过RFID的认证才能进入,此界面主要提高的安防功能是红外和烟雾警报,警报的方式都分别分为蜂鸣器警报和短信警报,而且此界面也可以对已绑定的手机号码和RFID卡进行更换。
本系统的界面使用Android写成,把用户需要求的数据传到C语言层,最后由C语言层操控硬件。
而C语言和JAVA之间的通信侧是通过JNI来完成的。
(如图1-2)
图1-2
2总括
2.1硬件
本文所用到的主要硬件有:
搭载Cortex-A8的GEC210嵌入式开发板,7英寸电阻屏,以及一块硬件拓展版。
下面是智能家居系统原理图。
2.1.1Cortex-A8
本开发板GEC210搭载的主芯片为Cortex-A8,又名“蜂鸟”,是三星推出的一款适用于智能手机和平板计算机等多媒体设备的应用处理器,Cortex-A8和S5PC110功能一样,110小封装适用于智能手机,210封装较大,主要用于平板计算机和上网本。
图2-1
Cortex-A8采用了ARMCortexTM-A8内核,ARMV7指令集,主频可达1GHZ,64/32位内部总线结构,32/32KB的数据/指令一级缓存,512KB的二级缓存,可以实现2000DMIPS(每秒运算2亿条指令集)的高性能运算能力。
ARMcortex-A8CPU原理如图2-1所示。
2.1.2拓展板
拓展版主要是为了拓展在GEC210上所没有的硬件需求,以满足智能家居的实验需要。
具体包括:
红外模块、继电器模块、步进电机、直流电机、气体传感器、温湿度传感器、光敏感测器、GPRS模块和RFID模块。
原理图及IO引脚分配如图2-2所示:
图2-2
2.1.3RFID模块芯片
拓展版所用的RFID具体型号为MFRC522,是应用于13.56MHz非接触式通信中高集成度读写卡系列芯片中的一员。
是NXP公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。
MFRC522利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。
支持ISO14443A的多层应用。
其内部发送器部分可驱动读写器天线与ISO14443A/MIFARE卡和应答机的通信,无需其它的电路。
接收器部分提供一个坚固而有效的解调和解码电路,用于处理ISO14443A兼容的应答器信号。
数字部分处理ISO14443A帧和错误检测(奇偶&
CRC)。
此外,它还支持快速CRYPTO1加密算法,用于验证MIFARE系列产品。
MFRC522支持MIFARE?
更高速的非接触式通信,双向数据传输速率高达424kbit/s。
2.2JNI
JNI是JavaNativeInterface的缩写,中文名JAVA的本地调用。
从Java1.1开始,JavaNativeInterface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。
JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,只要调用约定受支持就可以了。
使用java与本地已编译的代码交互,通常会丧失平台可移植性。
但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。
JNI标准至少保证本地代码能工作在任何Java虚拟机实现。
JNI在程序中作用的是Java和C的翻译,在本设计中起到的作用是,让C语言层得知Java的调用,以及把各种硬件信息通过实时刷新的方式不断反馈到Java中。
关系如图2-3示:
图2-3
3功能设计
3.1主界面
3.1.1温湿度监控显示
显示温湿度是智能家居的最基本功能,通过荧幕用户可以随时从中获知当前的温度和湿度。
由于温湿度显示并不需要触发事件,因此打开程序的时候就会自动触发。
温湿度的显示需要不断地刷新,也为了方便其他数值的传递,我们定义了一个叫cflags的数组,定义clags的[1][2]是用于存放温湿度的数值。
另外光感应驱动也在这里打开,方便在同一个地方把需要随时刷新的值都得到并及时更新到cflags里面去。
在监控温湿度的线程中,首先根据驱动给的借口,取得温湿度传感器的档描述符fdtemperature,通过IO控制函数temperature_ioctl(fdtemperature,&
cflags[1]);
还有emperature_ioctl(fdtemperature,&
cflags[0]);
不断循环并取得当前的温湿度数值。
在取得数值之后,通过安卓里面的handler随时刷新数值,而C层需要做的就是不断更新数组里面的所有数据并通过JNI传到上层以达到界面层和运算层的实时通信。
首先需要在初始化时把HANDLER的属性对象保存起来,先定义两个全局变量jobjectg_obj=NULL;
和JavaVM*g_vm=NULL;
然后在JNI执行初始化是进行环境变量的保存(*env)->
GetJavaVM(env,&
g_vm);
和g_obj=(*env)->
NewGlobalRef(env,obj);
在更新线程中释放之前保存的全局变量以便找到JAVA中的对象即对应的JAVA数组并转换上传,具体操作是:
jclassgasdevclazz=(*g_env)->
GetObjectClass
(g_env,g_obj);
jfieldIDfieldID=(*g_env)->
GetFieldID
(g_env,gasdevclazz,"
flags"
"
[I"
);
jflags=(*g_env)->
GetObjectField
(g_env,g_obj,fieldID);
jclassiclass=(*g_env)->
GetObjectClass(g_env,g_obj);
jmethodIDmethodId=(*g_env)->
GetMethodID(g_env,iclass,
"
HandlerArray"
(I)V"
3.1.2在家模式和外出模式的切换
由于在出门的时候用户经常需要关闭很多的用电器,整合一个外出模式就能为用户提供极大的便利。
外出系统的主要功能是在用户切换到外出功能的10秒后,关闭室内的所有可控制用电器并打开所有可用警报的短信通知。
在家模式和外出模式,根据界面需求,只设置一个触发动作的界面,具体操作是当用户按下外出模式按钮C语言层接受到触发命令,在C语言层通过利用pthread_create创建两个线程:
第一个线程首先利用线程分离函数pthread_detach(pthread_self())进行线程的分离,使用sleep(10)等待10秒后,若10秒之内判断到外出模式的标志位cflags[3]依然是1,就通过包装过的驱动界面把用电器关闭,把标志红外入侵警报的cflags[4]和标志有毒气体警报的clags[5]都设置成短信通知,并把所有存储用电器状态值的cflags中的相关数值进行刷新,最后关闭线程;
另一个线程则是负责不断监听RFID,也是先通过分离线程,然后使用while
(1)不断循环,在循环体内打开rfid驱动,每0.5秒启动一次,用if判断语句当识别到用户绑定的ID卡时切换为在家模式把红外警报和气体警报标志位置成关闭状态,并关闭线程。
工作原理流程图如3-1所示。
N
Y
图3-1
3.1.3进入安防界面
在进入安防界面的时候需要用到RFID卡的认证,为上层界面提供了一个触发界面,具体操作是当接收到界面传来的进入安防界面动作时,在C语言层开辟一个安防进入的线程,利用for循环轮询,每次循环相隔0.5秒,然后用if语句把存储有绑定的有效rfid卡ID的cfags[17]与rfid识别到的卡号进行比对,当一致时把cfags[6]置成ID卡号表示进入安防界面成功,如果在5秒内未能识别正确的ID卡号,就把cfags[6]置成1表示进入安防界面失败。
如流程图3-2所示。
图3-2
3.2闹钟
闹钟是智能家居中一个重要的功能,此闹钟可以设定在24小时内使蜂鸣器发出一次声响,并且能够随时取消并重新设置。
此界面给上层提供的界面是传递一个字符串,通过算法把字符串提取成数字并作为设定时间。
若当前时间和设定时间一致则蜂鸣器动作。
每次判断蜂鸣器是否动作之前都需要先判断标志位,看看用户是否取消闹钟。
是的话就停止减少时间并跳出该段程序。
具体操作是在初始化的时候先建立好闹钟线程(后面会说到闹钟线程还整合了其他功能),然后分离线程,通过time_ttp;
和structtm*s_tm;
定义时间结构体并且通过tp=time(NULL);
和s_tm=localtime(&
tp);
两个函数取得当前时间,同时通过以下if语句判断:
if(((cflags[16]/10000)==1)&
&
((s_tm->
tm_hour)==(cflags[16]%10000/100))&
tm_min)==(cflags[16]%100)))
其中cflags[16]中,后面四位是表示用户设定的时间和分钟,第一位是指是否设定闹钟的标志位,如果标志闹钟的clags[16]不为0而当前的时分与用户设定的时分又是一致的话,就直接通过蜂鸣器的包装驱动设置蜂鸣器的合适占空比和周期,并持续动作10秒,之后则把闹钟标志位clags[16]置0。
该流程如图3-3所示:
图3-3
3.3灯光
灯光的直接控制就是通过用户直接点击上层按钮,传到下层直接打开驱动进行操作,操作完成后刷新标志位。
可以每次控制一个LED灯或者是一次控制所有的LED灯,方便用户控制。
在灯光界面我们给上层界面只需要提供一个界面,传进来一个int型数,就可以知道用户的意图,通过if语句判断,当传进来的数是13或者14,我们就把对应的房间或者客厅LED灯取反,如果传进来的数是0,就把所有LED灯关掉,1则是打开所有的LED灯,在开关后必须把标志灯光状态的标志位更新。
另外,出于环保的考虑,我们默认设置了,当光照值大于4000的时候,灯光会自动关闭。
3.4窗帘
3.4.1