摘 要: 以S3C2410为核心,以Linux操作系统为平台,运用嵌入式视频服务器设计了嵌入式智能家居监控系统,实现了对家庭监控的智能化管理。同时通过GPRS和Internet实现了对家庭系统的远程控制。
关键词: ARM;Linux;GPRS;智能家居;远程监控
智能家居系统利用多项高新技术把家电设备、家庭安全防护、家居智能化以及互联网有机的结合在一起。本文阐述了基于GPRS技术、ARM嵌入式技术、网络技术以及视频采集与传输技术来实现智能系统的远程控制。
1 总体设计
本系统使用FS2410开发板、GPRS模块以及USB摄像头完成对现场的监控功能,硬件来源于FS2410开发板自带的资源以及相应的传感器模块,如温度传感器、红外传感器等。当温度传感器所测量的温度值高于系统设置温度的上限值或者红外传感器探测到有不法分子闯入时,则开启相应的报警功能、防盗功能和灭火功能,并通过GPRS模块以短消息的形式通知用户,及时反馈现场情况,等待用户操作。同时用户可以通过Internet异地远程实时查看现场情况,并根据系统中定时捕获的图片数据以及具体情况采取不同的措施,以达到远程控制的目的。系统总体结构如图1所示。
2 系统硬件设计
家居监控系统的硬件部分如图2所示,主要包括S3C2410主控制器、USB摄像头、GPRS模块、温度传感器、红外传感器、报警器和SD卡等。
系统选用FS2410开发板作为开发平台。由于该开发板资源丰富,考虑到系统的实际需求,以ARM2410内核为重点,裁剪了必要的功能模块,设计了家居监控的硬件模块。它包含S3C2410 MCU、2片32 MB NAND Flash、1片2 MB NOR Flash以及1片以太网控制芯片,同时还包括2路串口通信模块、2个USB接口、1个HOST接口、1个SD卡接口和1个液晶接口等。
摄像头模块采用中星微ZC301摄像头,它最高分辨率可达640×480,图像清晰、视频流畅且亮度和对比度可调。通过它可以抓取实时的数据,直接通过压缩编码技术存储在SD卡中,也可以把数据发送到BOA服务器中,这样可以通过Internet查看实时情况。
GPRS是在现有的GSM移动通信系统的基础上发展起来的一种移动分组数据业务。GPRS通信模块主要由GSM基带处理器、GSM射频模块、供电模块、闪存、ZIF连接器和天线接口6部分组成,支持数据、短信、语音和传真业务。该模块在本设计中与S3C2410的UART接口1相连接。
温度报警器模块是由单片机(89C52)作为主控芯片,通过RS485总线与主控制器(ARM处理器)进行通信。温度传感器选用Dallas公司的单线数字温度传感器芯片DS18B20。该芯片与传统的热敏电阻有所不同,它可以直接将被测温度转化为数字信号,以供单片机处理,不需要再设计模数转换电路。此外,它还具有微型化、低功耗、高性能及抗干扰能力强等优点。用户可以自动设定报警的上限温度。温度报警器模块如图3所示。
红外监控模块是一种能检测人或动物身体的红外线而输出电信号的传感器。这里把它作为机器的一种传感器来应用。例如,在房间无人的时候,开启自动监控,结合摄像机或数码照相机自动记录动物和人的活动等。
SD卡是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地应用于便携式装置,这里将其应用于系统中数据的快速备份。
3 系统软件设计
系统的目标代码运行在S3C2410上,选用的开发平台是ubuntu 8.10,uboot选用的版本是0.3.2,Linux内核选用的版本是Linux-2.6.8.1,交叉编译器选用的是gcc-4.1.1,以Linux为嵌入式操作系统来进行开发。图4为开机启动的主进程;当发现盗贼时,则进入图5所示的防盗进程;当发生火灾时,则进入图6所示的防火进程。
系统中,消息的传递采用共享内存的通信方式,共享内存相比其他几种方式有着更方便的数据控制能力,数据在读写过程中会更透明。当成功导入一块共享内存后,它只是相当于一个字符串指针来指向一块内存,在当前进程下,用户可以随意的访问,决定使用共享内存的通信方式。在共享内存中定义的协议如下:
typedef struct
{
short int fireflag;//防火标志
short int thief_start;//防盗标志
short int fire_proofing_opt;//防火开关
short int thief_proofing_opt;//防盗开关
short int fire_putout_opt;//灭火开关
short int photo_opt;//照相开关
short int beep_opt;//报警开关
short int message_opt;//短消息开关
float temperature;//温度值
}shm_buff;
摄像头模块的程序设计主要是在Linux内核中加入对ZC301的支持。Video4Linux(简称V4L)是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供一系列接口函数,这些视频设备包括现今市场上流行的TV卡、视频捕捉卡和USB摄像头等。
温度报警器模块主要利用DS18B20来获取现场实时的温度值,同时和系统中设置的上限值(这里设置为40℃)进行比较,如果大于上限值,则执行防火监控进程。内核空间通过中断方式获取当前的温度值,应用程序通过内核提供的copy_to_user函数来获取温度数据。
红外监控模块主要利用了热释电红外传感器来感受外界的变化,产生跳变沿,从而产生中断的方式,以异步的方式上报事件,进行防盗监控。
内核空间的设计为:
irqreturn_t s3c2410but_keyevent();
kill_fasync(&async_queue,SIGIO,POLL_IN);
//内核空间发送SIGIO信号给用户空间
用户空间的设计为:
signal(SIGIO,input_handler);//SIGIO的信号处理函数
fcntl(dev_fd,F_SETOWN,getpid());
//为应用程序指定进程为文件的属主
oflags=fcntl(dev_fd,F_GETFL);//获取文件描述符
fcntl(dev_fd,F_SETFL,oflags|FASYNC);
//修改相应的描述符,在设备中设置FASYNC异步标志
SD卡模块主要是利用Linux内核提供的udev机制处理可热插拔/动态设备,结合Linux下的linuxrc脚本文件,快速实现数据的转移。
为了实现动态Web战术,本系统在设计中选用了支持CGI(Common Gateway Interface)技术的BOA服务器。CGI在物理上是一段程序,运行在服务器上,提供同客户端 Html页面的接口。
本系统选用SQLite数据库,该数据库具有功能强大、接口简单、速度快、占用空间小的优点,使其比较适用于嵌入式系统中。SQLite主要用于BOA服务器登录的验证。
4 系统的实现
本文结合GPRS、Internet以及视频采集技术实现了具有丰富软硬件资源、低成本、低功耗、便于扩展、升级及维护等特点的智能家居监控系统。
本文基于Linux操作系统,利用S3C2410为主处理器,结合GPRS以及Internet实现了智能家居监控系统。实验结果表明,各项测量数据准确,控制过程可靠,使其可以广泛的应用于实际生活中。
参考文献
[1] 周晓玲.嵌入式系统的设计与实践[M].北京:北京航空航天大学出版社,2004.
[2] 周立功.S3C2410&嵌入式Linux教程[Z].广州致远电子有限公司.
[3] 戴丽.基于Video4Linux的USB摄像头图像采集实现[D].合肥:合肥工业大学,2008.
[4] 韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2009.
[5] 孙勇,刘杰.基于ARM的GPRS通信终端设计[J].工业控制计算机,2010(5):49,52.
[6] Liu Zhiwai. Research of embedded image monitor system based on ARM[D]. Xi′an:Xi′an University of Industry,2006.