基于ARM的智能综合监控基站方案设计
技术分类: 测试与测量 嵌入式系统 | 2007-11-30 来源:单片机及嵌入式系统应用 | 作者:石崇林 喻晓峰
引言
传统的监控系统类似大体可以分为四种:防盗放火报警监控系统,门禁系统、考勤或巡更系统,环境检测系统,视频监视系统。
目前市场上通常对某个区域(例如仓库)的全面监控管理是由以上四种类型的监控系统的简单相加,各分系统之间相对独立,到上层监控中心才进行综合,这样作势必会造成布线烦琐、维护力度大、升级困难、成本增加,而且系统的联网方式单一也可能造成系统的鲁棒性不高,处理突发事件的能力不强,针对这样一种现状,文中提高了一种基于32位高性能处理器AT91RM9200的智能综合监控基站方案。
1 系统结构
本基站最大的特点在于将各个子系统在底层进行综合集成,并且采用PSTN、GPRS和TCP/IC三种联网方式。无论从成本、智能化程度,还是从安装使用便利程度上看都是绝对的优势。系统结构如图1所示。
整个系统可分为两个部分:上层的监控中心和下层的监控基站。监控基站和监控中心通过以太网或者电话网连接起
这种体系结构具有很好的扩展性,可以方便地根据实际情况增加或减少监控基站的数量,且对上层监控中心的影响不大,另外,系统具有灵活的网络控制管理功能,只要给定权限,网络上任何一台计算机都可作为监控中心进行远程监控,实现了监控管理的层次化、网络化和分布化。
2 硬件组成及设计
为了尽快实现这一方案,快速搭建一个原型,在硬件的设计上采用了模块化的设计思想,硬件结构图如图2所示。
2.1 最小系统
最小系统即基站的处理中心,主芯片选用Atmel公司的基于ARM920T内核的高性能嵌入式芯片AT91RM9200,运算速度高达200MIPS。AT91RM9200集成了丰富的外围部件,包括系统外围和应用(用户)外围。系统外围包括 电源管理 控制器(PMC)、系统定时器(ST)、实时时钟(RTC)、高级中断控制器(AIC)、并行I/0(PIO)控制器、调试单元(DU);应用外围包括USB主端口、USB设备端口、以太网10/100BaseT MAC控制器、多媒体闪存(MMC)卡接口、同步串行控制(SSC)、USART、串行外围接口(SPI)、TWO-wire两线接口、定时器/计数器。AT91RM9200集成了高速片上SRAM和低延迟的外部总线接口(EBI),EBI对外部存储器或映射于存储器的外设提供了无缝的连接。EBI中内置了控制器,用于控制同步DRAM、突发访问模式的Flash存储器和静态存储器;EBI还提供了与SmartMedia、CompactFlash和NAND Flash的接口。可扩展的Flash接口为整个系统的升级和扩展提供了方便。
主芯片外接1片16 MB Flash和2片16 MB SDRAM来扩展存储空间和内存。存储空间和内存大小,视实际应用的需要可进一步扩展。
2.2 外围接口
外围接口包括1个USB主口、2个RS485串行接口、2个RS232串行接口、1个以太网口、1个RS232调试串口、1个JTAG口、3路干接点输入接口、3路数字量输出接口、5 V电源输入接口。
USB主口用于视频压缩模块数据流的传输;为了软件设计上的方便,考虑到RS485设备协议的不同,设计两个RS485接口,一个用于连接大连北方测控集团的温湿度变送器,一个用于连接广州微动力公司的RS485读卡器;两个RS232串行接口,一个用于连接深圳百亿公司的GPRS M0DEM,一个用于连接北京天石公司的嵌入式调制解调器,以实现GPRS访问和接入电话网络的功能;一个以太网口实现接入以太网的功能;3路干接点输入接口用于连接深圳迪莱克公司的烟雾感应器和被动式红外探测器;3路数字量输出接口通过电磁继电器可以根据实际需求来控制门磁电锁、空调、消防喷头、声光报警器等。
AT91RM9200集成了丰富的外围部件,所以在外围接口的设计上只需要少量的芯片就可以实现。
2.3视频压缩模块
视频压缩模块原本和基站是集成在一起的。考虑到实际应用时,某些场合没有以太网,只能通过电话网络和监控中心连接,在这种情况下视频传输是没有意义的,所以把视频压缩模块独立出来,能够应用并且需要应用 视频监控 的场合,就将视频压缩模块挂载到基站的USB主口上。
为了缩短开发周期,视频压缩模块采用美国WIS公司的支持多格式的MPEG24视频编码芯片GO7007SB。GO7007SB采用多种WIS专利技术,可方便地实现多种格式、多种标准的音/视频压缩及报警、动态检测、OSD(On Screen Display)、内嵌web服务器等功能。通过适当的配置,视频流的输出格式可以是MPEG一1、MPEG一2、MPEG一4、H.263、MJPEG格式。GO7007SB可以无须胶合地与CMOS/CCD图像感光芯片相连,同时,提供了EEPROM、SDRAM、USB等控制通道以及HPI等丰富的外围接口。
GO7007SB只支持数字视频接口,而模拟摄像头成本较低,可以采用Philips公司的视频解码芯片SAA711A将模拟摄像头传过来的模拟视频数据转换成数字视频数据流送给GO7007SB进行压缩编码。
3 基站软件组成及设计
基站的软件设计有几个版本。这里以加入视频监控,从以太网传输数据的版本为例来加以说明。
3.1 软件主要功能
软件的主要功能如下:
①实时检测和处理前端 传感器 发送的数据,并且通过判断来确定前端的被监控场所的情况是否正常。若出现紧急情
②能够实时接收网络发来的命令,在对命令的类型进行自动处理和判断后实现相应的功能(例如对传感器的查询和短信模块的控制);同时主控中心能够通过网络接收前端传感器的有关数据。
③能够通过视频编码模块将视频数据进行压缩处理,并且将压缩好的视频数据通过网络实时地发送到监控中心。
④用户能够通过短信的方式查询智能控制终端前方的传感器状态,并且可以控制门禁系统。当有紧急情况出现时,智能控制终端能够通过短信的方式进行报警。
5)基站能够自动识别和处理门禁系统的数据,自动判断用户的权限,将用户的进出进行记录,并且将最新记录传给主控中心作记录的备份。
3.2 软件架构
整个软件采用嵌入式操作系统Linux作为基站功能实现上的主要载体。Linux是多任务操作系统,在软件整体划分上主要分五个线程,系统上电起动后五个线程并行工作。五个线程之间的关系如图3所示。
这五个线程分别是:
- 视频传输线程,负责将压缩好的数据通过网络传给主控制中心。
- 网口接收线程,负责接收和处理主控中心通过网口下发的指令和数据。
- 传感器检测线程,负责检测前端传感器的状态,并对相应的数据进行处理。
- 门禁检测线程,负责对门禁系统进行控制。
- GSM短信检测线程,负责对短信命令的接收,并根据命令作相应的处理。
下面以网口接收线程为例,详细介绍此线程模块的设计,网络接收线程流程如图4所示。
网络接收线程起始处于接收状态,当它接收到信息时,根据所定义的信息标识来确定接收到的是数据还是命令,如果判定是命令,则根据命令的定义来区分命令的种类并作相应的处理,在网络接收线程的设计中使用了select函数作为接收和处理函数。select()机制中提供fd_set的数据结构,实际上是一个long类型的数组,每一个数组元素都能与一个打开的文件句柄(不管是Socket句柄,还是其他文件或者命名管道或者设备句柄)建立联系。建立联系的工作由程序员完成,当调用Select()时,由内核根据I/O状态修改fd_set的内容,由此来通知执行了select()进程的哪一个Socket或文件可读。具体解释为:
- ndfs:select需要监视的文件句柄数,视进程中打开的文件数而定,一般设为需要监视各文件中的最大文件号加1。
- readfds:select()监视的可读文件句柄集合。
- writefds:select()监视的可写文件句柄集合。
- exceptfds:select()监视的异常文件句柄集合。
- timeout:本次select()的超时结束时间。(见/usr/sys/select.h,可精确至百万分之一秒。)
当readfds或writefds中映象的文件可读或可写或超时,本次select()就结束返回。程序员利用一组系统提供的宏在select()结束时便可判断哪一文件可读或可写。对Socket编程特别有用的就是readfds。
几个相关的宏解释如下:
- FD_ZERO(fd_set*fdset):清空fdset与所有文件句柄的联系。
- FD_SET(int fd,fd_set*fdset):建立文件句柄fd与fdset的联系。
- FD_CLR(int fd,fd_set*fdset):清除文件句柄fd与fdset的联系。
- FD_ISSET(int fd,fdset*fdset):检查fdset联系的文件句柄fd是否可读写,>0表示可读写。(关于fd_set及相关宏的定义见/usr/include/sys/types.h)
这样,socket只需在有数据读的时间才读入,大致如下:
所以一个FD_ISSET(sockfd)就相当于通知了sockfd可读。
结语
基于AT91RM9200的智能综合监控基站具有性能稳定可靠,集成化智能化程度高,无需专人看管,可扩展性好,资源利用率高等明显优点。因此,开发基于AT91RM9200的智能综合监控基站具有较高的技术先进性和广阔的市场前景,是一件非常有意义的事情。