智能家居的设计与实现.docx
《智能家居的设计与实现.docx》由会员分享,可在线阅读,更多相关《智能家居的设计与实现.docx(27页珍藏版)》请在冰豆网上搜索。
智能家居的设计与实现
摘要
智能家居是未来家居生活的趋势,也是物联网时代的主要产品之一。
随着计算机技术、通讯技术和嵌入式系统的发展,智能家居已经越来越多的进入人们的生活。
本文尝试从几个方面改造现有家用电器,实现简单的智能家居效果。
主要包括红外线遥控器控制空调、电视,zigbee及继电器控制灯光,并尝试使用MT7681wifi串口模块实现手机和智能家居主控的通讯。
主控部分选用Arduino开源硬件平台。
Arduino是一个基于开放源代码的软硬件平台,具有使用类似Java,C语言的Processing/Wiring开发环境。
Arudino作为智能家居的控制中心实现与互联网或手机的交互,通过Internet也可随时监控家中的情况,并可以随时控制家用电器。
系统测试结果表明,该系统基本达到预期使用要求,并具有一定功能拓展空间。
关键词:
智能家装;嵌入式;Arduino
Abstract
Itwouldbethetrendoffuture-----SmartHome.ItwouldbeoneofthemostimportantproductoftheInternetofthings.asthedevelopmentofcomputersystem,communicationandembeddedsystem.SmartHomehasbeenmoreandmoreavailableinourlife.
NowIwanttoremadethehouseholdappliances,TobuildasimpleSmartHomesystem.IchangemyphonetobeainfraredremotecontrolunitfortheairconditioningandTV.Usezigbeeunitandrelayforcontrolthelight.AndtrytomakeanetgatebyMT7681.ArduinoisuseforthemaincontrolunitofthesystemofSmarthome.Arduinoisaopensourceproject,It’sbaseonprocessing/wiringdevelopmentenvironment,justasjavaorC.Arduinoisuseasthemaincontrolunitofthehouse.anditcancontactwiththeInternetorthephone.Youcanwatcheverythingofyourhouseandalsocancontrolthembyyourphone.
Testingshowthatthesystemworkwell,andalsocanbeexpend.
KEYWORD:
Smarthome;embeddedsystem;Araduino
1.绪论
1.1智能家居的概念及其发展趋势
智能家居,或称智能住宅。
智能家居是以住宅为平台,兼备建筑、网络通信、信息家电、设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境。
智能家居可以定义为一个过程或者一个系统。
利用先进的计算机技术、网络通讯技术、综合布线技术、将与家居生活有关的各种子系统,有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全、有效。
与普通家居相比,智能家居不仅具有传统的居住功能,提供舒适安全、高品位且宜人的家庭生活空间;还由原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交换功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性。
融合了自动化控制系统、计算机网络系统和网络通讯技术于一体的网络化智能化的家居控制系统。
智能家居将让用户有更方便的手段来管理家庭设备,比如,通过加触摸屏、无线遥控器、电话、互联网或者语音识别控制家用设备,更可以执行场景操作,使多个设备形成联动;另一方面,智能家居内的各种设备相互间可以通讯,不需要用户指挥也能根据不同的状态互动运行,从而给用户带来最大程度的高效、便利、舒适与安全。
智能化家装为用户提供了始终在线的网络服务,与互联网随时相连,为在家办公提供了方便条件。
智能安防可以实时监控非法闯入、火灾、煤气泄露、紧急呼救的发生。
一旦出现警情,系统会自动向中心发出报警信息,同时启动相关电器进入应急联动状态,从而实现主动防范。
家电的智能控制和远程控制,如对灯光照明进行场景设置和远程控制、电器的自动控制和远程控制等。
可以通过语音识别技术实现智能家电的声控功能;通过各种主动式传感器(如温度、声音、动作等)实现智能家居的主动性动作响应。
环境自动控制。
如家庭中央空调系统。
提供全方位家庭娱乐。
如家庭影院系统和家庭中央背景音乐系统。
现代化的厨卫环境。
主要指整体厨房和整体卫浴。
管理家庭信息及与小区物业管理公司联系。
家庭理财服务。
通过网络完成理财和消费服务。
智能信息家电可以通过服务器直接从制造商的服务网站上自动下载、更新驱动程序和诊断程序,实现智能化的故障自诊断、新功能自动扩展。
在不久的将来智能话家居将不再是一座被动的房间或者建筑,而成为帮助人们更合理的利用时间的工具。
使家庭,工作,生活更高效节能。
网络化的智能家装可以为人们提供在任何地方遥控家里的家电,照明,窗帘等的功能。
也能提供更好的防盗报警,火灾报警等功能。
智能算法也使得设备可以学习主人的生活习惯,自动完成很多设置和功能。
配合云端大数据和类似苹果公司的siri或者微软公司的kinect等交互设备。
会给人们带来全新的生活体验。
1.2智能家装控制系统功能
1.2.1智能家居的监控
家庭设备的远程监控包括电器设备的集中、远距离(通过手机APP或者Internet)遥控设备、控制及数据采集。
(图1.2.1)
图1.2.1智能家装的示意图
(1)家用电器的监视和控制,可以使用遥控器来控制家里的灯光、热水器、电动窗帘、饮水机、空调等设备的开关、同时控制诸如电视、DVD、音响等设备。
(2)定时控制:
提前设定某些产品的开启关闭时间,可以有效的节约能源。
(3)集中控制:
可以在客厅同时打开卧室和卫生间的灯,并开始给浴缸注热水,夜晚还可以在卧室打开走廊和卫生间的灯光、调试灯光亮度。
还可以随时参看各设备的运行情况。
(4)网络远程控制:
无论身在何处都可以通过Internet或者手机监视家里的一举一动。
并可以随时操控家中的电器。
1.2.2家庭安全防范
(1)监控系统是用于本地和远程了解特定区域情况,保留录像备查,起着威慑、监督、取证和管理作用的网络系统。
当用户全家外出旅游时,家中无人,一定不放心家中的安全。
这时你只要打开电脑,连接上系统,就可以看到家里的各个角落,房里的灯有没有关?
厨房的水电有没有漏?
有没有贼闯入家里?
一目了然。
智能家居的监控系统还具有实时监控功能,通过分布在室内的电视机,监视器,触摸屏,可以实时监控住宅周边、门口、各个房间、室内通道、车库等重点区域的实时情况。
系统还会自动将实时监控或者远程监控的影像通过硬盘录像功能录制下来。
如果有盗贼闯进家,就可以记录下盗贼的影像作为证据。
(2)报警系统通过报警系统将家居环境发生的意外灾情,如:
非法入侵,火灾,燃气泄漏等第一时间通知到你或相关人员,以得到及时处理。
报警系统通过报警主机布置处理安装在室内外的各种探测器,将探测器发出的信号最快地传递到相关的人员。
厂家提供有各种功能用途的探测器,适用于家庭的不同区域。
(3)门禁安全系统是非常重要的,它是家庭防护的第一道防线。
智能家居的门禁系统在为你提供防护的同时还能为你提供了更多出入的方便。
你可以通过授权自己,家人,客人通过密码,刷卡,或者指纹,语音口令等智能识别认证方便的进出你的家门。
安全防护系统还包括许多的内容,智能家居安全防护系统是一个复杂的的网络系统。
各种智能防护设备通过信息通讯系统、网络系统彼此配合协调工作,组成一个智能化的安全防护系统。
它为我们享受高品质的智能居家生活提供有力的保障。
2.软硬件系统
本文设计利用Arduino基于AVR的开源嵌入式硬件平台,2.4Ghzzigbee模块,IR红外收发模块,MT7681wifi串口模块实现智能家装的一些功能。
系统设计包括系统的硬件设计和调试和控制软件的编写。
2.1硬件部分
2.1.1Arduino平台介绍
Arduino是一个基于开放原始码的软硬件平台,构建于开放源代码simpleI/O介面版,并且具有使用类似Java,C语言的Processing/Wiring的开发环境。
图2.1.1Arduino开发板
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。
板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,收录进微控制器。
对Arduino的编程是利用Arduino编程语言(基于Wiring)和Arduino开发环境(basedonProcessing)来实现的。
基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信(比如Flash,Processing,MaxMSP)来实现。
可以自己动手制作,也可以购买成品套装;Arduino所使用到的软件都可以免费下载。
硬件参考设计(CAD文件)也是遵循availableopen-source协议,你可以非常自由地根据你自己的要求去修改他们。
2.1.2zigbee模块
ZigBee是基于IEEE802.15.4标准的低功耗局域网协议。
根据国际标准规定,ZigBee技术是一种短距离、低功耗的无线通信技术。
这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络。
其特点是近距离、低复杂度、自组织、低功耗、高数据速率。
主要适合用于自动控制和远程控制领域,可以嵌入各种设备。
简而言之,ZigBee就是一种便宜的,低功耗的近距离无线组网通讯技术。
2.1.3MT7681串口wifi模块
串口WIFI模块是基于Uart接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户串口数据到无线网络之间的转换。
通过串口WIFI,传统的串口设备也能轻松接入无线网络
2.2软件部分
软件设计部分主要由以下几大部分构成:
即数据采集与数据分析部分及分析控制部分。
数据采集部分是对传感器的信号进行采集,分析控制部分则是根据采集的信息进行分时操作有利于提高系统效。
Arduino可以兼容C/C++。
3.系统设计方案
3.1红外线遥控
3.1.1红外遥控的原理
红外遥控系统主要分为调制、发射和接收三部分,如下图所示:
调制:
红外遥控发射数据时采用调制的方式,即把数据和一定频率的载波进行“与”操作,这样可以提高发射效率和降低电源功耗。
调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图所示,这是由发射端所使用的455kHz晶振决定的。
在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9kHz≈38kHz。
发射系统:
目前有很多种芯片可以实现红外发射,可以根据选择发出不同种类的编码。
由于发射系统一般用电池供电,这就要求芯片的功耗要很低,芯片大多都设计成可以处于休眠状态,当有按键按下时才工作,这样可以降低功耗芯片所用的晶振应该有足够的耐物理撞击能力,不能选用普通的石英晶体,一般是选用陶瓷共鸣器,陶瓷共鸣器准确性没有石英晶体高,但通常一点误差可以忽略不计。
红外线通过红外发光二极管(LED)发射出去,红外发光二极管内部材料和普通发光二极管不同,在其两端施加一定电压时,它发出的是红外线而
不是可见光。
最简单电路,选用元件时要注意三极管的开关速度要快,还要考虑到LED的正向电流和反向漏电流,一般流过LED的最大正向电流为100mA,电流越大,其发射的波形强度越大。
这个电路有一点缺陷,当电池电压下降时,流过LED的电流会降低,发射波形强度降低,遥控距离就会变小。
而射极输出电路可以解决这个问题,两个二极管把三级管基极电压钳位在1.2V左右,因此三级管发射极电压固定在0.6V左右,发射极电流IE基本不变,根据IE≈IC,所以流过LED的电流也基本不变,这样保证了当电池电压降低时还可以保证一定的遥控距离。
接收:
红外接收电路通常被厂家集成在一个元件中,成为一体化红外接收头。
内部电路包括红外监测二极管,放大器,限副器,带通滤波器,积分电路,比较器等。
红外监测二极管监测到红外信号,然后把信号送到放大器和限幅器,限幅器把脉冲幅度控制在一定的水平,而不论红外发射器和接收器的距离远近。
交流信号进入带通滤波器,带通滤波器可以通过30khz到60khz的负载波,通过解调电路和积分电路进入比较器,比较器输出高低电平,还原出发射端的信号波形。
注意输出的高低电平和发射端是反相的,这样的目的是为了提高接收的灵敏度。
3.1.2采集红外遥控器的编码
主要使用了38kHz红外一体化接收头,因为已经集成了三极管,所以不需要为了增加功率而额外配三极管。
红外led和100Ω电阻。
电路示意图(如图3.1.1)
图3.1.1红外线接收部分电路图
实物组装完成后(如图3.1.2)
图3.1.2红外线接收实物图
接收红外线编码的代码如下:
/* *IRremote:
IRrecvDemo-demonstratesreceivingIRcodeswithIRrecv
*AnIRdetector/demodulatormustbeconnectedtotheinputRECV_PIN.
*Version0.1July,2009
*Copyright2009KenShirriff
*[url][/url]
*/
#include
intIR_PIN=11;//定义红外接收器的引脚为11
IRrecvrecv(IR_PIN);
decode_resultsresults;
voidsetup(){
Serial.begin(9600);
recv.enableIRIn();//初始化红外接收器
}
voidloop(){
if(recv.decode(&results)){
Serial.println(results.value,HEX);//以16进制换行输出接收代码
Serial.println();//为了便于观看输出结果增加一个空行
recv.resume();//接收下一个值
}
}
经过查阅相关资料了解到,当按下遥控器的按键时,遥控器将发出的一串二进制代码,我们称它为一帧数据。
根据各部分的功能。
可将它们分为5部分,分别为引导码、地址码、地址码、数据码、数据反码。
遥控器发射代码时.均是低位在前。
高位在后。
分析可以得到.引导码高电平为4.5ms,低电平为4.5ms。
当接收到此码时.表示一帧数据的开始。
单片机可以准备接收下面的数据。
地址码由8位二进制组成,共256种.地址码重发了一次。
主要是加强遥控器的可靠性.如果两次地址码不相同.则说明本帧数据有错.应丢弃。
不同的设备可以拥有不同的地址码.因此。
同种编码的遥控器只要设置地址码不同,也不会相互干扰。
所有按键发出的地址码都是相同的。
数据码为8位,可编码256种状态,代表实际所按下的键。
数据反码是数据码的各位求反,通过比较数据码与数据反码.可判断接收到的数据是否正确。
如果数据码与数据反码之间的关系不满足相反的关系.则本次遥控接收有误.数据应丢弃。
在同一个遥控器上.所有按键的数据码均不相同。
用串口调试助手启用监控,依次记录下空调或电视遥控器上所有键的编码。
如图(3.1.3)
图3.1.3记录所有按键的编码
3.1.3红外线发射
红外线发射的电路同上面接收的电路是一样的,只是控制Arduino的3号管脚输出PWM(脉冲宽度调制)。
代码如下
/**发射红外线信号
*/
#include //引用IRRemote函式库
RsendIRsend; //定义IRsend来发射红外线讯号
voidsetup(){
pinMode(3,OUTPUT);
digitalWrite(3,HIGH); //点亮LED测试(可以过手机摄像模式观察)
delay(3000); //等待3秒
digitalWrite(3,LOW); //结束测试
}
voidloop()
{
Serial.print("SendIR:
");
IRsend.sendNEC(0x837F18E7,32); //0x837F18E7为频道增加按钮
delay(3000); //等待3秒}
对着电视试验了一下可以使用。
机顶盒和空调遥控器同理。
这样就实现了使用嵌入式系统来控制家用电器的功能。
但是由于硬件条件限制,红外发射器的有效距离和角度都有很大限制,暂时想到的解决办法是用多个发射器同时发射,针对不同家用电器放置不同的角度和位置。
另外由于家里使用的是创维的电视盒机顶盒和美的空调的遥控器。
以上三个的红外遥控没有相互编码相同的情况,其他品牌的因条件有限未做实验。
3.2可燃气体报警
3.2.1MQ-2传感器
MQ-2Sensor是基于QM-NG1探头的气体传感器,QM-NG1是采用目前国际上工艺最成熟,生产规模最大的Sn02材料作为敏感基体制作的广谱性气体传感器。
该产品的最大特点是对各种可燃性气体(如氢气、液化石油气、一氧化碳、烷烃类等气体)以及酒精、乙醚、汽油、烟雾等有毒气体具有高度的敏感性。
使用方法:
1元件开始通电工作时,没有接触丁烷气体,其电导率也急剧增加,约一分钟后达到稳定,这时方可正常使用,这段变化在设计电路时可采用延时处理解决。
2加热电压的改变会直接影响元件的性能,所以在规定的电压范围内使用为佳。
3元件在接触标定气体1000ppm丁烷后10秒钟以内负载电阻两端的电压可达到(Vdg-Va)差值的70%(即响应时间);脱离标定气体1000ppm丁烷30秒钟以内负载电阻两端的电压下降到(Vdg-Va)差值的70%(即恢复时间)。
4符号说明检测气体中电阻-Rdg、检测气体中电压-Vdg、Rdg与Vdg的关系:
Rdg=RL(VC/Vdg-1)
5负载电阻可根据需要适当改动,以满足设计的要求。
6使用条件:
温度-15~40℃;相对湿度20~85%RH;大气压力80~106KPa。
7环境温湿度的变化会给元件电阻带来小的影响,可进行湿度补偿,最简便的方法是采用热敏电阻补偿之。
8避免腐蚀性气体及油污染,长期使用需防止灰尘堵塞防爆不锈钢网。
3.2.2燃气报警器的制作
(1)将MQ-2的VCC和GND引脚单独共5V电源。
(2)数据引脚连接入Arduino开发板的P0端子。
(3)红色LED接入Arduino开发板的P1端子。
(4)喇叭接入Arduino开发的P2端子。
实物(如图:
3.2.1)
图3.2.1蜂鸣燃气报警器
代码如下:
#defineled1
#definealarm2
voidsetup()
{
Serial.begin(9600);
}
voidloop()
{
intval;
val=analogRead(0);
if(val>200){
led=1;
alarm=1;
}
else{
led=0;
alarm=0;
}
Serial.println(val,DEC);
delay(100);
}
当MQ-2检测的值超标时触发报警,喇嘛发声,并且红灯亮起。
起到报警作用。
3.3zigbee组网和控制
3.3.1zigbee的组网
Arduino附加Zigduino内部集成了802.15.4协议无线模块,支持任何基于802.15.4协议的无线模块,包括ZigBee。
组网方案设计:
组建一个完整的zigbee网状网络包括两个步骤:
网络初始化、节点加入网络,其中节点加入网络又包括两个步骤:
通过与协调器连接入网和通过已有父节点入网。
Zigbee网络的建立是由网络协调器发起的,任何一个zigbee节点要组建一个网络必须要满足以下两点要求:
(1)节点是FFD节点,具备zigbee协调器的能力;
(2)节点还没有与其他网络连接,当节点已经与其他网络连接时,此节点只能作为该网络的子节点,因为一个zigbee网络中有且只有一个网络协调器。
网络初始化的流程如下:
(1)确定网络协调器,首先判断节点是否是FFD节点,接着判断此FFD节点是否在其他网络里或者网络里是否已经存在协调器。
通过主动扫描,发送一个信标请求命令(Beaconrequestcommand),然后设置一个扫描期限(T_scan_duration),如果在扫描期限内都没有检测到信标,那么就认为FFD在其pos内没有协调器,那么此时就可以建立自己的zigbee网络,并且作为这个网络的协调器不断地产生信标并广播出去。
(2)进行信道扫描过程。
包括能量扫描和主动扫描两个过程:
首先对指定的信道或者默认的信道进行能量检测,以避免可能的干扰。
以递增的方式对所测量的能量值进行信道排序,抛弃那么些能量值超出了可允许能量水平的信道,选择可允许能量水平的信道并标注这些信道是可用信道。
接着进行主动扫描,搜索节点通信半径内的网络信息。
这些信息以信标帧的形式在网络中广播,节点通过主动信道扫描方式获得这些信标帧,然后根据这些信息,找到一个最好的、相对安静的信道,通过记录的结果,选择一个信道,该信道应存在最少的zigbee网络,最好是没有zigbee设备。
在主动扫描期间,mac层将丢弃phy层数据服务接收到的除信标以外的所有帧。
(3)设置网络ID。
找到合适的信道后,协调器将为网络选定一个网络标识符(PANID,取值<=0x3FFF),这个ID在所使用的信道中必须是唯一的,也不能和其他zigbee网络冲突,而且不能为广播地址oxFFFF(此地址为保留地址,不能使用)。
PANID可以通过侦听其他网络的ID然后选择一个不会冲突的ID的方式来获取,也可以人为的指定扫描的信道后来确定不和其他网络冲突的PANID。
在zigbee网络中有两种地址模式:
扩展地址(64位)和短地址(16位),其中扩展地址由IEEE组织分配,用于唯一的设备标识;短地址用于本地网络中设备标识,在一个网络中,每个设备的短地址必须唯一,当节点加入网络时由其父节点分配并通过使用短地址来通信。
对于协调器来说,短地址通常设定为0x0000;
上面步骤完成后,就成功初始化了zigbee网状