当前位置:首页 > 智能硬件 > 安全设备/系统
[导读]   1 系统流程架构   本系统的操作系统平台为Linux, 内核版本为2.6,目标板上包括视频采集、GPRS 模块和控制器S3C2440.控制器主要是负责向客户显示及后端服务提供图像数

  1 系统流程架构

  本系统的操作系统平台为Linux, 内核版本为2.6,目标板上包括视频采集、GPRS 模块和控制器S3C2440.控制器主要是负责向客户显示及后端服务提供图像数据。视频服务器的启动方式是由后台或触发启动。当用户触发事件时自动启动采集程序或者由用户远程启动,再进行图像数据的抓取。

  2 系统设计

  2.1 Linux 下设备驱动

  Linux 是免费的操作系统,其源代码是公开的,我们能够根据实验的需求进行必要的研究和修改。在Linux 操作系统中,设备都是以文件形式的存在,对设备的操作就是对文件的操作,使用户可以调用通用的文件操作函数来进行访问和操作设备。设备驱动程序是Linux 内核与外部设备关联的接口,它们都根据用户操作一系列的标准函数调用来执行,通过调用独立的驱动程序来调用实际硬件的设备进行特定操作。编程接口能够使驱动程序独立运行于内核的其他部分,就如“嵌入”到内核中一样。这种模块化设计特点使得Linux 驱动程序的编写方法简单并且高效。操作简单的同时也有风险,因为设备驱动程序是运行在内核中,如果驱动程序编写出现问题,很有可能会使整个Linux 系统运行出现问题。驱动程序运行与一般应用程序也有不同地方,驱动程序运行只能调用自己相应函数和内核中的标准函数,而一般应用程序只能调用外部数据库等应用函数。内核模块源文件中也不能包括一般的库文件,只能使用内核中规定的内核函数,否则就会出现问题。这也是驱动程序的写法与应用程序的写法不同之处。当然另一个不同之处是内核与一般应用程序处理错误的方式不同:

  应用程序中的错误是不会对系统产生故障,并可使用调试器来进行源代码的跟踪,从而发现问题所在,但内核错误有可能会影响整个系统,即使不影响系统也会出现杀死当前进程的问题,而且也不能使用调试来发现问题根源。

  2.2 红外中断触发设计

  本监控系统实现了红外热释电传感器驱动,使用字符设备驱动。由于S3C2440 有117 路的I/O 线。其I/O 线分成8 组端口,分别是GPA,GPB,GPC,GPD,GPE,GPF,GPG,GPH.当有人进入时或离开被感应区域时,都会使热释电红外传感器的电平发生变化,从而引起中断。热释电红外传感器感应到有人进入时就会自动启动正在睡眠的视频采集设备,对目标进行数据采集。同时热释电红外传感器的驱动程序需要调用中断方式来通知内核,让内核通知视频采集器已进入工作状态,从而便于设备管理。

  S3C2440 通过GPIO 引脚的函数和宏来进行配置和控制;函数S3C2440 _ GPIO _ CFGPIN 对复用GPIO 引脚配置;函数SET_ IRQ _ TYPE 对外部中断触发器进行设置。本监控系统使用了宏IRQT _ BOTHEDGE 对中断进行配置。在内核头文件中定义中断号,每个外部中断都分配不同的中断号来进行控制。当内核接收到中断响应,就会使用异步通知办法。为了解决文件的异步通信,用户程序必须做到两点:第一必须给进程指定“属主”;第二为了运行异步通知,用户程序必须在设备中设置FASYNC 标志。根据内核驱动程序写法,驱动程序必须要定义自己的fasync 方法。当程序执行到F_SETFL 时就启动FASYNC,内核就会调用驱动程序fasync.内核空间使用异步信号来向用户发送信号,相应信号函数是:

  Void kill_fasync(struct fasync_struct **fa,intsig,init band)

  信号函数的功能是当红外传感器输出电平由高到低或由低到高的变化时触发中断响应,同时外部设备得到一个通过处理函数产生的电平变化,从而驱动程序中定义read 方法。

  2.3 视频采集驱动

  在初始化的流程中初始化了摄像头的一些默认的值,根据红外传感器传过来的拍照命令,启动拍照程序,开始拍照,图片数据保存为JPEG 格式存储,同时发送到手机终端While(1)

  {

  If(paizhao)

  {

  _pal=0 ;

  sendPaiZhao() ;

  readJPEG() ;

  keepData() ;

  sendData() ;

  }

  }

  2.4 图像数据的JPEG 压缩编码

  通常情况下,没有压缩的JPEG 图像数据占用存储空间比较大,非常耗费存储空间,也不利于网络数据传输,因此对图像数据进行压缩很有必要。对于图像的压缩方法,Linux 系统下的Libjpeg 库中已经有实现。Libjpeg 是Linux 下的一个标准的库,能够直接调用它来实现图片压缩。这个库的主要功能是将图片以一定的压缩比率压缩成JPEG 文件格式的图片。由于Linux 是开源的,这个库也是开放的。不仅可以在一般的Linux 操作系统下工作,也可以在嵌入式Linux 下进行工作。这样就减少了很多底层的工作,也有利于避免重复性的开发工作。

  在使用这个库之前,首先需要安装和编译这个库。对于嵌入式Linux,libjpeg 库已经包括在嵌入式Linux 源代码包中,在配置相关库文件选项时把这个库加入,再编译一下内核就可以使用libjpeg 库。

  图像压缩封装调用image 类的compress 函数,如下所示:

  Int image compress(image *newone,int quality)这个函数的功能是按照指定的quality 比率将图片压缩成JPEG 格式。函数中的两个参数分别是指向新的image 类数据的指针( 即压缩后的图像数据),另一个参数是指定压缩比率,一般范围为0~100.当数字越大,压缩得到的图片质量就越高,也就越清晰,但同时压缩后的数据文件容量越大。所以压缩比不是越大越好,需要根据实验的现实需求来确定,以满足实验功能要求且存储成本和传输成本最低为标准。

  2.5 短消息的收发

  嵌入式监控系统通过使用串口与GPRS 连接,通过使用GPRS模块来进行短消息的收发。SMS 短信的收发有两种模式,即文本模式和PDU 模式。文本模式只能发送变通的ASCII 字符,短信内容简单,其最大不足之处是不能收发其他字符。PDU 模式将发送的信息按照一定的格式进行新的编码,一般是十六进制数的PDU序列为主,把所有中文或者图像进行编码后再予以发送(如图2 - 1)。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭