基于嵌入式的智能家居监控系统设计

发布者:wmghyu最新更新时间:2010-07-20 来源: 电子技术应用 关键字:嵌入式系统  智能家居  Linux  远程监控 手机看文章 扫描二维码
随时随地手机看文章

    随着信息技术和Internet技术的发展,实现家居网络化和智能化已经成为当前研究的热点。具有用户界面、能远程控制、智能管理的电器是未来的发展趋势。在此形势下,基于ARM、PowerPC等32位微处理器的出现,使嵌入式Internet成为现实,传统PC的Web服务完全可以通过嵌入式控制器实现。正如早已为人们熟知的“把互联网带入生活中”,使用嵌入式Web技术的家居计算机网络成为目前网络发展的一个重要方向。

    基于PC架构的智能家居由于实用性较差已经逐步退出了市场,目前只有一些国外厂商和极少数国内厂商选择了基于嵌入式的技术方案。而基于嵌入式系统的家庭智能系统在国内才刚刚出现,随着嵌入式技术更加广泛的应用,成本的逐步降低,智能家居最终将走向嵌入式[1]。

    经过比较,嵌入式智能家居具有明显的优势,因此本文选择嵌入式系统作为智能家居的核心。由于ARM处理器具有体积小、功耗低、成本低、性能高以及Linux开源等优点,本系统选择三星公司的ARM9处理器S3C2410作为嵌入式处理器,操作系统为Linux。

1 系统整体模块设计

    本系统主要在嵌入式系统上进行视频监控模块和远程电器控制模块的设计。嵌入式系统由嵌入式处理器S3C2410和Linux系统组成。视频监控模块由Web服务器、视频服务器和客户端以及实现通信的通道组成。远程电器控制模块在Web服务器上,通过CGI交互,实现对家电的控制。本系统采用模块化设计,由嵌入式系统模块、视频采集模块、视频服务器模块、视频客户端模块和远程电器控制模块组成。系统的整体框架图如图1所示。    嵌入式处理器S3C2410是一款基于ARM920T内核的16/32位RISC微处理器。内部带有全性能的MMU(内存管理单元),它适用于设计移动手持设备类产品,具有性能高、功耗低、接口丰富和体积小等优良特性[2]。

2 系统的软件设计实现

2.1 图像采集模块的实现

    本系统采用USB接口的PC350摄像头,该摄像头的后端采用OV511+视频芯片, 图像传感器采用新一代CMOS感光芯片,摄像头硬件压缩率超过5:1,非常适合视频监控的图像采集[3]。目前Linux内核中已经有支持OV511芯片的驱动,因此无须下载驱动程序。该驱动可以用模块化的方式加载,也可以编译进内核,本系统采用编译进内核的方法。

    在内核加载了OV511摄像头驱动之后,系统就能识别并支持该摄像头,再只需编写视频采集程序就可工作。视频采集应用程序的设计通过Linux内核中的Video4Linux实现。

    Video4Linux是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供了一系列接口函数。在视频采集中,应用程序首先通过open( )函数打开视频采集设备并返回一个文件描述符号,这个文件描述符就代表了捕获的设备硬件。成功开启设备档后,调用ioctl( )取的设备文件的相关信息,并且将取得的信息放到video capability结构中,同样调用ioctl( )将视频窗口信息放到video picture结构中。视频设备的关闭通过close( )函数实现。在本系统中,视频图像的获取采用mmap( )的方式共享内存来实现。此方法不必再调用read( )、write( )等操作,不仅进程可以直接读写内存,进程通信效率高,而且不需要拷贝任何数据。

2.2 远程视频监控模块的实现

    视频监控模块采用“浏览器—服务器”模式,即在采集端构建嵌入式Web服务器,并在Web服务器的基础上移植视频服务器webcam,在客户端利用Java Applet 来接受视频服务器发送过来的视频信息。本模块包括嵌入式Web服务器设计和视频服务器webcam的移植实现。

2.2.1 嵌入式Web服务器设计

    嵌入式Web服务器器是指将Web服务器引入到嵌入式系统中,在相应的硬件平台和软件系统的支持下,根据应用的需要实现通用的Web服务器的全部或者部分功能。嵌入式Web服务器仍然以TCP/IP协议为底层,在该Web中使用的应用层的通信协议是HTTP协议,通过HTTP协议实现客户端(一般为浏览器)和嵌入式Web服务器的信息交换[4]。

    在嵌入式领域,常用的Web服务器有thttpd和boa,boa目前用的最多。boa是一个非常小巧的Web服务器,可执行代码只有约60 KB,占用系统资源少,而且速度快、安全性好[5]。目前使用的Linux2.6内核还没有包含boa代码,因此需要移植到本系统中。首先从www.boa.org下载boa源代码(目前最新版本boa-0.94.13),解压到Linux系统目录下,用交叉编译器编译。这样在boa-0.94.13/src目录下生成boa应用程序,把生成的boa应用程序下载到开发板上Linux系统中的/bin目录下,让boa在系统启动时自动运行,这样在开发板上就移植了boa服务器。

2.2.2 视频服务器webcam的移植实现

    视频信息通过摄像头采集到的图像需要通过网络传送到另一端,并通过浏览器显示出来,这一过程通过视频服务器实现。视频服务器的工作主要是与客户端建立链接,并根据客户端用户的指令,调用相应的函数处理客户端的控制要求。视频服务器工作流程如图2所示。

    webcam是一个比较常用的视频服务器程序,对本系统采用的OV511摄像头非常适用。通过网络下载webcam_server的Linux版本,它是基于GNU架构之下的,完全免费,源码开放。本设计采用webcam server―0.50.tar.gz。从http://www.neilbriscoe.co.uk/scratch/网站下载,解压到Linux目录下,修改Makefile为交叉编译环境,然后用Make命令进行编译,把生成的webcam应用程序下载到开发板上Linux系统中的/bin目录下,这样就移植了视频服务器。

2.3 智能家居远程监控的实现

    远程监控是智能家居监控中的重要组成部分,只要有Internet的地方,主人就可以通过上网登录设计好的智能家居管理界面,以此来实现对家里的实时监控。例如,主人在公司上班,家里有小孩或者生病的老人,主人可以通过公司电脑远程监视关注家里的情况,如有意外,主人就可以对此及时做出反应。当主人快要下班时可以事先通过界面管理实现对家电的控制(如打开客厅电灯、让电饭锅开始煮饭等)。

2.3.1 智能家居界面的实现

    本设计采用html语言来编写智能家居的管理界面,以下是智能家居管理主界面的源代码,文件名为my.html。

<html>
<head>
<title>远程监控</title>
</head>
<frameset rows=“20%,80%”>
<frame img src=“images/ltby006.jpg” marginwidth=“0”
scrolling=“no”
frameborder=“0” norsize=“norsize”>
<frameset cols=“20%,80%”>
<frame src=“left.html”scrolling=“no” name=“left_frame”
frameborder=“0”>
<frame src=“right.html” name=“right_frame”>
</frameset>
</frameset>
</html>

    该代码包含left.html和right.html的相关链接,其中left.html又包含着用户信息、密码修改、远程控制、状态查询、安全布防、视频监控等相关链接。设计好相关的.html文件和CGI程序,通过U盘把.html文件和CGI程序拷贝到开发板根文件系统下的/www目录下。

2.3.2 远程电器控制模块的模拟实现

    用无线通信方式进行家电的控制灵活性较强、覆盖范围较广,免去了综合布线的费用和精力,缺点是家庭内部要有家庭网关和无线路由器,接收终端还要有相应的接收装置,成本较高。因此,基于实用性和大众化方面的考虑,本文所研究的家电控制器的控制采用I/O控制。

    家电的本地集中控制硬件设计是利用嵌入式系统的I/O口对家用电器的用电进行控制。系统通过S3C2410的I/O口输出高低电平来进行控制,同时用发光二极管指示家用电器工作状况。

    发光二极管亮,表示家用电器通电,发光二极管灭,表示家用电器断电。GPB7控制电器1,GPB8控制电器2,GPB9控制电器3。由于被控模块家用电器大多使用220 V交流电,属于强电电路,所以使用继电器控制家电。在芯片与继电器中间加驱动电路。驱动电路可以利用光电耦合的通、断去控制继电器的开与关。也可以利用三极管的饱和与截止去控制继电器的开与关,这里采用三极管方式。当I/O口引脚输出低电平时,三极管饱和导通,+5 V电源加到继电器线圈两端,继电器吸合,同时状态指示的发光二极管也点亮,继电器的常开触点闭合,相当于开关闭合。当I/O口引脚输出高电平时,三极管截止,继电器线圈两端没有电位差,继电器衔铁释放,同时状态指示的发光二极管也熄灭,继电器的常开触点释放,相当于开关断开。注:在三极管截止的瞬间,由于线圈中的电流不能突变为零,继电器线圈两端会产生一个较高电压的感应电动势,线圈产生的感应电动势则可以通过二极管D1释放,从而保护了三极管免被击穿,也消除了感应电动势对其他电路的干扰,这就是二极管D1的保护作用。这里主要是采用模拟的方式来实现家电的远程控制,板子上的LED灯表示家电的开关状态。控制开关状态的CGI代码用shell语言实现,下面就是其中一个电器的代码:

#/bin/sh
case $QUERY_STRING in
*kai1*)
type1=1
;;
*guan1*)
type1=0
;;
esac

2.3.3 视频客户端Java Applet的实现

    在本系统中,客户端接收从视频服务器发送过来的视频信息,并通过Web浏览器显示监控图像,浏览器自身不能完成这个功能,而是通过在HTML文档里嵌入Applet来实现的[6]。Applet是一种特殊的Java程序,它能够嵌入到HTML文档并被支持Java的网页浏览器下载执行。本系统客户端就是利用Java Applet完成用户与视频服务器的交互,实现视频播放。

    视频监控网页用HTML语言设计。在本系统中,摄像头系统监视界面直接采用改进的webcam_server―0.50nsrcnclient。以下是经过修改后的webcam.html源代码,其中http://202.193.74.230指的是开发板的IP地址,可以根据实际需要改变源代码里面的高度和宽度,从而调整视频画面的大小。

<html>
<head>
<title>WebCam</title>
</head>
<br><br><br>
<p align=“center”><APPLET CODE =“WebCamApplet.clas”
archive=“applet.jar”WIDTH =“320”HEIGHT =“240”>
<param name=URL value=“http://202.193.74.230:8888”>
<param name=FPS value=“1”>
<param name=width value=“320”>
<param name=height value=“240”>
</APPLET>
<p align=“right”><img src=“images/sxt.jpg”/>
</body>
</html>

    还要把/src/client下的Applet.jar文件拷贝到开发板根文件系统下的/www目录下。最后在电脑主机上安装一个jre1.6.0 03,目的是使浏览器支持Java,这样就完成了客户端的设计,从而实现视频在网页上显示的工作。

3 实验测试

    首先,设置开发板的IP,即在超级终端下输入命令ifconfig eth0 202.193.74.230。在实验室的另一台电脑主机上运行IE浏览器,输入设置好的IP,访问板子的主监控界面。智能家居管理主界面如图3所示。

    点击远程控制,出现如图4所示的家电控制界面,选择电器的状态(开或关),就可以通过网页实现电器的模拟开关。点击视频监控,将出现视频监控的界面,如图5所示(本机电脑网页上实时实现的是另一实验室的监视画面)。

    通过实验测试,发现家居控制效果好,图像传输效果实时,画面质量清晰、流畅,很好地实现了家居的智能监控。

    本系统的设计是在数字信息技术和网络技术发展的前提下,运用当前的嵌入式技术和ARM技术设计的智能家居监控系统,具有一定的创新性。该系统由于采用了高性能的ARM9处理器和嵌入式Linux操作系统,具有一定的可扩展性,可以通过适当的功能扩展来满足用户更高的要求。此外,本系统具有功能强、稳定性好的特点,而且成本低,对嵌入式智能家具监控系统的开发有一定的借鉴意义。

关键字:嵌入式系统  智能家居  Linux  远程监控 引用地址:基于嵌入式的智能家居监控系统设计

上一篇:PicoBlaze软核处理器实现低速话音编解码系统
下一篇:基于单片机的现场无电源电子密码锁设计

推荐阅读最新更新时间:2024-05-02 21:06

Qorvo® 将在 CES 2024 展示面向智能家居的连接、保护与电源技术
中国 北京,2023 年 12 月 12 日—— 全球领先的连接和电源解决方案供应商 Qorvo®宣布将在 CES® 2024(#CES2024)展示其最新的物联网(IoT)、智能家居、5G、Wi-Fi、超宽带(UWB)、触控传感器和电源产品 。Qorvo 技术实现更快速、更便携的连接,提供更大的数据容量和卓越的可靠性,适用于消费电子、通信、宽带和汽车/电动车等各类应用。Qorvo 的完整连接解决方案将在 2024 年 1 月 9 日至 12 日在美国拉斯维加斯威尼斯人会展中心举行的 CES 上展出,展台位于53509 展位。 Qorvo 将在 CES 2024 上展示以下创新产品: Matter™ 物联网解决方案借助
[物联网]
新出现的SoC FPGA上的策略考虑
集成了 FPGA架构、硬核 CPU子系统以及其他硬核 IP的半导体器件 SoC FPGA已经发展到了一个“关键点”,它在今后十年中会得到广泛应用,为系统设计人员提供更多的选择。对于在 FPGA上开发的系统,这些 SoC FPGA完善了十多年以来的软核 CPU以及其他软核 IP。各种技术、商业和市场因素相结合推动了这一关键点的出现,Altera、Cypress.半导体、Intel .和 Xilinx.公司等供应商都发布或者开始发售 SoC FPGA器件。 这一关键点的主要推动因素包括:过渡到并行和多核处理,以提高功效;FPGA成为前沿的新半导体工艺技术;嵌入式系统中越来越多的使用了FPGA;摩尔定律的经济现实;CPU在体系
[嵌入式]
新出现的SoC FPGA上的策略考虑
智能家居自动开关的实现方案
  第一步:确定需要实现的功能   功能时感应有人的前提下,电灯自动打开。然后主人外出将自动关闭,这样就能达到智能省电,对于马大哈的福利。   第二步:确定要使用的零件   想要感应到人,肯定需要用到传感器,对于传感器有三种可以选择,一是超声波传感器(可以检测到物品的是否出现在前面);二是红外传感器(人在经过红外线后传感器会感受到);三是人体传感器(可以感受到人体)。根据自己的具体情况选择合适的传感器。   第三步:选择合适的控制芯片   选择好传感器后肯定需要选择控制传感器的芯片,需要将传感器的数据进行处理然后让接收器做出行为。我们现在要完成的功能是开关灯。芯片选择有三种STM32(性能较较强)89C51单片机(性能一般
[嵌入式]
智能家居之于APP:离开你我也能实现控制
不可否认,手机APP仍是智能家居目前最为重要的控制方式,尤其在设备集成管理、家庭信息查看、远程安全看护等方面不可替代。但是,过于依赖手机APP的智能家居也不是大家想要的,毕竟每次开门、关灯等都要用手机根本不方便。正因如此,不少厂商希望进一步简化智能家居的控制方式,让用户家庭生活更简单,国内知名物联网企业物联传感就是其中之一。 不过,与不少厂商企图完全脱离智能家居APP不同,物联传感并没有打算直接砍去手机管控,而是寻求了一个平衡点,充分发挥APP的设备可视化管理等优势,并尽可能减少操作复杂性。这方面,物联传感的发明专利“一种基于地理位置的移动终端控制系统及其工作方法”可以加以说明。 从国家知识产权局官网查询可知,这项发明专利公
[嵌入式]
ARM-Linux触摸屏驱动移植--问题总结
硬件平台:FL2440 内核版本:2.6.28 主机系统:Ubuntu 11.04 内核版本:2.6.39 1、由于自己编译的内核触摸屏驱动选项选择的问题,触摸屏搞了好久 由于自己编译内核将触摸屏驱动以模块的形式编译的,方便自己调试ADC驱动和触摸屏驱动。遇到以下问题: 编译完触摸屏驱动完成后,利用insmod ts.ko加载驱动,之后在/dev/下生成鼠标结点文件mouse0,没有生成ts0 由于将触摸屏接口也一M的形式编译了,改成* /dev下不生成event*节点,编译选项中选择Event interface 后面的touch screen驱动以模块的形式编译进内核,手动加载,方便自己调试 重
[单片机]
ARM-<font color='red'>Linux</font>触摸屏驱动移植--问题总结
基于PLC的自来水远程监控系统
  一、引言   在水源地内,多眼井星罗棋布在水库上。为了确保供水生产的安全、可靠、连续。针对水厂制水过程的特点和控制系统的功能要求,我们采用基于 西门子 PLC 的恒压力供水系统。   二、编程 控制器 概述   PLC即可编程控制器,是一种以 计算机 技术为基础的新型 工业控制 装置。国际电工委员会(IEC)对PLC曾作了如下定义:“PLC是一种数字运算操作的电子系统,专为在工业环境下应用而设计。它采用可编程序的存储器,用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作指令,并通过数字式、模拟式的输入和输出,控制各种类型的机械和生产过程。PLC及其有关设备,都应该按易于与工业控制系统形成一个整体。易于扩充
[电源管理]
无线智能家居的技术解析
  无线解决方案为家居自动化带来了曙光,剪掉了这些繁琐的线,就减去了很多麻烦。就目前而言,无线智能家居根据所使用的技术不同,主要分为蓝牙、Wi-Fi、Zwave和ZigBee四种,无线技术让人们得以实现对家居的远程控制。   WiFi技术   基于WiFi技术的智能家居产品更为常见,其优势在于传输速率快,且产品成本低,生活中也更为普及,对用户来说,基于WiFi的智能家居组合更为省事,购买设备直接组网即可。   凡事都存在两面性,WiFi虽然传输快、普及广,但也存在着自身的技术劣势:其更大的问题要属安全性非常低,无线稳定性弱;功耗大也是其弱点之一,将导致其在家居领域的应用受限,例如智能门锁、红外转发控制器、各种传感器等不适宜使用
[嵌入式]
at91sam9g45 mcp2515 linux3.6.9驱动移植要点
平台at91sam9g45 linux版本 3.6.9 1 board-sam9m10g45ek.c 文件添加如下结构体 static struct mcp251x_platform_data mcp251x_info = { .oscillator_frequency = 8000000, .board_specific_setup = NULL,//&mcp251x_setup, .power_enable = NULL, //mcp251x_power_enable, .transceiver_enable = NULL, }; static struct spi_board_info can_spi_devices = {
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved