智能家居的设计与实现_第1页
智能家居的设计与实现_第2页
智能家居的设计与实现_第3页
智能家居的设计与实现_第4页
智能家居的设计与实现_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

摘要智能家居是未来家居生活的趋势,也是物联网时代的主要产品之一。随着计算机技术、通讯技术和嵌入式系统的发展,智能家居已经越来越多的进入人们的生活。本文尝试从几个方面改造现有家用电器,实现简单的智能家居效果。主要包括红外线遥控器控制空调、电视,zigbee及继电器控制灯光,并尝试使用MT7681wifi串口模块实现手机和智能家居主控的通讯。主控部分选用Arduino开源硬件平台。Arduino是一个基于开放源代码的软硬件平台,具有使用类似 Java,C语言的Processing/Wiring开发环境。Arudino作为智能家居的控制中心实现与互联网或手机的交互,通过Internet也可随时监控家中的情况,并可以随时控制家用电器。系统测试结果表明,该系统基本达到预期使用要求,并具有一定功能拓展空间。关键词:智能家装;嵌入式;ArduinoAbstractItwouldbethetrendoffuture SmartHome.ItwouldbeoneofthemostimportantproductoftheInternetofthings.asthedevelopmentofcomputersystem,communicationandembeddedsystem.SmartHomehasbeenmoreandmoreavailableinourlife.NowIwanttoremadethehouseholdappliancesTobuildasimpleSmartHomesystem.IchangemyphonetobeainfraredremotecontrolunitfortheairconditioningandTUsezigbeeunitandrelayforcontrolthelight.AndtrytomakeanetgatebyMT7681.ArduinoisuseforthemaincontrolunitofthesystemofSmarthome.Arduinoisaopensourceproject,Itsbaseonprocessing/wiringdevelopmentenvironment,justasjavaorC.Arduinoisuseasthemaincontrolunitofthehouse.anditcancontactwiththeInternetorthephone.oucanwatcheverythingofyourhouseandalsocancontrolthembyyourphone.Testingshowthatthesystemworkwell,andalsocanbeexpend.KEYWORD:Smarthome;embeddedsystem;AraduinoTOC\o"1-5"\h\z摘要 !..Abstract 错误!未定义书签。\o"CurrentDocument"绪论 1..1.1智能家装的概念及其发展趋势 11.2智能家装控制系统功能 智能家居的监控 家庭安全防范. 4.软硬件系统 .6..2.1硬件部分 .6.Arduino平台介绍 6.zigbee模块 7.MT7681串口wifi模块 8.2.2软件部分 8..\o"CurrentDocument"系统设计方案. 9..3.1红外线遥控 9..3.1.1红外遥控的原理 采集红外遥控器的编码 103.1.3红外线发射. 133.2可燃气体报警 14MQ-2传感器 143.2.2燃气报警器的制作 15zigbee组网和控制 17zigbee的组网 17zigbee通过继电器控制台灯. 19zigbee的特点 21交互设计方案. 24\o"CurrentDocument"项目结论 30参考文献 331.绪论1.1智能家居的概念及其发展趋势智能家居,或称智能住宅。智能家居是以住宅为平台,兼备建筑、网络通信、信息家电、设备自动化,集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境。智能家居可以定义为一个过程或者一个系统。利用先进的计算机技术、网络通讯技术、综合布线技术、将与家居生活有关的各种子系统,有机地结合在一起,通过统筹管理,让家居生活更加舒适、安全、有效。与普通家居相比,智能家居不仅具有传统的居住功能,提供舒适安全、高品位且宜人的家庭生活空间;还由原来的被动静止结构转变为具有能动智慧的工具,提供全方位的信息交换功能,帮助家庭与外部保持信息交流畅通,优化人们的生活方式,帮助人们有效安排时间,增强家居生活的安全性。融合了自动化控制系统、计算机网络系统和网络通讯技术于一体的网络化智能化的家居控制系统。智能家居将让用户有更方便的手段来管理家庭设备,比如,通过加触摸屏、无线遥控器、电话、互联网或者语音识别控制家用设备,更可以执行场景操作,使多个设备形成联动;另一方面,智能家居内的各种设备相互间可以通讯,不需要用户指挥也能根据不同的状态互动运行,从而给用户带来最大程度的高效、便利、舒适与安全。智能化家装为用户提供了始终在线的网络服务,与互联网随时相连,为在家办公提供了方便条件。智能安防可以实时监控非法闯入、火灾、煤气泄露、紧急呼救的发生。一旦出现警情,系统会自动向中心发出报警信息,同时启动相关电器进入应急联动状态,从而实现主动防范。家电的智能控制和远程控制,如对灯光照明进行场景设置和远程控制、电器的自动控制和远程控制等。可以通过语音识别技术实现智能家电的声控功能;通过各种主动式传感器(如温度、声音、动作等)实现智能家居的主动性动作响应。环境自动控制。如家庭中央空调系统。提供全方位家庭娱乐。如家庭影院系统和家庭中央背景音乐系统。现代化的厨卫环境。主要指整体厨房和整体卫浴。管理家庭信息及与小区物业管理公司联系。家庭理财服务。通过网络完成理财和消费服务。智能信息家电可以通过服务器直接从制造商的服务网站上自动下载、更新驱动程序和诊断程序,实现智能化的故障自诊断、新功能自动扩展。在不久的将来智能话家居将不再是一座被动的房间或者建筑,而成为帮助人们更合理的利用时间的工具。使家,工作,生活更高效节能。网络化的智能家装可以为人们提供在任何地方遥控家里的家电,照明,窗帘等的功能。也能提供更好的防盗报警,火灾报警等功能。智能算法也使得设备可以学习主人的生活习惯自动完成很多设置和功能。配合云端大数据和类似苹果公司的iri或者微软公司的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硬件部分Arduino平台介绍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协议,你可以非常自由地根据你自己的要求去修改他们。zigbee模块ZigBee是基于IEEE802.15.4标准的低功耗局域网协议。根据国际标准规定,ZigBee技术是一种短距离、低功耗的无线通信技术。这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂0。。)是靠飞翔和“嗡嗡-(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络其特点是近距离、低复杂度、自组织、低功耗、高数据速率。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。简而言之ZigBee就是一种便宜的,低功耗的近距离无线组网通讯技术。MT7681串口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的方波,如图所示,这是由发射端所使用啊55kHz晶振决定的。在发射端要对晶振进行整数分频,分频系数一般取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红外一体化接收头,因为已经集成了三极管,所以不需要为了增加功率而额外配三极管。红外《d和100Q电阻。

电路示意图(如图3.1.1)Arduinopins图3.1.1红外线接收部分电路图实物组装完成后(如图3.1.2)图3.1.2红外线接收实物图接收红外线编码的代码如下:/**IRremote:IRrecvDemo-demonstratesreceivingIRcodeswithIRrecvAnIRdetector/demodulatormustbeconnectedtotheinputRECV_PIN.Version0.1July,2009Copyright2009KenShirriff[url][/url]*/#include<IRremote.h>intIR_PIN=11;定义红外接收器的引脚为11IRrecvrecv(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.h> //引用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可燃气体报警MQ-2传感器MQ-2Sensor是基于QM-NG1探头的气体传感器,QM-NG1是采用目前国际上工艺最成熟,生产规模最大邮口02材料作为敏感基体制作的广谱性气体传感器。该产品的最大特点是对各种可燃性气体(如氢气、液化石油气、一氧化碳、烷烃类等气体以及酒精、乙醚、汽油、烟雾等有毒气体具有高度的敏感性。使用方法:1元件开始通电工作时,没有接触丁烷气体,其电导率也急剧增加,约一分钟后达到稳定,这时方可正常使用,这段变化在设计电路时可采用延时处理解决。2加热电压的改变会直接影响元件的性能,所以在规定的电压范围内使用为佳。3元件在接触标定气体1000ppm丁烷后10秒钟以内负载电阻两端的电压可达到(Vdg-Va)差值的70%(即响应时间);脱离标定气体1000ppm丁烷30秒钟以内负载电阻两端的电压下降到(Vdg-Va)差值的70%(即恢复时间)。4符号说明检测气体中电KRdg、检测气体中电压Vdg、Rdg与Vdg的关系:Rdg=RL(VC/Vdg-1)5负载电阻可根据需要适当改动,以满足设计的要求。6使用条件:温度-15〜40笆;相对湿度20〜85%RH;大气压力80〜106KPa。7环境温湿度的变化会给元件电阻带来小的影响,可进行湿度补偿,最简便的方法是采用热敏电阻补偿之。8避免腐蚀性气体及油污染,长期使用需防止灰尘堵塞防爆不锈钢网。3.2.2燃气报警器的制作将MQ-2的VCC和GND引脚单独共5V电源。数据引脚连接入Arduino开发板的P0端子。红色LED接入Arduino开发板的P1端子。喇叭接入Arduino开发的P2端子。实物(如图:3.2.1)图3.2.1蜂鸣燃气报警器代码如下:#defineled1#definealarm2voidsetup(){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组网和控制zigbee的组网Arduino附加Zigduino内部集成了802.15.4协议无线模块,支持任何基于802.15.4协议的无线模块,包括ZigBee。组网方案设计:组建一个完整的zigbee网状网络包括两个步骤:网络初始化、节点加入网络,其中节点加入网络又包括两个步骤:通过与协调器连接入网和通过已有父节点入网。Zigbee网络的建立是由网络协调器发起的,任何一个igbee节点要组建一个网络必须要满足以下两点要求:(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的方式来获取,也可以人为的指定扫描的信道后来确定不和其他网络冲突通ANID。在zigbee网络中有两种地址模式:扩展地址64位)和短地址(16位),其中扩展地址由IEEE组织分配,用于唯一的设备标识;短地址用于本地网络中设备标识,在一个网络中,每个设备的短地址必须唯一,当节点加入网络时由其父节点分配并通过使用短地址来通信对于协调器来说,短地址通常设定为0x0000;上面步骤完成后,就成功初始化Tzigbee网状网络,之后就等待其他节点的加入。节点入网时将选择范围内信号最强的父节点包括协调器)加入网络,成功后将得到一个网络短地址并通过这个地址进行数据的发送和接收,网络拓扑关系和地址就会保存在各自的flash中。zigbee通过继电器控制台灯Zigduino控制器是zigbee和Arduino的整合模块,和继电器模块配合使用实现对于台灯的控制。将继电器的线圈分别接至Zigduino控制器的P3和GND,触点接220V的零线。接到远程信号时P3输出高、低电平。控制继电器的触点从而控制台灯的开关。原理图(如囹

J.T-D-F:AVt-I-5P]图J.T-D-F:AVt-I-5P]图3.2.1ZIGBEE模块原理图tMHUCCFtlDilltt.ll□nwni□unrnilSTATU■tn)CtlKErHCn?™EH哼aCL砒CL+P泗牌』lPX%L』:ISCDLT'tAMiPDIv™mKJWIKHMJ数据发送部分代码:voidsetup()(Serial.begin(115200);}voidloop()(intn=analogRead(A0);floatvol=n*(5.0/1023*100);upload_sensor(vol);/调用子函数delay(5000);}voidupload_sensor(floatvol)(//sendtheHTTPPUTrequest核心代码charbuf[200];memset(buf,0,200);intret;ret=sprintf(buf,"GET/upload.php?uid=ycf&ps=ycf&sensor_name=Arduino&data="//;设置协议Serial.print(buf);暂存至bufSerial.print(vol);/调用要发送的数据volSerial.println("HTTP/1.1");//HTT协议名称Serial.println("Host:05/”设置服务器地址Serial.println("Connection:close")数据传输完毕,连接关闭Serial.println();}数据接收部分的代码:staticvoidrxCB_Loopback(uint8port,uint8event)(/*若接收缓冲区中有数据*/if(rxLen)(/*若将接收缓冲区中的数据写入到串口不成功7if(!HalUARTWrite(SERIAL_APP_PORT,rxBuf,rxLen))(/*在指定时间SERIALAPP_TX_RTRY_TIMEOUT后触发串口重发送事件*/osal_start_timerEx(SerialApp_TaskID,SERIALAPP_TX_RTRY_EVT,SERIALAPP_TX_RTRY_TIMEOUT);return;//返回}/*若将接收缓冲区中的数据写入到串口成功Velse{/*停止串口重发送事件*/osal_stop_timerEx(SerialApp_TaskID,SERIALAPP_TX_RTRY_EVT);}}/*若从串口读取数据不成功读出的数据长度为0)*/if(!(rxLen=HalUARTRead(port,rxBuf,SERIAL_APP_RX_CNT))){return;//返回}/*若将已从串口读取的数据回写到串口成功Vif(HalUARTWrite(SERIAL_APP_PORT,rxBuf,rxLen)){rxLen=0;//清零接收缓冲区中数据长度变量}/*若将已从串口读取的数据回写到串口不成功7else{/*在指定时间SERIALAPP_TX_RTRY_TIMEOU1p触发串口重7osal_start_timerEx(SerialApp_TaskID,SERIALAPP_TX_RTRY_EVT,SERIALAPP_TX_RTRY_TIMEOUT);}}打开串口调试助手,参看无线传输的过程rxBuf,接到后判断是什么字符,然后做相应的处理。zigbee的特点(1)低功耗。在低耗电待机模式下,2节5号干电池可支持1个节点工作6〜24个月,甚至更长。这是ZigBee的突出优势。相比较,蓝牙能工作数周、WiFi可工作数小时。TI公司和德国的Micropelt公司共同推出新能源的ZigBee节点。该节点采用Micropelt公司的热电发电机给TI公司的ZigBee提供电源。低成本。通过大幅简化协议不到蓝牙的1/10),降低了对通信控制器的要求,按预测分析,以8051的8位微控制器测算,全功能的主节点需要32KB代码,子功能节点少至4KB代码,而且ZigBee免协议专利费。每块芯片的价格大约定美元。低速率。ZigBee工作在20〜250kbps的速率,分别提供250kbps(2.4GHz\40kbps(915MHz和20kbps(868MHz)的原始数据吞吐率,满足低速率传输数据的应用需求。近距离。传输范围一般介于10〜100m之间,在增加发射功率后,亦可增加到1〜3km。这指的是相邻节点间的距离。如果通过路由和节点间通信的接力,传输距离将可以更远。短时延。ZigBee的响应速度较快,一般从睡眠转入工作状态只需15ms,节点连接进入网络只需30ms,进一步节省了电能。相比较,蓝牙需要3〜10s、WiFi需要3s。高容量。ZigBee可采用星状、片状和网状网络结构,由一个主节点管理若干子节点,最多一个主节点可管理254个子节点;同时主节点还可由上一层网络节点管理,最多可组成65000个节点的大网。(7) 高安全°ZigBee提供了三级安全模式,包括无安全设定、使用访问控制清单(AccessControlList,ACL)防止非法获取数据以及采用高级加密标准(AES128)的对称密码,以灵活确定其安全属性。(8) 免执照频段。使用工业科学医疗(ISM)频段,915MHz(美国),868MHz(欧洲),2.4GHz(全球)。由于此三个频带物理层并不相同,其各自信道带宽也不同,分别为0.6MHz,2MHz和5MHz。分别有1个,10个和16个信道。这三个频带的扩频和调制方式亦有区别。扩频都使用直接序列扩频DSSS),但从比特到码片的变换差别较大。调制方式都用了调相技术但868MHz和915MHz频段采用的是BPSK,而2.4GHz频段采用的是OQPSK。在发射功率为0dBm的情况下,蓝牙通常能有10米的作用范围。而ZigBee在室内通常能达到30-50米的作用距离,在室外空旷地带甚至可以达到400米(TICC2530不加功率放大)。所以ZigBee可归为低速率的短距离无线通信技术。4.交互设计方案智能家装作为物联网项目,除了本身内部网络通过igbee通讯。还需要和Internet进行通讯。各种支持zigbee的传感器把采集到的信息通过网关上传至Internet上。也可以通过Internet控制家居内部的元件。实现远程控制。如(图4.1)麦全件。实现远程控制。如(图4.1)麦全图4.1智能家装交互直走-二I.--L本文中使用了MT7861wifi串口模块作为智能家居的网关部件。作为以Arduino为中心的智能家居的主控部分和Internet的接口。MT7861作为网关的使用和Arduino交互的代码(如图4.2)entitie-5[i|,status=STATUS_OIILnfE;:/*sendi:iieaa/aTfLirsearaicsrc-itraTriEiEids.:*ffcr(k-0;k<k^_HRIENOSJJUM;k44|[if(entitirsliIfriends[k]=L&&rntitieslk]rStiatus=ST^TU3_0NinJE'Iil=wrlz=(emlLlea[t]p,azrlen(usee-1ogcn)卜也);LItlXOl[perroi("write'');break/ifU—E^_EirriIIES_N™i(t*notZEgi5P=rEds7fan(L=D?i<MiK_EHTrriES_tTUK;L+l->[if^mzancrc-{entitiesTiJ-idP"气mjUVhUL.xOC»rjC1'-z'jj■xUlnP£)—0)\entities[i].fd■=Ed;ersti-ies[i].s-acus:=STJiHJ5_OMLllH.rrnanqpy;enti^-iea[2]■idPp+3tzlsa^ujerl!>3iM.|?Ej:breik;if(i—MaX_EH7rriT5_tCnHI[print;["zactu?henczzirsa.□"|;1]/*asadrheon/cizlineszaniscrLt;rsirle^aa,*/if(L<^_E.UiniESJfUH){Eg。;Jx!RK_JRrENBjmH-E+—)\iz(sucitiea11].zrlends[Jc|=1i4 .s匚己皿=5lftTU5_-JE4LLKlj|cnaz虹葬;bzero(rinpbuf(1024)i;msg=^enizlziea[k],azactl3=SIAIOS_CKLIHE)?u.Berlc-^cnsisseilsgDi£;图4.2网关的代码部分网关搭建成功后就可以通过互联网向家中的rduinno发送指令,也可以随时监测家中的情况了。使用Yeelink搭建交互平台,Yeelink是一家为物联网的开放服务提供商,完成对传感器数据的接入管理,数据存储,以及将数据随时显示给客户。使用了基于RESTful架构的开放API体系,通过统一的webservice,使得用户能方便取回和管理自己的传感器数据。不管是在android,iOS等操作系统上,都可以使用Yeelink提供的界面组件API。可以非常快速的搭建起属于自己独一无二的APP,能够方便的将传感器数据,共享到网络。除此以外我还尝试了使用微信的公共号作为交互平台来控制家中的设备。首先申请微信的公共号作为交互平台,成为微信开发者。用户发给公共平台的消息以XML文件形式发送。解析XML代码如下:<?phpdefine("TOKEN”,"xiaorenfeng");$wechatObj=newwechatCallbackapiTest();$wechatObj->responseMsg();classwechatCallbackapiTest{publicfunctionresponseMsg(){$postStr=$GLOBALS["HTTP_RAW_POST_ITA"];if(!empty($postStr)){$postObj=simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);$fromUsername=$postObj->FromUserName;$toUsername=$postObj->ToUserName;$keyword=trim($postObj->Content);$time=time();$textTpl="<xml><ToUserName>v![CDAA[%s]]>v/ToUserName><FromUserName><![CDJTA[%s]]></FromUserName><CreateTime>%sv/CreateTime><MsgType><![CDJTA[%s]]></MsgType><Content><![CD;TA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";?>读取到发送给公共号的消息以后就可以通过关键词来执行相关动作了。例如当关键词等于打开CCTV5,微信公共号会向家里的智能家装网关发送打开CCTV5回复的代码如下。if(!empty($keyword)){$msgType="text";$contentStr="OPEN"+keyword‘;$resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);echo$resultStr;}else(echo"不知道您要做什么;}}else(echo"”;exit;}}privatefunctioncheckSignature(){$signature=$_GET["signature"];$timestamp=$_GET["timestamp"];$nonce=$_GET["nonce"];$token=TOKEN;$tmpArr=array($token,$timestamp,$nonce);sort($tmpArr);$tmpStr=implode($tmpArr);$tmpStr=sha1($tmpStr);if($tmpStr==$signature){returntrue;}else{returnfalse;}}}网关通过Arduino控制红外模块打开电视,并播放CCTV5。利用微信公共平台提供的各种API可以方便的通过微信和Arduino的数据交换。效果(如图4.3)

图4.3微信平台的交互智能家装内网网关搭建好以后,只要能在互联网和Arduino之间传递数据,方法不局限于以上两种。可以通过GPRS模块通过电话或短信和Arduino传递数据等等。智能家居网内的交换数据的方式包括有线和无线。有线通讯和无线通讯。也可以使用类似siri的语音识别系统,或者kinect体感识别系统。对着电视喊打开CCTV5或者互动手臂换台的情况,在现有条件下也是可以实现的。5.项目结论智能家居是有效利用计算机技术,通讯技术和嵌入式技术的综合产物。依据科学的设计和个性化需求,完成对家居生活进行网络化、智能管理化。帮助人们实现更加舒适、快捷、便利的全新生活体验。同时满足人们对于娱乐和安全等各方面的需求自主学习和人工智能算法上的进步,也使得智能家装产品越来越聪明。配合不远的未来大数据的广泛应用,甚至设备

温馨提示

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

评论

0/150

提交评论