郑 娟,王建华
(江苏科技大学 电子信息学院,江苏 镇江 212003)
伴随着数字化和网络化的进程,智能化的浪潮席卷了世界的每一个角落,成为一种势不可挡的历史化大趋势。面对当前犯罪分子作案手段日趋技能化、智能化、团伙化和暴力化的势态,单靠传统的“人防”一种途径已远不能适应新形式下斗争的需要。
新型的安防监控系统利用安置在家中的不同功能的传感器采集各类环境参数,传输到上位机,利用信息管理软件进行数据存储、显示、分析处理等操作,对异常情况进行报警,并根据预置控制策略自动处理,及时消除安全隐患。
随着网络通讯技术及图像压缩处理技术[1]以及传输技术的快速发展,使得家庭能够采用最新的通讯和图像处理技术,通过网络传输数字图像,可为实现家庭监控系统提供高效可行而且价格低廉的解决方案。
因此,开发和推广远程安防监控系统,使得人们在可以繁忙工作的同时,在远程就了解自己家庭概况,及时做出分析与判断,具有非常重要的实际意义。
该系统主要是针对家庭用户而设计的,对家居的安全状况进行监控。用户可以根据自己需要进行用户基本信息及监控状态、监控参数等的设置。系统实现了以下功能:
1)用户设置:可以在监控主页面点击用户设置按钮,设置登录界面的用户名、密码;修改或新增接收告警信息的手机号码、变更短信中心号码、设置火灾温度上限。
2)家居安全状况远程实时监控与查询:主人外出,可通过手机或其他联网设备通过浏览网页来查看家中的安全状况。同时主人可以点击网页上的相关按钮,远程发送控制命令。
3)家居安防监控:当小偷闯入住宅或有火灾等违纪事件发生时,监控终端能实时地监测到险情,并自动采取相应处理措施,同时向监控中心发送告警信息,监控中心则以GSM短信的方式通知户主。
4)现场图像抓拍功能:在设防状态下,当红外传感器或者门磁触发告警时,摄像头将自动抓拍图像,通过在ARM开发板上搭建的MGPJ-Streamer服务器处理图像,并以流的方式将图像保存到SQLite数据库中。
5)历史照片的打包下载和定时删除:为方便查看和快速传输历史照片,所以将历史照片以.tar.gz格式进行打包压缩,同时为保证存储空间的充裕,所以提供定时删除过去一段时间的照片。
该系统以FS_S5PC100开发板和Linux操作系统作为实验平台,主要立足互联网,采用摄像机采集图像,经压缩处理后传到互联网,远端用户可以通过浏览网页或手机上网直接查看家中情况。利用市场上比较通用的GPRS模块收发信息,利用Linux内核中的PPP拨号上网的方式;使用嵌入式Linux操作系统,通过交叉编译模式,使用C语言编写移植驱动和控制程序,并在Linux系统中搭建视频服务器、WEB服务器和SQLite数据库。系统的总体设计框架如图1所示,整个系统分为以下3个模块:
1)输入模块:包括两类,一是监测参数的采集模块,即火灾的温度采集模块、防盗的摄像头监测模块,采集并无线发送监测参数;二是实现控制的模块,即Internet或手机通过网络实现对整个监测系统的用户信息及监控参数的设置、监测参数的查询、显示及设防、撤防等控制指令下发;
2)处理模块:以ARM开发板为核心的主控板,接收由输入模块采集的数据,并进行逻辑判断,如果有异常发生,通知输出模块做出相应的处理;同时也能根据网页上发送过来的各种设置和控制指令,然后调用相应的处理函数;
3)输出模块:解析处理模块发出的信号,实施相应的异常处理措施;如果温度传感器测得的温度高于预先设定的温度或者红外传感器探测到有不法分子闯入,那么开启相应的声光报警和对应的异常处理,通过控制摄像头来捕捉图片,然后进行图像处理并将数据保存在SQLite数据库中。并通过GPRS模块发送告警短信通知用户家居现场情况,用户根据具体情况点击网页上对应按钮发送命令给系统,完成一个远程监控的任务。
图1 系统总体结构图Fig. 1 Structure diagram of monitoring system
根据系统的总体架构,分析远程安防监控系统功能上的需求,得知相应的硬件需求如表1所示。
处理模块处在系统中间层,既要处理输入模块采集的数据,又要控制输出模块的相应处理,同时还得与远程监控中心进行数据交互,这就要求其具有较强的数据处理能力。基于此考虑,本系统选用了基于SamSung公司的Cotex_A8内核[2]的FS_S5PC100作为实验平台。考虑到市场的普及度与可靠性的要求,GPRS模块选用SIEMENS 公司的TC35i/MC35[3-4],该模块内嵌强大的TCP/IP协议栈,低功耗,增强的AT控制指令。由于具体的硬件设计电路图比较繁杂,在此给出系统硬件实现框图,如图2所示。
表1 硬件需求列表Tab.1 Hardware requirements list
图2 系统硬件结构图Fig. 2 Structure diagram of the hardware system
系统软件实现主要包括:S5PC100软件编程,监控页面的编程两大部分,在此只介绍S5PC100微控制器的软件编程部分。
考虑到系统的稳定性和可靠性,在S5PC100上采用Linux嵌入式实时操作系统[5-6],与传统的实时操作系统(RTOS)相比,采用嵌入式 Linux 这样的开放源码的操作系统的另外一个好处是 Linux 开发团体看来会比 RTOS 的供应商更快地支持新的 IP 协议和其它协议。例如,用于Linux 的设备驱动程序要比用于商业操作系统的设备驱动程序多,如网络接口卡(NIC)驱动程序以及并口和串口驱动程序。
各种设备由于功能不同,驱动程序提供的函数接口也不相同,但Linux为能够统一管理,规定了Linux下设备驱动程序必须使用统一的接口函数file_operations。根据功能填充对应的file_operations中的接口函数。为便于开机启动,统一地将驱动程序静态编译到内核。
另外,涉及设备节点的创建,选择了udev机制来自动创建设备节点,具体步骤如下:
1)在一开始定义一个类 class,再在类下面定义一个设 备 class_dev;2)xx_init( )函 数 中, 使 用 class_creat( )和device_creat( )创建设备节点;3)xx_exit( )函数中,使用class_destory( )卸载设备节点。其中,设备号的选择,通过查询内核中Documents/device.txt 选用空闲的设备号,当然也可以用major=register_chrdev(0,"name",&file_operation)自动生成。
系统的主要功能是实现家居环境参数的采集、上传和监控页面控制命令的下发,所以数据传输是整个应用程序的关键部分,即S5PC100与GPRS模块[7]的串口通信程序的设计。
在定义与串口相关寄存器地址的基础上,以结构体构造新的串口数据类型,结构体成员为函数指针,它们指向编写的具体实现函数,而函数体中的数据直接操作串口寄存器,实现了串口驱动程序,实际上就是上面驱动程序思想,填充对应的file_operations中的接口函数,实现我们自己的驱动程序。以下是实现串口数据类型的主要源代码:
typedef struct{
serial_init_func_t init; //串口初始化
serial_open_func_t open; //设置串口中断
serial_read_func_t read; //串口读取数据
serial_write_func_t write; //串口发送数据
serial_poll_func_t poll; //串口接收数据查询
serial_flush_input_func_t flush_input ; //清空串口接
收FIFO
serial_flush_output_func_t flush_output ; //清空串口发送FIFO
}serial_driver_t;
串口采用中断方式接收数据,提高了串口数据处理的实时性和整个CPU的工作效率。具体来说,S5PC100的串口1收到输入模块发送的家居环境参数,进行逻辑判断,结合输出模块处理后,传输到监控页面,实现数据的上传;S5PC100的串口1收到监控页面发送的指令后,调用相应的处理函数,把指令同步到各个模块,实现数据的下发。
为方便用户通过internet或GPRS网络接入互联网,远程监控家里情况,提供远程Web服务。本模块主要包括2个部分:
1) BOA服务器模块设计:在嵌入式系统中移植BOA服务器,提供Web服务;
2) cgi模块详细设计:根据监控页面上的不同按钮,发送不同信息给S5PC100,S5PC100调用相应的处理函数,执行网页按钮相应功能。
在搭建好系统环境,成功移植硬件驱动后,在Ubuntu12.04上Linux2.6内核环境下进行程序的开发调试。系统中主要的进程,包括3个线程等待控制命令,在代码中采用轮询的形式来对线程状况进行检测,发生问题的时候进行相应得处理,用户可通过网络访问本系统并远程进行控制操作。调用了两个线程分别操作thief处理线程和fire处理线程。thief线程和fire线程分别调用GPRS模块和摄像头模块进行短消息的发送和图像的采集及保存。同时调用FS_S5PC100开发板自带的,蜂鸣器模块和LED模块实现报警,另外利用流水灯模拟灭火的操作。具体框架如图3所示。
图3 应用程序设计结构图Fig. 3 Schematic diagram of application program
输入模块和输出模块也是分别创建线程处理不同的任务,模块之间通信选用了消息队列,对于共享资源采用了互斥锁和条件变量,保证资源的共享和原子操作。
整个系统在实验室环境下进行了测试,利用S5PC100开发板上自带的按键key1模拟外人闯入,按键key2模拟主人进入,温度的采集使用了LM75温度传感器采集,同时为便于调试我们同时也利用ADC来模拟温度变化。整个监控界面效果图如图4所示。
图4 监控测试主界面Fig. 4 Main interface of monitoring test
通过点击页面上的用户设置按钮,可以设置用户名、密码的修改及新用户的增加;手机短信号码的修改及新手机号码的增加;短信中心号码更改;报警温度设置,这些参数设置好后都保存在数据库中。点击用户基本信息按钮,可以查看用户信息,及报警功能的开关状态等。点击历史照片查看,会跳转到,页面首先显示第一张照片,可以在查看照片的页面上点击上一张、下一张、返回主页面按钮。点击历史照片下载按钮,历史照片会以.tar.gz格式打包。点击连拍按钮,摄像头会自动连续拍照5张并存储。另外,在开发板上配置并开启crontab定时服务,实现历史照片的定时删除功能。
在测试报警功能时,先要点击主页面开报警功能按钮,当按下S5PC100开发板上的key1键,蜂鸣器响,指定手机收到报警短信,抓拍的照片可以通过点击页面历史照片查看按钮查看。通过点击主页面关闭当前报警按钮,关闭蜂鸣器。当调节电压协调器使模拟的温度过高时,蜂鸣器响,指定手机收到报警短信,流水灯不断闪烁模拟灭火。点击报警日志查看报警记录,效果如图5所示。
图5 报警日记效果图Fig. 5 Demonstration of alarm log
以上提出的基于ARM的智能家居安防监控系统的实现方案,有机结合了ARM高效的处理技术、GPRS可靠的远程数据传输技术、动态网页设计等技术,不仅实现了安防方面的迅速报警、记录证据和远程监控等功能,而且误报率低、成本低。实验证明,该系统运行可靠,达到了远程监控的要求。另外,本系统还需继续改进,比如,将开发板上时间调整到标准时间;增加利用tftp实现远程更新应用程序等功能。
[1] 王陆林,刘贵如,蒋朝根. 基于WLAN的嵌入式视频监控系统的研究与设计[J]. 安防科技,2008,1(5):24-27.WANG Lu-lin, LIU Gui-ru, JIANG Chao-gen. Research and design of embedded video monitoring system based on WLAN [J].Security and Safety Technology, 2008,1(5):24-27.
[2] 韦东山. 嵌入式Linux应用开发完全手册[M]. 人民邮电出版社,2008.
[3] Germany SIEMENS Com Co. V04.00.Siemens MC35i hardware interface Description [S].Berlin: Siemens Ltd,2003.
[4] 李建勇,伍光胜,刘艳中. 基于MC35i模块的短信报警终端的设计[J]. 气象水文海洋仪器,2012,1(1):53-56.LI Jian-yong,WU Guang-sheng,LIU yan-zhong.Design of SMS alarm terminal based on MC35i module [J].Meteorological,Hydrological and Marine Instruments,2012,1(1):53-56.
[5] 林晓飞. 嵌入式Linux应用开发与实例教程[M]. 清华大学出版社,2007.
[6] 田泽. 嵌入式系统开发与应用教程[M]. 北京航空航天大学出版社,2007.
[7] 余启家,尹瑞祥. 基于ARM及GPRS的智能家居系统的实现[J]. 微型计算机信息(嵌入式与SOC),2007,23(7):119-121.YU Qi-jia, YIN Rui-xiang. The implementation of smart home system based on ARM and GPRS network [J]. Micro Computer Information (Embedded and SOC), 2007, 23(7):119-121.