1、目录摘要1第一章 绪论11.1 课题背景11.3智能家居系统概述21.4 研究目的及意义3第二章系统方案52.1系统选择52.2 linux简介62.3 硬件部分72.4 软件部分8第三章功能指标9第四章实施原理及过程94.1 u-boot104.2 内核移植124.3 驱动模块编译114.4 web服务器方案124.6.1boa服务器的移植134.6.2配置boa服务器144.5 HTML中调用CGI程序14第五章硬件框图155.1 开发板接口155.2系统框图16第六章特色与创新点16参考文献17结论17附录18课题摘要:近几年智能家居已经成为未来发展的一种趋势,所谓智能家居,一般是指以计
2、算机接口技术和网络技术为基础,将各种家用数字化设备有机结合为一体的智能化的网络系统。这些家用数字化设备包括电话、计算机、数字化的视听设备、数字化的家用电器及安全监控设备等, 通过有线或无线的方式将这些设备连接起来, 为家庭用户提供简单、安全、可靠、智能化的综合服务。本课题以Web 技术为核心, 报告中介绍了基于S3C2440 微处理器和嵌入式Linux 操作系统的软硬件平台上构建了Web 服务器和视频服务器实现web远程控制方案,Web 服务器采用Boa, 视频服务器采用uvc-streamer, 结合CGI 技术处理HTML 表单, 完成用户认证、温度烟雾检测、视频监控以及门的控制等家居监控
3、功能。第一章 绪论1.1课题背景21 世纪是信息时代,各种电信新技术推动了人类文明的进步。正是因为通信技术、计算机技术、网络技术、控制技术的迅猛发展与提高,促使了家庭实现了生活现代化,居住环境舒适化、安全化。这些高科技已经影响到人们生活的方方面面,改变了人们生活习惯,提高了人们生活质量,家居智能化也正是在这种形势下应运而生的。智能家居控制系统的主要功能包括通信、设备自动控制、安全防范三个方面。1.2智能家居系统概述智能家居控制系统是以HFC、以太网、现场总线、公共电话网、无线网的传输网络为物理平台,计算机网络技术为技术平台,现场总线为应用操作平台,构成一个完整的集家庭通信、家庭设备自动控制、家
4、庭安全防范等功能的控制系统。随着新技术和自动化的发展,传感器的使用数量越来越大,功能也越来越强,各种传感器都已经标准化、模块化这给智能家居控制系统的设计提供极大方便。嵌入式的智能家居使系统的处理能力大大增强,可以带来更加逼真的图象以及更加真实的语音等。根据系统定制的实时操作系统不仅可以最大限度的利用硬件资源而且还避免了过于庞大的系统造成的系统冗余。一般只有一颗主处理芯片,系统架构更加清晰简捷。软件采用分层设计,方便维护和升级,大大提高了代码利用率,缩短开发周期。因为嵌入式技术是伴随着Internet 而生的,所以它具有更加卓越的网络性能,可以增加更多的网络应用,很显然嵌入式类智能家居产品在应用
5、方面具有相当的优势,应该是未来中国家庭智能化技术主流发展方向。家居生活的智能化是当今计算机网络与通讯技术最人性化的应用,给人们的家居生活带来了全新的感受。今天,借助电话控制或互联网,您几乎可以在任何地方、任何时候监控您的家居状况,为您的家居生活带来前所未有的方便。随着社会全面的信息化、智能化和自动化,家庭智能化必将成为未来家居装饰潮流发展的最新方向!1.3研究目的及意义随着人们生活水平的提高,智能家居已经成为人们青睐的对象,智能家居系统的网络化功能可以提供遥控:家电(电视,空调,热水器等)控制、照明控制、室内外遥控、窗帘自控、防盗报警、电话远程控制、可编程定时控制及计算机控制等多种功能和手段。
6、使生活更加舒适、便利和安全。因智能家居控制系统简单、功能灵活,扩展容易而被人们广泛接受和应用。家居生活的智能化是当今计算机网络与通讯技术最人性化的应用,给人们的家居生活带来了全新的感受。今天,借助电话控制或互联网,您几乎可以在任何地方、任何时候监控您的家居状况,为您的家居生活带来前所未有的方便。随着社会全面的信息化、智能化和自动化,家庭智能化必将成为未来家居装饰潮流发展的最新方向第二章 系统方案(黑体小四)本文利用TQ2440开发板,S3C2440 CPU核心板和装有Linux系统或装有Linux虚拟机的PC机一台。采用armlinux集成开发环境,本设计包括:系统硬件的设计与调试和控制软件的
7、编写与调试。3.1 系统选择(一)VxWorksVxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统 RTOS是Tornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。VxWorks具有可裁剪微内核结构高效的任务管理灵活的任务间通讯微秒级的中断处理;支持POSIX 10031b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开
8、发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。(二)Windows CE Windows CE与Windows系列有较好的兼容性,无疑是Windows CE推广的一大优势。 其中WinCE3.0是一种针对小容量、移动式、智能化、32位、了解设备的模块化实时嵌人式操作系统。为建立针对掌上设备、无线设备的动态应用程序和服务提供了一种功能丰富的操作系统平台,它能在多种处理器体系结构上运行,并且通常适用于那些对内存占用空间具有一定限制的设备。它是从整体上
9、为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。它的模块化设计允许它对从掌上电脑到专用的工业控制器的用户电子设备进行定制。操作系统的基本内核需要至少200KB的ROM由于嵌入式产品的体积、成本等方面有较严格的要求,所以处理器部分占用空间应尽可能的小。系统的可用内存和外存数量也要受限制,而嵌入式操作系统就运行在有限的内存(一般在ROM或快闪存储器)中,因此就对操作系统的规模、效率等提出了较高的要求。从技术角度上讲,Windows CE作为嵌入式操作系统有很多的缺陷:没有开放源代码,使应用开发人员很难实现产品的定制;在效率、功耗方面的表现并不出色,而且和Windows一样占用过的系统内
10、存,运用程序庞大;版权许可费也是厂商不得不考虑的因素。(三)嵌入式Linux 这是嵌入式操作系统的一个新成员,其最大的特点是源代码公开并且遵循GPL协议,在近一年多以来成为研究热点,IDG预测嵌入式Linux将占未来两年的嵌入式操作系统份额的50%由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从GPL无须为每例应用交纳许可证费。有大量的应用软件可用。其中大部分都遵从GPL是开放源代码和免费的。可以稍加修改后应用于用户自己的系统。有大量的免费的优秀的开发工具,且都遵从GPL是开放源代码的。有庞大的开发人员群体。无需专门的人才,只要懂Unix/Linux和C语言即可。随
11、着Linux在中国的普及,这类人才越来越多。所以软件的开发和维护成本很低。优秀的网络功能,这在Internet时代尤其重要。稳定这是Linux本身具备的一个很大优点。内核精悍,运行所需资源少,十分适合嵌入式应用。3.2 Linux系统简介1. 什么是Linux Linux是一个免费的多用户、多任务的操作系统,它的稳定性、安全性与网络功能是许多商业操作系统所无法比拟的。Linux系统最大的特点是源代码完全公开。2Linux 系统应用领域Linux系统的应用主要涉及四个方面:应用服务器、嵌入式领域、软件开发以及桌面应用。3Linux的特点(1)开放性(2)多用户多任务(3)良好的用户界面设(4)设
12、备度独立性(5)丰富的网络功能(6)可靠的系统安全性(7)良好的可以可移植性4Linux系统组成Linux系统一般由内核,Shell,文件系统和应用程序这4个主要部分组成。内核、Shell 和文件系统一起形成了基本的操作系统结构。它们使得用户可以运行程序、管理文件并使用系统。(1)内核内核是操作系统的核心,具有许多基本功能,如虚拟内存、多任务、共享库、需求加载、可执行程序和TCP/IP网络功能。Linux内核主要模块分为存储管理、CPU和进程管理、系统文件、设备管理和驱动、网络通信、系统的初始化和系统调用等几个部分。(2)Shell Shell是系统的用户界面,提供了用户与内核进行交互操作的一
13、种接口。它接收用户输入的命令并把它送入内核去执行。(3)文件系统文件系统是文件存放在磁盘等存储设备上的组织方法,Linux 系统能支持目前流行的文件系统,如EXT2丶ERT3、FAT、FAT32VFA和ISO9 660等。(4)应用程序标准的Linux 系统都有一套称为应用程序的程序集,它包括文本编辑器、汇编语言、X Windows、办公软件待、Internet工具和数据库等.2.3硬件部分:智能家居控制系统其硬件部分主要由五大部分构成,即WiFi模块、usb摄像头模块、温度,烟雾及AD转换模块、门禁系统模块和S3C2440 CPU板模块与接口和电源部分。用户可以通过RS232接口和PC机直接
14、相连接使用可以方便查看开发板上的信息,通过WiFi为整个系统提供网络通信,通过USB摄像头可以实现远程监控,通过AD转换模块检测温度,烟雾浓度变化,通过网页控制门禁系统的开关,电源部分则为各个部分提供工作电源。TQ2440 是由广州天嵌计算机科技有限公司精心打造的一款开发板。性能稳定,扩展接口丰富, S3C2440A芯片采用ARM公司的ARM920T的32位CPU核,并集成了ARM结构的MMU单元,各有16KB的指令缓存和数据缓存,最大寻址空间为1G字节,包含了丰富的接口电路。基于S3C2440的硬件系统有以太网接口、CAN总线,RS485总线接口(可以把WEB网关和各个控制接点连成控制网络)
15、、功能设置按键、LCD显示屏、光耦隔离的开关量输入以及带LED指示灯的继电器输出。2.4软件部分WiFi模块和usb摄像头模块通过usb接口驱动,温度,烟雾,门禁系统等模块通过gpio口驱动,测试程序通过cgi来调用,通过编写网页html代码调用CGI程序实现各个模块在网页上的远程监控。82014“赛佰特杯”第四届全国大学生物联网创新设计应用大赛第三章 功能与指标(黑体小四)基于TQ2440开发板,通过boa服务器的配置以及增加一些内核模块,可实现5个功能。3.1门禁系统通过网页控制门的开关或者通过输入密码控制门的开关;3.2 温度传感模块利用DS18B20获取室内温度并通过网页显示;3.3
16、烟雾模块利用MQ-2获取室内烟雾浓度并通过网页显示;3.4wifi模块利用RTL8192CU无线网卡为系统提供网络环境并与上位机通信;3.5 视频监控模块通过中星微的zc301usb摄像头获取视频信息,通过网页显示实现远程视频监控的目的。第四章 实施原理及过程(黑体小四)4.1 u-boot基本常用命令1. 基本环境设置setenvserverip 192.168.1.115setenvipaddr 192.168.1.211setenvgatewayip 192.168.1.1setenvethaddr 1E:23:37:48:5A:6Bsetenvbootargs root=/dev/mt
17、dblock2 rootfstype=yaffsinit=/linuxrc mem=64M console=ttySAC0,115200setenvbootcmdnand read 30008000 80000 200000 ; bootmsaveenv2. 烧写Boottftp 30008000 u-boot-tq.binnand erase 0 60000nand write 30008000 0 600003. 加载内核tftp 30008000 zImage.imgbootm4. 烧写rootfs(1)如果是256MB的Nand Flash,使用如下命令烧写:tftp 30008000
18、 root_tq2440.yaffs2nand erase 480000 FB60000nandwrite.yaffs 30008000 480000 $(filesize) (2)如果是64MB的Nand Flash,使用如下命令烧写:tftp 30008000 root_tq2440.yaffs2nand erase 480000 3B60000nandwrite.yaffs 30008000 480000 $(filesize) 5.烧写内核tftp 30008000 zImage.imgnand erase 80000 400000nand write 30008000 80000 2
19、000006. 使用nfs配置:setenvbootargs root=nfsnfsroot=192.168.1.115:/source/rootfsip=192.168.1.211 console=ttySAC0,115200 init=/linuxrc mem=64M4.2内核移植内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。本文采用linux2.6.30.4内核。编译器:arm-linux-gcc4.3.31. 下载内核源代码linux2.6.30.4准备工作目录和解压内核源码#mkdir my2440#cd my2440
20、/#tar -jxvf linux-2.6.30.4.tar.bz22. 进入内核根目录修改Makefile使之编译成ARM平台#cd linux-2.6.30.4#geditMakefile作如下修改:ARCH?= armCROSS_COMPILE?= arm-linux-3. 修改机器码#gedit arch/arm/tools/mach-types4. 修改系统平台时钟为12MHz(即:12000000)#gedit arch/arm/mach-s3c2440/mach-smdk2440.c5. 修改Nand Flash分区。这里只创建三个分区,其他多余的分区屏蔽掉#gedit arch
21、/arm/plat-s3c24xx/common-smdk.c6. 配置内核选项#make menuconfig根据自己需要选择相应的模块。7.配置完后将配置文件保存为.config,这样方便下次make menuconfig时默认加载上次配置过的文件8. 交叉编译内核 #make zImage如果没有任何错误,编译出来的内核在arch/arm/boot/目录下,文件zImage即是。9.将内核镜像文件zImage下载到TQ2440上测试4.3驱动模块编译2.6内核的源码树目录下一般都会有两个文文:Kconfig和Makefile。分布在各目录下的Kconfig构成了一个分布式的内核配置数据库
22、,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.config,就知道了用户对内核的配置情况。上面的内容说明:Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录下的Makefile。因此,一般添加新的驱动时需要修改的文件有两种(注意不只
23、是两个)*Kconfig*Makefile要想知道怎么修改这两种文件,就要知道两种文档的语法结构。First: Kconfig每个菜单项都有一个关键字标识,最常见的就是config。语法:config symboloptionssymbol就是新的菜单项,options是在这个新的菜单项下的属性和选项修改内核中/dev/char中的Makefileobj-$(symbol) +=模块名.o重新编译内核MakezImage4.4 WEB服务器方案在linux下,WEB服务器的实现主要有三种方案:HT2TPD、THTTPD和BOA。HTTPD是最简单的一个WebServer,它的功能最弱,不支持认
24、证,不支持CGI。THTTPD和BOA都支持认证、CGI等,功能都比较全。BOA是一个单任务的小型HTTP服务器,源代码开放、性能优秀,特别适合应用在嵌入式系统中。目前的linux的代码中已经包含BOA的源代码。本设计采用嵌入式WebServerBOA+CGI程序设计技术,作为WEB服务器方案。Boa 是一款单任务的HTTP 服务器, 与其他传统的Web 服务器不同的是,当有连接请求到来时, 它并不为每个连接单独创建进程, 也不通过复制自身进程来处理多链接, 而是通过建立HTTP 请求列表来处理多路HTTP 连接请求, 同时它只为CGI 程序创建新的进程, 这样就在最大程度上节省了系统资源,
25、这对嵌入式系统来说至关重要。Boa服务器的移植从http:/www.boa.org/下载BOA的源代码boa-0.94.13.tar.gz,将其解压并进入源码目录的src子目录,执行#src/configure生成Makefile文件。执行#viMakefile,根据自己的交叉编译器修改Makefile,修改CC=gcc为CC=arm-linux-gcc,修改CPP=gcc-E为CPP=arm-linux-gccE。修改src/boa.c文件,将下面判断式注解掉:/3if(setuid(0)!=-1)DIE(ickyLinuxkernelbug!);3/3if(passwdbuf=NULL)D
26、IE(getpwuid);if(initgroups(passwdbuf-pw-name,passwdbuf-pw_gid)=-1)DIE(initgroups);3/将src/compat.h文件的#defineTIMEZONE_OFFSET(foo)foo#-tm_gmtoff修改成#defineTIMEZONE_OFFSET(foo)(foo)-tm_gmtoff。运行make进行编译,得到只有62872Byte大小的可执行程序boa。Boa服务器的配置完成boa服务器要对boa服务器进行配置,使其支持CGI程序的执行,可以通过配置boa.conf来配置boa服务器。完成boa服务器移植
27、和配置后,驱动rtl8192cu无线网卡,开发板连接无线网络,利用IE浏览器访问boa服务器,通过在浏览器终端点击不同button,使boa服务器调用不同的cgi脚本程序,完成对室内设备信息的读取及控制等操作,从而完成远程控制。4.6 HTML中调用CGI程序(1)使用GET的方法CGI1:hello CGI 这是第二个CGI测试程序请输入m:请输入n:(2)使用POST的方法CGI1:hello CGI 这是第三个CGI测试程序请输入name:请输入password:使用GET的方法获得网页在网络上传输的时候是没有加密,别人可以清晰的看到,而用POST的方法在网络上传输时是加了密的,别人是无
28、法看到的,所以比较安全,一般不重要的信息用GET的方法,大部分都是用POST的方法。第五章 硬件框图5.1 开发板接口5.2系统框图温度传感模块烟雾传感器模块门禁系统模块WiFi模块Rs232IE浏览器BOA服务器CGI接口S3C2440CPU视频监控模块第六章 特色与创新点(黑体小四)1 本系统集成了多个模块的自动控制功能,实现了一个远程监控的智能家居系统。2采用较新版本的软件平台,如linux内核版本为2.6.30.4,使系统响应速度更快,效率更高,稳定性更强。3.通过网页来控制各个模块,更加方便,只要有网络的地方都可以实现远程监控。结 论这次比赛中我们团队各司其职,齐心协力,在指导老师的
29、指导下共同完成各个模块部分,实现一个远程监控智能家居系统,这对我们在嵌入式方面的学习打下了坚实的基础。在此感谢所有帮助指导我们的人!附录A :部分代码:Doordriver.c#include #include #include #include #include #include #include#include #include #include#define DQ S3C2410_GPG13#define CPG_IN S3C2410_GPG13_INP#define CPG_OUT S3C2410_GPG13_OUTP#define DQ2 S3C2410_GPG14#define C
30、PG2_IN S3C2410_GPG14_INP#define CPG2_OUT S3C2410_GPG14_OUTP#define DEVICE_NAMEdoor#define DOOR_MAJOR 220staticintopencount = 0;#define OPENDOOR1#define CLOSEDOOR0staticstruct class *door_class;structtimer_listdoor_timer;voidtimer_function(unsigned long dev)if(DQ)system(./opendoortest);delay(5);door_
31、timer -timer.expires = jiffies + 5*HZ;door_timer -timer.data = (unsigned long) dev;door_timer -timer.function = &timer_function;add_timer(&door_timer);elsedoor_timer -timer.expires = jiffies + 5*HZ;door_timer -timer.data = (unsigned long) dev;door_timer -timer.function = &timer_function;add_timer(&d
32、oor_timer);system(./closedoortest);staticintdoor_open(structinode *inode, struct file *file)if(opencount=1)return EBUSY;elseopencount+;s3c2410_gpio_cfgpin(DQ, CPG_IN);s3c2410_gpio_cfgpin(DQ2, CPG2_OUT);printk(device opened!n);return 0;staticintdoor_ioctl(structinode *inode,struct file * file,unsigne
33、dintcmd,unsigned long arg)printk(entry ioctl!n);switch(cmd)case OPENDOOR:s3c2410_gpio_setpin(DQ2,1);delay(5);s3c2410_gpio_setpin(DQ2,0);printk(door opened!n);break;case CLOSEDOOR:s3c2410_gpio_setpin(DQ2,0);delay(2);printk(door close!n);break;default:return -EINVAL;return 0;staticintdoor_release(stru
34、ctinode *inode, struct file *file)opencount-;printk(device releasedn);return 0;staticstructfile_operationsdoor_fops.owner = THIS_MODULE,.open = door_open,.ioctl = door_ioctl,.release = door_release,static char _initdata banner=TQ2440 DOORn;staticint _initdoor_init(void)int ret;printk(banner);ret = r
35、egister_chrdev(DOOR_MAJOR,DEVICE_NAME,&door_fops);if(rettimer.expires = jiffies + 5*HZ;door_timer -timer.data = (unsigned long) dev;door_timer -timer.function = &timer_function;add_timer(&door_timer);printk(DEVICE_NAMEinitialized!n);return 0;static void _exit door_exit()printk(DEVICE_NAMEexit!n);unr
36、egister_chrdev(DOOR_MAJOR,DEVICE_NAME);device_destroy(door_class,MKDEV(DOOR_MAJOR,0);class_destroy(door_class);module_init(door_init);module_exit(door_exit);MODULE_LICENSE(GPL);Opendoor.c#include #include #include #include #include #define OPENDOOR1int main(void)intfd;fd=open(dev/door,O_RDWR);if(fd0
37、)printf(open failed!n);return -1;elseprintf(open success!n);ioctl(fd,OPENDOOR,0);close(fd);return 0;网页代码:智能家居控制系统body,td,th font-size: 36px;body background-image: url(file:/D|/web/images/390b43aa-5103-4f36-ab20-3b218edaf702_6.jpg);欢迎使用智能家居控制系统参考文献【1】周洪,胡文山,张立明等.智能家居控制系统M.中国电力出版社,2006,(01)【2】李宏宇.基于嵌入式平台远程空调控制系统的研究M.东北:东北农业大学.2009.】【3】韦东山.嵌入式Linux应用开发完全手册M.北京:人民邮电出版社.2008.【4】夏静波,陈雅蓉,胡健生等.嵌入式系统原理与开发M.西安:西安电子科技大学出版社.2010.2014“赛佰特杯”第四届全国大学生物联网创新设计应用大赛参赛声明队伍编号:作品名称:智慧家居系统参赛队员:孙龙飞 陈吉凯 时敏 李铮作为2014“赛佰特杯”第四届全国大学生物联网创新设计应用大赛的参赛队伍负责人,根据大赛公平、公开、共享精神,我代表参赛队伍