您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > 智能家居学习手册118
智能家居学习手册广州粤嵌通信科技股份有限公司作者粤嵌实验室日期2013-06版本beta第一章智能家居伴随着数字化和网络化的进程,智能化的浪潮席卷了世界的每一个角落,成为一种势不可挡的历史化大趋势。这一切的最终目的为人们提供一个以人为本的舒适、便捷、高效安全的生活环境。如何建立一个高效率、高性能、低成本的智能家居系统是我们项目的主题。1.1智能家居的需求智能家居系统的使用者,他们追求舒适的生活环境,所有的系统一定要稳定、所有的软件界面操作起来一定要友好。智能家居系统有一个稳定可靠的中央控制系统,稳定的无线网络,通过这个无线网络可以控制多个智能模块。像一键触控的智能灯光模块、智能空调模块、智能窗帘模块、智能通讯模块;自动监控的智能温湿度模块、报警模块、RFID模块等。1.2系统功能智能家居根据用户的需求,如下图所示:中央控制系统通过无线网络,控制了智能灯光模块、智能温湿度模块、智能空调模块、智能窗帘模块、智能通讯模块、智能报警模块等多个功能模块。1.1.1中央控制系统智能家居,需要一个使用GEC2440或者GEC210的开发板来设计一个中央控制系统,通过它来实现对室内电器的监控与控制。这个中央控制系统,使用Linux作为系统内核、QT作为用户界面、TCP/IP协议来通信、GPIO口来控制门口电机、温度传感器、窗台电机、烟雾传感器、灯、光传感器等功能模块。示意图如下所示:1.1.2智能家居的功能智能家居的要实现的功能:智能门禁、智能温湿度监控、智能灯光调节、智能空调、智能窗帘、RFID模块、智能GPRS通讯、智能报警。智能门禁:轻轻一点触摸屏上的按键,就可以驱动继电器开门。智能温湿度监控:从LCD屏幕上,我们可以看到读取的温度和湿度。智能灯光调节:进去灯光模块,轻轻一点触摸屏上的按键,就可以控制房间或者大厅的灯光。智能空调:除了可以通过轻轻一点触摸屏上的按键实现空调的开关控制,也能和温湿度监控系统结合起来,在室内温度高于预设的温度时,自动开启。智能窗帘:除了可以通过轻轻一点触摸屏上的按键实现窗帘的开关控制,也能根据光感电阻的变化,在室内光线高于预设值时,自动关闭。RFID模块:刷卡识别是不是房主。智能GPRS通讯:可以实现通话和短信通知的功能,当房间的红外监控模块发现异常的事情发生时,会通过GPRS模块,将异常发送到房主的手机上。智能报警:当发现火警或者异常的事情发生,报警器会发出警告,同时通过GPRS模块,通知房主,房间发生异常。1.1.3功能界面所有的功能模块,都需要通过友好的界面来控制,那么,我们就要为客户设计一个容易操作的友好界面。功能界面共分为:主界面、功能主界面、门禁界面、窗帘界面、空调界面、GPRS设置界面、报警界面。1.3开发流程简易的智能家居开发分为三个环节:构建家居的Linux系统、设计功能模块的驱动、设计图形界面。构建智能家居的Linux系统的开发流程是:移植uboot---移植Linux内核---移植Linux根文件系统---移植Linux驱动,具体的操作步骤请查看:Linux系统移植手册。设计功能模块驱动:了解硬件---设计Linux驱动---加载驱动。具体的设计步骤请查看光盘目录中参考资料里所对应功能模块的源码和手册。设计图形界面:编写Qt界面---移植qte到开发板---界面调用驱动---再次移植qte到开发板。具体的步骤请查看本手册的第二章、第三章、第四章。第二章图形界面编程智能家居都是由多个界面切换而成的,所以首先我们要学会在pc机上面编写qt的界面,从单个界面到多个界面之间的却换,再到驱动调用和文件编译,接下来请跟着我们的文档提示,一步步地操作。我们先从最简单的灯光模块开始。2.1QT界面设计2.1.1建立工程1.建立工作目录#mkdir/home/smart_design#cd/home/smart_design2.建立QT工程输入下面的命令使QtDesigner运行,我们将会看到如图所示的界面,我们选择c++project,然后点击ok。#designer请点击Settings,在ProjectFile输入框中输入工程名称:smart_design.pro然后点击按钮ok。2.1.2设计图形界面接着我们要新建一个控件编程的文件,请点击左上角的NewDialogorFile,选择Dialog然后在点击按钮ok确定。点击保存按钮,在弹出的界面中输入filename为:smart_design.ui,保存路径在默认工程目录,点击save添加form的底层图片,该图片分辨率最好符合液晶屏分辨率,智能家居项目用到的4.3寸屏分辨率为480x272,所以图片的分辨率要裁剪为为480x272的大小。如上图,找到propertyEditor/SignalHandlers,如果没打开,请按下面方法打开:菜单的Window—Views—PropertyEditor/SignalHandlers。请选择paletteBackgroundPixmap,添加图片,如下图所示。请找到Toolbox栏,如果界面没直接显示,我们可以从菜单打开,点击菜单上的Window—Views—Toolbox。该栏有按键,标签,等等的控件,我们选择Buttons下的pushbutton,然后在form中拉出一个按钮,如图所示:双击该按键,改写按键名字为led_key选中该按键,然后在propertyEditor/SignalHandlers栏中,对按键进行编辑,添加底图,如图所示:2.1.3添加C++编程文件点击左上角的NewDialogorFile,新建文件,选择c++Main-File(main.cpp),一直ok确定。再点击左上角的保存键,保存后,可以关闭designer工具了此时回到了命令行。2.1.4编译QT工程执行以下命令#qmake–project#qmake#make在这里,我们要修改一下图片的路径,不然显示不了图片#vimsmart_design.cpp修改如红色部分setPaletteBackgroundPixmap(QPixmap::fromMimeSource(cbg.png));改为setPaletteBackgroundPixmap(QPixmap::fromMimeSource(./images/cbg.png));pushButton1-setPaletteBackgroundPixmap(QPixmap::fromMimeSource(grlight.png));改为pushButton1-setPaletteBackgroundPixmap(QPixmap::fromMimeSource(./images/grlight.png));重新编译#make#./smart_design此时qt可以跑起来了虽然可以跑起来了,但是还是不够完美,因为可以看到led_button字样,还有标题栏,我们可以对smart_design.cpp进行修改#vimsmart_design.cpp修改代码下面这句红色的代码请查找出来将其注释。//pushButton1-setText(tr(led_button));修改如下的代码Form1::Form1(QWidget*parent,constchar*name,boolmodal,WFlagsfl):QDialog(parent,name,modal,fl)改为Form1::Form1(QWidget*parent,constchar*name,boolmodal,WFlagsfl):QDialog(parent,name,modal,fl=Qt::WStyle_Customize|Qt::WStyle_NoBorder)保存#make#./smart_design2.2设计多界面2.2.1创建多界面工程请参考实验一的方法,我们再建立多一个工程,并编辑好界面,我们约定该工程目录为/home/led_design,并有如下效果,该工程的建立方法和实验一样的,只是加多了一个按钮pushButton,并且多一个按钮的图片而已,这些图片可以根据个人喜欢更改,没有影响。经过创建、添加控件、编写程序,我们有了两个单界面了,那让我们开始对界面切换功能的编写吧,下面请按我们的步骤来实现界面却换的功能。首先,我们建立一个工程目录,我们约定为/home/smart_connect#mkdir/home/smart_connect#cd/home/smart_connect#cp-rf/home/smart_design/{smart_design.cpp,smart_design.h,main.cpp,images}./#cp/home/led_design/{led_design.cpp,led_design.h}./#cp/home/led_design/images/*./images/2.2.2设计界面的信号与槽#geditled_design.cpp,led_design.h使用替换功能,把led_design.cpp,led_design.h文件中所有Form1换成Form2,并且led_design.cpp,led_design.h文件分别添加#includesmart_design.h,对于smart_design.cpp,smart_design.h分别添加#includeled_design.h修改smart_design.h如下,添加红色部分classForm1:publicQDialog{Q_OBJECTpublic:Form1(QWidget*parent=0,constchar*name=0,boolmodal=FALSE,WFlagsfl=0);~Form1();QPushButton*pushButton1;classForm2*led;protected:Protectedslots:virtualvoidlanguageChange();virtualvoidledslot();修改led_design.h如下,添加红色部分classForm2:publicQDialog{Q_OBJECTpublic:Form2(QWidget*parent=0,constchar*name=0,boolmodal=FALSE,WFlagsfl=0);~Form2();QPushButton*pushButton1;QPushButton*pushButton2;classForm1*smart;protected:protectedslots:virtualvoidlanguageChange();virtualvoidled_on_off_slot();virtualvoidbackslot();对于smart_design.cpp修改如下,添加红色部分Form1::Form1(QWidget*parent,constchar*name,boolmodal,WFlagsfl):QDialog(parent,name,modal,fl=Qt::WStyle_Customize|Qt::WStyle_NoBorder){if(!name)setName(Form1);setPaletteBackgroundPixmap(QPixmap::fromMimeSource(./images/cbg.png));pushButton1=newQPushButton(this,pushButton1);pushButton1-setGeometry(QRect(160,100,60,60));pushButton1-setPaletteBackgroundPixmap(QPixmap::fromMimeSource(./images/grlight.png));connect(pushButton1,SIGNAL(clicked()),this,SLOT(ledslot()));languageChange();resize(
本文标题:智能家居学习手册118
链接地址:https://www.777doc.com/doc-39407 .html