为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

无线视频监控系统

2017-09-25 50页 doc 289KB 24阅读

用户头像

is_995397

暂无简介

举报
无线视频监控系统无线视频监控系统 本 科 毕 业 设 计 第 1 页 共 50 页 1 引言 视觉系统是人类最重要的感觉器官之一,人类所获得的大部分外界信息都来自视觉。随着人类对自然世界的不断探索,人们总希望能够通过某种数字化机器来实现人类视觉的功能,自动的获取外部世界的信息。随着数字图像技术的成熟,图像监控系统随之发展起来,这对于保障工业生产、人民生活与社会安全具有重要意义,图像监控系统已经广泛的应用于各个领域。随着视频监控的应用范围和市场需求日趋加大,如何综合应用数字图像处理、计算机视觉、模式识别等多项技术与传统监控相结合,设计出能够...
无线视频监控系统
无线视频监控系统 本 科 毕 业 设 计 第 1 页 共 50 页 1 引言 视觉系统是人类最重要的感觉器官之一,人类所获得的大部分外界信息都来自视觉。随着人类对自然世界的不断探索,人们总希望能够通过某种数字化机器来实现人类视觉的功能,自动的获取外部世界的信息。随着数字图像技术的成熟,图像监控系统随之发展起来,这对于保障工业生产、人民生活与社会安全具有重要意义,图像监控系统已经广泛的应用于各个领域。随着视频监控的应用范围和市场需求日趋加大,如何综合应用数字图像处理、计算机视觉、模式识别等多项技术与传统监控相结合,设计出能够实时、持续的主动监视场景中的运动目标并且能够对图像序列进行实用化的分析、理解和管理的高智能化监控系统已经成为当前国内外关注的热点。 目前,国际上智能无线视频监控领域的研究已达相当高的水平,国内则处于刚刚起步阶段。在这种情况和要求下,研制一个新型的视频监控系统开发平台有着极其重要的科研和实际意义。 在社会信息化日益发展的今天,信息技术、网络技术、通信技术以及多媒体技术已经渗透到人类生存、活动的各个领域,视频监控以其直观、方便和丰富等特点,日益受到人们的青睐,视频监控正从传统的安防监控向管理、生产监控发展,并逐步与管理信息系统相结合,达到资源共享,为管理者提供更直观、更有效的决策信息,数字视频监控不仅符合社会信息化的发展趋势,而且代表了监控行业的发展方向。视频监控经历了一对一闭路电视监控时代和以PC为核心的多媒体监控时代,目前正在发展以网络为依托以数字视频压缩、传输、存储和播放为核心的第三代视频监控系统,该技术的出现适应了信息技术的发展,受到了学术界、产业界和使用部门的高度重视。 1.1 系统概述 所谓视频监控系统是指通过在某些地点安装摄像头等视频采集设备对现场进行拍摄监控,然后通过一定的传输网络将视频采集设备采集到的视频信号传送到指定的监控中心,监控中心通过人工监控或者将视频信号存储到存储设备上对现场进行视频监控。本系统由计算机、视频采集卡、球形云台和NRF905无线收发模块组成。计算机作为控制核心,连接NRF905接收模块接收发射终端的编码信号,并分析代码,经过程序分析后,控制云台、摄像头转到发射终端对应的预置位并拍照,实现自动拍照等功能,PCI视频采集卡采集摄像头的实时视频流,传给计算机,并显示在软件界面。工作重点是硬 本 科 毕 业 设 计 第 2 页 共 50 页 件终端的设计、视频流的软件调用和用C++编写界面控制程序。图1.1为系统框图: 同轴线 PCI 串口 摄像头 采集卡 解码MCU 计算机 串口 解码器 无线接收 云台 报警传感器 编码MCU 无线发射 图1.1 无线视频监控系统框图 无线视频监控系统分为前端监控设备,包括有云台,护罩,摄像机,支架,镜头,解码器等设备。后端监控设备,包括有装有视频采集卡的监控中心计算机,监视器等设备。 前端监控设备的功能有:摄像机采集视频信号或者图像,云台控制摄像机的转动,调整监视范围。镜头可以调整摄像机的焦距,从而起到调整图像的清晰度和图像的远近。解码器是接收控制主机的控制信号,对云台和镜头进行控制,以达到控制云台的运动方向以及控制镜头的焦距从而保证监控中心对现场可以进行全方位的实时监控。 后端监控设备的功能有:视频监控主机负责对前端监控设备发送指令,获取前端监控设备的反馈的一些参数,从而达到控制前端监控设备的作用,监视器则是用来显示视频信号的设备。由于监视器价格昂贵,如果要每一个摄像头都相应的连接一台监视器的话,相应成本就非常的高,而且监控中心的工作人员也不能完全可以兼顾到如此多的监视器,所以就使用数字多路采集卡,一台计算机进行多个摄像头的图像采集和显示,又可以节约成本。 按照系统的模块分类,系统可分为视频采集部分、无线收发部分、云台部分、软件系统四部分。 现在随着科学技术不断进步,计算机更加深入的各行各业,数字技术的日益发展,使得更多的电子产品与计算机紧密相连,利用计算机的超强处理技术,机型系统的控制。 本 科 毕 业 设 计 第 3 页 共 50 页 1.2 无线视频监控系统的基本原理及其特点 无线视频监控系统是基于多传感器技术、传感器信号无线收发、智能全自动定位监视、全自动拍照、文本记录时间和动作、全自动报警技术为内核的综合性、数字化、无线监控管理系统。它可以将机床设备为主要监控对象,既是一套全自动的视频监视系统,又是一种智能化、现代化的考勤管理系统。可对辖区内任一位置进行实时、不间断的手动控制监控并可以在无人监管的情况下实现对机床工作状态的全自动监控,并把工作状态以文本的形式进行记录。同时,系统采用先进的报警探测技术,对监控区域内的机床发生的任何操作行为及时捕获报警并进行实时拍照,将机床发生动作时的图像以当时的时间命名记录在计算机硬盘指定区域上存档。方便以机床状态、触发时间等关键词进行检索查看,可以有效监视机床的工作状态。防止工人偷工减料,干私活。并为工人的工作考勤提供依据。采用数字监控报警系统可以加强监控手段和提高管理水平,可实现无人值守,从而有效缓解这一矛盾。 首先,将各个监控点安装传感器,当监控终端的传感器有信号报警时,报警信号通过无线发射设备发送,并通过无线接收终端接收后通过计算机串口传输到监控中心计算机,监控中心收到报警信号后立即发出云台控制指令将摄像头对准报警位置、建立文本记录报警事件、进行拍照、硬盘录像等操作。 云台摄像机控制信号是下行传输的,由监控中心计算机发出各种控制信号,视频采集终端收到控制信号后,通过转动云台电机和调整摄像机镜头,来完成定点监控操作。 为了使系统照片清晰,视频流畅,系统采用了视频信号硬件压缩软件解压技术,计算机安装视频采集卡,并安装根据视频采集卡SDK开发的全自动监控系统软件,就能成为监控中心。摄像机的视频信号输入视频采集卡,视频采集卡通过 MPEG-4图像压缩算法,将视频信号转换为25帧/秒的数字图像,监控计算机对收到的来自前端的图像,进行软件解压缩并通过计算机显示屏幕进行实时监控。 计算机高速自动处理报警事件 适合远距离恶劣工作环境中信号传输报警信号; 报警日志实时记录、便于查找; 全自动化无人值守, 监控系统软件操作简单易于管理和维护。 本 科 毕 业 设 计 第 4 页 共 50 页 1.3 无线视频监控系统的发展现状 目前,国际上智能监控领域的研究已达相当高的水平,国内则处于刚刚起步阶段。国内缺少生产、研发监控系统的龙头企业。国内产品质量参差不齐。所以需要越来越多的专业人才加入到视频监控系统的研发和制作这个行业中来。 视频监控系统的发展从时间发展上来讲,大致经历了三个阶段。在九十年代初以前,主要是以模拟设备为主的闭路电视监控系统,称为第一代模拟监控系统。最简单的监控系统是由一架摄像机和一台监视器组成,中间用线连接,不需要特殊处理,仅适用于近距离单点监控,应用受到很大限制。目前广泛使用的模拟监控系统多采用宽带的同轴电缆作为传输介质,以模拟信号传输,图像效果较好,也可实现多点监控。但传输距离短,且造价较高,不适合远距离监控系统。九十年代中期,随着计算机处理能力的提高和视频技术的发展,人们利用计算机的高速数据处理能力进行视频的采集和处理,利用显示器的高分辨率实现图像的多画面显示,从而大大提高了图像质量,这种基于PC机的多媒体主控台系统称为第二代数字化本地视频监控系统。九十年代末,随着网络带宽、计算机处理能力和存储容量的快速提高,以及各种实用视频处理技术的出现,视频监控步入了全数字化的网络时代,称为第三代远程视频监控系统。第三代视频监控系统以网络为依托,以数字视频的压缩、传输、存储和播放为核心,以智能实用的图像分析为特色,引发了视频监控行业的技术革命,受到了学术界、产业界和使用部门的高度重视。 2 总体 2.1 系统结构及原理 2.1.1系统详细结构 系统包括监控中心计算机和前端设备,主机安装视频采集卡以及驱动,根据视频采集卡的特性,使用SDK开发包,用MFC编写界面程序作为控制中心。前端主要完成视频信息采集、探测器报警信号产生。主要设备包括云台、摄像机、解码器、信号探测传感器、无线发射模块、发射端编码器。监控中心主要完成视频信号的处理、报警信号的解析、控制命令的发送。主要设备包括视频采集卡、控制中心计算机主机、接收端解码器、无线接收模块等。 a) 云台和镜头:完成现场动态视频信息的采集,针对监控点的需要,将球形云台固 本 科 毕 业 设 计 第 5 页 共 50 页 定于屋顶等遮蔽范围小、可见范围大的位置。手动控制云台将摄像头对准需要监控的目标位置,存储预置位,并按机床编号存储。无动作触发的前提下,摄像头实时采集监控位置的图像,将图像传送到计算机,云台可自动355度转动,从而监视整个厂房车间。当某个加入预置位的监测位置报警时,中心计算机控制云台自动转向预置位的位置,摄像头拍照。图像自动从实时监控的画面中截图,保存。实现速度在5秒内。从而对报警的监控位置进行监视。 b) 解码器:中心计算机可以通过串行口控制解码器。实现远程对云台各个方位的控制,以及拍摄现场的场景拉近、推远等。负责控制云台和摄像机内部的电机转速转向等。解码器存储与计算机的通信协议。通过协议实现一系列控制动作。 c) 信号探测传感器:安装于监控位置的各个开关上。由于系统应用于机床等设备的监控,此传感器设计为开关触动,安装于机床的各个操作开关位置。开关触动后,可使发射解码器上的单片机I/O管脚电平发生变化,从使MCU产生机床动作代码,不同按钮连接不同的MCU的I/O管脚,从而能定义不同的动作代码和位置代码的预设值。 d) 无线收发前端: 基于nRF905的设计方案采用了“时分复用”的,来实现信道的复用。解码编码单片机控制发射模块的工作状态,使收发模块与单片机协同工作。实现编码发送,解码接收的功能。 收发模块工作频率 433MHz 解码器与计算机通信波特率 9600bps 计算机与云台通信波特率 9600bps 2.1.2系统原理 根据NRF905收/发模块在接收到与本地载波相同的空间载波时CD管脚会被置高这一功能,可使NRF905收发模块在通过SPI口接收到编码/解码MCU传来的报警地址信息和报警状态信息时,将nRF905 置接收状态以扫描空间载波,若接收到与之相同频率的空间载波时,CD管脚被置“1”,再通过MCU检测CD管脚的状态,使nRF905收/发模块继续处于接收状态以扫描空间载波。为了避免报警信号冲突,当发射模块接收不到与之相同频率的空间载波时,CD管脚被置”0”,编码MCU检测到此状态时,立刻将NRF905发射模块置发射状态,nRF905发射模块将报警地址码和报警位置状态信息发送给接收端NRF905接收模块,接收端MCU经过地址码、状态码比对,去掉前导码, 本 科 毕 业 设 计 第 6 页 共 50 页 解出发送端所传送的数据信息,并将其通过串口传送给中央控制计算机。 设计中采用软硬件相结合的方案实现所需功能。软件设计利用VC++语言程序完成。视频采集卡插在监控中心计算机的PCI插槽内,通过主机总线供电与传输数据。PCI扩展插槽,其位宽为32位或64位,工作频率为33MHz,最大数据传输率为133MB/sec(32位)和266MB/sec(64位)。可插接显卡、声卡、网卡、USB2.0卡、IEEE1394卡、IDE接口卡、RAID卡、电视卡、视频采集卡以及其它种类繁多的扩展卡。PCI插槽是主板的主要扩展插槽,通过插接不同的扩展卡可以获得目前电脑能实现的几乎所有外接功能。 监测位置以工厂的机床为监视对象,工业机床线路上安装线圈监测电流,当机床主电源380V电压的电流通过线路时,线圈将瞬间产生感应电流,5A转化为5mA电流,将交流小信号传输给C51单片机的I/O管脚。单片机管脚电平变化,通过分析确认后进行编码,通过SPI口将机床编号以及动作信息通过nRF905发射模块传输出去。当信号传到接收端,接收端nRF905模块将信号传送给接收端解码MCU,单片机解码后,将16位的2进制的机床代码与动作代码通过串口传递给监控中心计算机。计算机在程序中通过比对机床位置代码,如果代码正确,则通过串口发出机床对应的预置位的地址信息,信息发送给云台解码器,执行相应的动作,发解码器出控制云台转动、摄像机转动等控制指令进行动作。计算机串口通过RS232转成RS485传递给云台PIC单片机。单片机解码后,根据相应的动作指令要求,控制继电器吸合时间,从而控制云台转动角度。转动到预置位置后,进行拍照等动作处理。视频图像通过视频同轴线传到计算机,通过BNC插头输入到视频采集卡。视频采集卡将视频模拟信号通过硬件编码成MPEG-4的格式,控制中心计算机监控系统软件将视频流实时回调,显示在界面上并以AVI格式保存到指定位置。当每一次云台转动到指定位置时,软件自动截取图片,以JPG的格式存入计算机,并以动作时间为命名作为机床动作记录图片。同时将时间和动作显示在软件界面上并保存为TXT文档,方便查阅。这样监控系统的考勤功能和自动监控功能就可以实现了。人工操作的时候,只是将软件界面上点击控制按钮时,将按钮对应的代码发送给云台解码器,执行动作。只要摄像头电源保持供电,始终保证有视频信号显示,并且可以设置视频的格式和存储的位置。工业使用中系统的工作环境差,为了实现恶劣环境中系统的稳定运行。就必须对摄像头、云台、等一系列前端设备的硬件选择有严格的技术要求。 本 科 毕 业 设 计 第 7 页 共 50 页 2.2 视频采集卡的选择 天敏SDK-2000是基于PCI总线的高性能三路视频采集卡,支持卡同时采集三台摄像机的视频信号,支持即插即用,采集卡采用硬件压缩软件解压技术,摄像机的视频信号输入视频采集卡后,视频采集卡通过 MPEG-4图像压缩算法,将视频信号转换为30帧/秒的数字图像,监控计算机对收到的来自前端的图像,进行软件解压缩并通过计算机显示屏幕进行实时监控。并能通过回调,将视频以AVI等格式保存成录像视频文件。 天敏采集卡采用BT878 视频处理芯片: PCI总线,兼容Windows即插即用(PNP),安装简易; 显示画面流畅不间断,每秒可达30(NTSC)帧、25(PAL)帧; 支持NTSC和PAL.SECAM制式; 显示分辨率可达720x576(PAL); 视频预览映像:提供预览视频的任意缩放和全屏方式; 允许用户设置视频输出的尺寸; 允许用户设置视频源属性:亮度、对比度、饱和度、色度; 设置帧率大小:允许用户设置帧率大小来进行预览或捕获; 提供动态AVI图像捕获; 视频捕获:为用户提供YUY2格式枚举压缩和设置压缩方式; 提供YUY2视频格式的抓图,图像存为JPEG格式文件或BMP格式的文件; 为用户提供YUY2,RGB32,RGB24,RGB555视频源回调方式; 可实现自定义区域抓拍; 可采集单场,单帧,连续帧,间隔几帧,连续相邻帧的图象,精确到帧; 提供动态检测的功能; 支持中英文OSD叠加功能; 视频通道可实现高速切换; 支持2路Video和1路SVideo视频源; 完全支持DirectX和VFW视频开发工具的开发; 采集卡提供功能全面的SDK开发包,提供WINDOWS2000/XP开发库,可用VC++、VB等进行软件开发,开发包中函数说明详细,使用简单,适合进行初级的系统开发和工业应用。 本 科 毕 业 设 计 第 8 页 共 50 页 采集卡视频信号清晰稳定,可以缩短开发周期,并能通过开发包方便的进行对程序的后期调试和改编。对系统的开发有很大帮助。 2.3 摄像头以及云台的选择 摄像机采用TACHI的27倍光学变焦的摄像机,摄像机支持Pelco_D与Pelco_P等多种协议,这些协议是目前业内使用最广泛,通用性最强的协议,方便控制代码的编写以及云台的选择。摄像机外壳采用坚固的金属外壳。支持手动自动对焦,摄像头安装方便适用各种云台内置安装,27倍光学变焦、44万有效像素、大光圈、大广角适合应用于工厂等对成像质量要求比较苛刻的场合,图像清晰真实。 云台采用天地伟业的TC-D6600球形云台,同样支持Pelco_D与Pelco_P等多种协议的控制方式,方便控制程序的编制。云台有64组预置位可以调用,利用这个功能可以实现对64个监控位置的自动实时定位监控。并可以通过程序进行轨迹编制,对64个预置位进行轨迹化监视。云台价格低廉,功能全面,使用寿命长,适合大量采购和使用,节约了产品成本,提高了系统效率。云台适合室外、室内各种环境的安装,外壳坚固,有云台滤光罩,能有效防止摄像头色偏,并保护摄像头,有效防止进土、进水。适合于工厂等恶劣环境中的应用,并有利于工业化批量采购。云台采用台湾电机,旋转速度快,定位准确,适合自动化运行,并能实现系统的所有的性能要求。 表2.1 摄像机参数表 摄像头型号TACHI-27X 1/4inch EXview HAD CCD 图像传感器 有效像素 44万像素 480TVL 水平解析度 变倍 27倍(X12) 1.0 Lux / 0.01 Lux 最低照度 视频输出 VBS:1.0Vp-p,75欧姆 ?50 dB 信噪 1/1 ~1/10000s 电子快门 背光补偿 开/关 聚焦系统 自动/键控自动/手动 本 科 毕 业 设 计 第 9 页 共 50 页 表2.2 云台机械性能参数 参数名称 参数数值 355? 水平角度 90? 垂直角度 水平转速 0. 1?,20?/s 垂直转速 0. 1?,20?/s 预置位 64个 0.2? 预置位精度 控制方式 多协议,RS485 功率 室内:8W 室外:20W 工作温度 室内:0?,+50? 室外:-35?,+55? 环境湿度 0,95%(无冷凝) 2.4 无线收发模块的选择 收发模块选用的是单片433/868/915MHz无线收发芯片nRF905。 nRF905是挪威Nordic公司推出的单片射频发射器芯片,工作电压为1.9-3.6V,32引脚QFN封装(5mm×5mm),工作于433/868/915MHz3个ISM频道(可以免费使用)。nRF905可以自动完成处理字头和CRC(循环冗余码校验)的工作,可由片内硬件自动完成曼彻斯特编码/解码,使用SPI接口与微控制器通信,配置非常方便,其功耗非常低,以-10dBm的输出功率发射时电流只有11mA,在接收模式时电流为12.5mA。nRF905单片无线收发器工作由一个完全集成的频率调制器,一个带解调器的接收器,一个功率放大器,一个晶体震荡器和一个调节器组成。ShockBurst工作模式的特点是自动产生前导码和CRC,可以很容易通过SPI接口进行编程配置。 2.4.1工作模式 a) 典型ShockBurst TX模式 当应用MCU有遥控数据节点时,接收节点的地址TX-address和有效数据TX-payload通过SPI接口传送给nRF905应用协议或MCU设置接口速度; MCU设置TRX_CE、TX_EN为高来激活nRF905 ShockBurst传输; nRF905 ShockBurst: 本 科 毕 业 设 计 第 10 页 共 50 页 无线系统自动上电; 数据包完成(加前导码和CRC校验码); 数据包发送(100kbps,GFSK,曼切斯特编码); 如果AUTO_RETRAN被设置为高nRF905将连续地发送数据包直到TRX_CE被设置为低; 当TRX_CE被设置为低时,nRF905结束数据传输并自动进入standby模式。 b) 典型ShockBurst RX模式 通过设置TRX_CE高,TX_EN低来选择ShockBurst模式; 650us以后,nRF905监测空中的信息; 当nRF905发现和接收频率相同的载波时,载波检测CD被置高; 当nRF905接收到有效的地址时,地址匹配AM被置高; 当nRF905接收到有效的数据包(CRC校验正确)时,nRF905去掉前导码、地址和CRC位,数据准备就绪(DR)被置高; MCU设置TRX_CE低,进入standby模式低电流模式; MCU可以以合适的速率通过SPI接口读出有效数据; 当所有的有效数据被读出后,nRF905将AM和DR置低; nRF905将准备进入ShockBurst RX、ShockBurst TX或Powerdown模式。 c) 掉电模式 在掉电模式中,nRF905被禁止,电流消耗最小,典型值低于2.5uA。当进入这种模式时,nRF905是不活动的状态。这时候平均电流消耗最小,电池使用寿命最长。在掉电模式中,配置字的内容保持不变。 d) STANDBY模式 Standby模式在保持电流消耗最小的同时保证最短的ShockBurstRX、ShockBurstTX的启动时间。当进入这种模式时,一部分晶体振荡器是活动的。电流消耗取决于晶体振荡器频率,如:当频率为4MHZ时,IDD=12uA;当频率为20MHZ 时,IDD=46uA。如果uPCLK(Pin3)被使能,电流消耗将增加。并且取决于负载电容和频率。在此模式中,配置字的内容保持不变。 e) 器件配置 nRF905的所有配置都通过SPI接口进行。SPI接口由5个寄存器组成,一条SPI指 本 科 毕 业 设 计 第 11 页 共 50 页 令用来决定进行什么操作。SPI接口只有在掉电模式和Standby模式是激活的。 状态寄存器(Status-Register) 寄存器包含数据就绪DR和地址匹配AM状态。 RF配置寄存器(RF-Configuration Register) 寄存器包含收发器的频率、输出功率等配置信息。 发送地址(TX-Address) 寄存器包含目标器件地址,字节长度由配置寄存器设置。 发送有效数据(TX-Payload) 寄存器包含发送的有效ShockBurst数据包数据,字节长度由配置寄存器设置。 接收有效数据(TX-Payload) 寄存器包含接收到的有效ShockBurst数据包数据,字节长度由配置寄存器设置。在寄存器中的有效数据由数据准备就绪DR指示。 f) 接口 模式控制接口: 该接口由 PWR 、TRX_CE、TX_EN组成控制由nRF905组成的高频头的四种工作模式:掉电和 SPI 编程模式;待机和SPI编程模式 ;发射模式;接收模式。 SPI接口: SPI 接口由 CSN、SCK、MOSI以及MISO组成。在配置模式下单片机通过SPI接口配置高频头的工作参数;在发射/接收模式下单片机SPI接口发送和接收数据。 状态输出接口: 提供载波检测输出CD,地址匹配输出AM,数据就绪输出DR。 g) 具体系统功能的实现 根据nRF905在接收到与本地载波相同的空间载波时CD管脚会被置高这一功能,可使nRF再通过SPI口接收到MCU传来的机床地址信息和机床状态信息时,将nRF 置接收状态以扫描空间载波,若接收到与之相同频率的空间载波时,CD管脚被置“1”,通过MCU检测CD管脚的状态,使nRF继续处于接收状态以扫描空间载波,当nRF接收不到与之相同频率的空间载波时,CD管脚被置”0”,MCU检测到此状态时,立刻将nRF置发射状态,nRF将机床地址码和机床状态信息发送给接收端nRF,接收端经过地址码比对,去掉前导码,解出发送端所传送的数据信息,并将其传送给计算机。 本 科 毕 业 设 计 第 12 页 共 50 页 由此可知,基于nRF的设计方案采用了“时分复用”的方法,来实现信道的复用。曼彻斯特编码/解码由片内硬件完成,nRF905芯片的的详细结构与管脚功能如图表所示: 图2.1 nRF905的详细结构 3 系统硬件设计 3.1 nRF905无线发送流程 接收端和发射端的MCU模块基本相同,原理相同,只是由于解码与编码MCU内程序不同,则工作流程不同。 编码MCU通过SPI总线配置nRF905模块的内部寄存器和收发数据。在nRF905 正常工作前, 必须由MCU 根据系统需要写好配置寄存器。发送数据时, 先通过编码MCU 把发射端nRF905置于待机模式(PWR_UP置为高、TRX_CE置为低), 然后通过SPI总线把发送地址和待发送的数据都写入相应的寄存器中, 之后把发射端nRF905置于发送模式( PWR_UP、TRX_CE和TX_EN 全部置高),配置成功后数据就会自动发送出去。若射频配置寄存器中的自动重发位(AUTO_RETRAN)设为有效,数据包就会被重复发出, 直到MCU拉低TRX_CE退出发送模式为止。从而实现机床位置码和机床状态码的及时发送。 nRF905发射模块发送数据的流程图如图3.1所示。 本 科 毕 业 设 计 第 13 页 共 50 页 图3.1 nRF905 发送数据的流程图 3.2 nRF905无线接收流程 接收数据时, 接收端解码器MCU先在nRF905芯片的待机状态中写好射频配置寄存器中的接收地址, 然后将接收端nRF905置于接收模式(PWR_UP 和TRX_CE 置高、TX_EN 置低), 接收端nRF905就会自动扫描接收空中的载波。当收到有效数据(地址匹配且校验正确)时, DR引脚会自动置高, MCU在检测到这个信号后,可以将接收端nRF905置为待机模式, 然后通过SPI总线从接收数据寄存器中读出有效数据。利用接收端解码MCU通过控制计算机串口传输至计算机总线。根据解码MCU预留的RESET功能电路,设计复位功能,按下RESET按钮后,MCU缓存可以清空。nRF905 接收数据的流程如图3.2所示。 本 科 毕 业 设 计 第 14 页 共 50 页 图3.2 nRF905 接收数据的流程 3.3 电流采样模块电路图 系统的报警传感器安装在机床上,对机床上电和完工操作必须进行电源的检测,而机床主电源为380V,所以采取线圈检测电流的方式,对机床的主电源进行检测。当监测位置的机床上电时,线圈感应出电流,为了保证电流信号的稳定和清晰,必须设计信号采样模块,对其进行放大、滤波处理。当机床主电源380V电压的电流通过线路时,线圈将瞬间产生感应电流,并将5A转化为5mA电流,感应线圈获得微弱电信号后,将交流小信号传输给此采样电路,电路采用LM358芯片,对小信号进行放大。采用两个1mF的电容进行滤波,然后将采样信号通过输出端传送到编码MCU的I/O引脚。MCU通过判断是否提供高电平来判断是否有信号。 本 科 毕 业 设 计 第 15 页 共 50 页 图3.3 电流采样模块电路图 3.4 视频部分的设计方案 系统对视频监控位置采集图像,需要将云台悬挂于监控地点的上方,竖直悬挂云台,保持视角范围无障碍物,摄像头实时采集视频,及时并且准确的显示在监视器上,所以摄像头必须安装到多个监控位置的中心位置。将视频输出信号用同轴线进行传输,BNC接口接在视频采集卡上,用视频采集卡进行模拟视频流的编码,编码格式为MPEG-4,视频采集卡插在计算机的PCI插槽上,保证高速传输视频信号,通过SDK的视频调用函数,将视频在打开程序时新建的子窗口中显示。视频格式为AVI、25帧每秒、颜色模式为RGB32。为了将图片清晰度提升,视频播放兼容性提高,显示分辨率为640x480。采用PREVIEW的显示方式。并且在程序中视频的参数可以调节,能适应不同监控条件的需要。视频进行变焦操作后,摄像头自动保存焦距,实现转动后视频流位置准确。为了使镜头在高倍焦距时不出现视频的间断模糊的情况,在程序中预留云台速度调节按钮。当云台高速转动时,可选用低倍变焦,当云台低速模式时,可选用高倍变焦,让摄像头云台自动旋转,进行视频的采集。 本 科 毕 业 设 计 第 16 页 共 50 页 4 系统软件设计 在Windows平台实现视频监控有多种方式,由于需要实现完成复杂而精确的角度定位,选择球形大尺寸可预置位云台,且监控系统需要实时的显示由视频采集卡采集的摄像头视频,监控拍照的同时需要将照片保存,而且将信号发射终端的动作情况记录到文本。所以实现这一切离不开软件的支持,目前,在WINDOWS操作系统平台下的监控软件不计其数,但是专门用来自动记录考勤,自动控制摄像头转到发射终端的位置,自动拍照,同时又可人工操作的软件少之又少。本软件用到Visual C++ 6.0开发。 编译环境: a) 将SDK安装目录下的Inc 和 Lib 目录路径分别加入VC++工程设置的 “C/C++ - Preprocressor – Additional include directories”和“Link – Input – Additional library path”中。 b) 将 Lib\DSStream.lib 文件加入工程设置的“Link – General – Object/library module”中。 c) 将 Inc\DSStream.h 文件加入工程,并 #include “DSStream.h”。 d) 将 Exe\DSStream.dll 文件拷入系统目录或其他系统能找到的目录中。 e) 开始编写代码。 4.1 程序主要实现功能 4.1.1 报警信号的处理 程序通过ON Timer事件对串口不间断的扫描,当发现串口接收到解码器投递的数据时,case 0x4c:machine_num = 1;break对数据进行比对,如果是定义的某个数据时,执行此数据默认对应的动作,比如控制云台和镜头转到给编码定义的预置位machine_num,当镜头稳定后,进行拍照,将照片以当前时间未文件名存储到默认位置hr = DSStream_SaveToBmpFile(0,filename); strftime(filename,sizeof(filename),"%Y-%m-%d-%H-%M-%S.bmp",localtime(&t)), 并将此事件的时间、动作记录在historylog.txt中,以便查看。 4.1.2 视频流的处理 当打开程序时,对视频采集卡进行初始化: void CYTDlg::capCardSetup(), 本 科 毕 业 设 计 第 17 页 共 50 页 同时弹出视频显示子窗口: m_ShowStreamDlg[0].Create(IDD_SHOWSTREAM, this), 进行软解码后,将视频流调用显示在子窗口: VideoStandard vs=VideoStandard_PAL_B; snp.pDlgArray = m_ShowStreamDlg; hr = DSStream_GetVideoStream(iCardID, StreamNotify, &snp)。 视频流利用Call Back回调显示在界面,并可以编码为AVI格式保存视频。 4.1.3 人工操作的处理 当人为操作云台控制系统时,对自动化系统实行中断处理,人工操作作为中断动作。当人工操作结束,原先正在执行的自动化操作不再继续执行,避免动作延误造成的记录不准确。 4.1.4 云台、摄像头的控制 系统采用Pelco_D与Pelco_P协议供选择,此协议实现可编辑预置位、控制云台、控制摄像头等动作的实现。本程序默认应用PELCO-D协议,采用RS485通信,1位起始位、8位数据、1位停止位、无效验位。波特率:9600B/S它的格式如下: 表4.1 PELCO-D协议指令格式 字节 功能 Byte 1 同步字 Byte 2 地址码 Byte 3 命令字1 Byte 4 命令字2 Byte 5 数据1 Byte 6 数据2 Byte 7 校验码 以下所有的值都是用的 16进制表示。同步字段通常都是 $FF。地址码是指与矩阵通信的那台设备的逻辑地址,可以在设备中设置。校验码是指Byte2到Byte6这5个数 的和,若超过255则除以256然后取余数(modulo 256)。 校验码 = MOD[(字节2 + 字节3 + 字节4 + 字节5 + 字节6)/100H] 本 科 毕 业 设 计 第 18 页 共 50 页 命令字1和命令字2设置如下: 表4.2 命令字 1和命令字2设置 字节 命令字1 命令字2 Bit 7 Sence码 焦距拉远 Bit 6 为0 视角变宽 Bit 5 为0 视角变窄 Bit 4 自动/手动扫描 上 Bit 3 摄像机打开/关闭 下 Bit 2 光圈关闭 左 Bit 1 光圈打开 右 Bit 0 焦距拉近 为0 数据1表示镜头左右平移的速度,数值从$00(停止)到$3F(高速),另外还有一个值是$FF,表示最高速。 数据2表示镜头上下移动的速度,数值从$00(停止)到$3F(最高速) 通过协议,将界面的动作按钮定义各个功能,点击按钮时,将协议封装好的代码以文件写入的方式提交给发送串口,云台、相机收到信号后执行动作。 4.1.5 拍照、录像实现 程序可以实现自动拍照、手动拍照和录像,通过SDK提供的 sprintf(szFile, "F:\\IMAGE_%d.bmp",i); hr = DSStream_SaveToBmpFile(0, szFile), 将图片保存到设置的位置。本程序将自动拍照以动作的发生时间为名,手动操作照相则以图片序号为名。防止混淆。 4.1.6 考勤自动记录功能 实现自动考勤记录功能,建立表格fp = fopen("historylog.txt","a+");及时的记录监控位置发生的动作,存储在historylog.txt中,方便随时查看。 sprintf (strDis,"机床%d主电机运转",machine_num); sprintf (strDis,"机床%d主轴转动",machine_num); sprintf (strDis,"机床%d正常停机",machine_num); 本 科 毕 业 设 计 第 19 页 共 50 页 sprintf (strDis,"机床%d完工",machine_num); 系统预置四种机床动作,方便记录工人考勤,和机床使用状况,此状态可以更改,可以添加,执行状态对应的预置位,预置位通过下列三个机床编码的比对来确定。 case 0x4c:machine_num = 1;break; case 0x4d:machine_num = 2;break; case 0x4e:machine_num = 3;break; 机床确定后再进行动作的确定比对。将比对结果数据作为动作事件存入historylog.txt完成考勤记录。 4.2 软件界面程序 在Windows平台下32位应用程序开发中有很多计算机开发语言,但几年来Visual C++一直以它独特的魅力在众多编程工具中独树一帜。这是因为与其他编程工具相比,Visual C++不但提供可视化的编程环境,更在编写直接对系统进行底层操作的程序方面独领风骚,并且其生成代码的质量也在众多开发工具中名列前茅。还有Visual C++提供的Microsoft基础类库,对Windows的Win32应用程序接口进行了十分彻底的封装,使得可以使用完全面向对象的方法来进行Windows应用程序的开发,不但避免了对某些技术细节需要深入了解的麻烦,而且大大节省了应用程序的开发周期,降低了开发成本,也使Windows程序员从大量的复杂劳动中解脱出来。基于以上原因,本人机界面程序采用Visual C++编写。 图4.1为程序主界面窗口,程序用MFC编写界面,调用DSStream.dll动态链接库,进行视频的操作,用对界面添加按钮,对按钮定义BMP图片,并用Pelco_D与Pelco_P 协议实现对云台摄像头的分别控制。 主窗口实现对系统的全面控制,预置位输入编码后SET为存储当前为编码对应的预置位,GO为转到输入的代码指定的预置位,CLEAR为清除当前代码对应的预置位,编码应该与机床的编码对应,从而实现文本准确记录机床号码。打开程序之前安装视频采集卡驱动,打开程序时弹出视频显示窗口,并在程序所在文件夹目录下建立记录文本historylog.txt。由于Pelco_D与Pelco_P协议中有对雨刷和射灯的指令定义,为了方便今后系统升级,将此功能按钮添加,但在上述硬件中没有实现此功能。发送串口设置与接收串口设置共同使用同一个串口读写程序段,由于事件不同,无冲突,可实现对7个不同串口的选择和2个串口读写操作。 本 科 毕 业 设 计 第 20 页 共 50 页 图4.1 主界面 图4.2 串口设置界面 串口读写的操作以文件读写的形式进行。同时打开串口后,对读写串口进行分别设置,当接收和发射串口选择同样串口时会有错误提示。接收与发送两个串口都可以分别进行参数的设置。窗口主要实现协议的选择,波特率的选择、校验位、停止位、数据位的设置。 视频设置窗口可进行对视频参数的设置,可以进行视频源的选择,视频制式的选择,对比度、色调、饱和度的设置,视频格式的设置,视频宽、高的设置等。窗口调用DSStream.dll中的视频设置函数,方便修改和使用。参数的默认值保存在程序中,每次重新打开程序时都会以默认值打开。窗口的标题栏显示当前采集卡的卡号以及状态,对视频的各项参数一目了然。 本 科 毕 业 设 计 第 21 页 共 50 页 图4.3 视频设置窗口 4.3 程序主要函数说明 4.3.1初始化采集卡 void CYTDlg::capCardSetup() 其中capGetDriverDescription检测采集卡的相关信息,返回值为true检测成功。如果为其他状态,将各个报错状态以MessageBox()弹出对话框的形式进行提示说明,并将状态存储到字符串变量m_sCaptureStatus中。 4.3.2 连接视频捕捉卡 HRESULT DSStream_ConnectDevice(int iCardID, BOOL bOverlay, HWND hParentWnd = NULL) 只有连接后,才能对卡进行其他操作。 iCardID: 想要连接的卡号,以0为基数。计算机上的视频捕捉卡的数量可由DSStream_GetCardNumber得到。 卡号对应的设备名字可利用DSStream_EnumVideoCaptureDev取得。 bOverlay: 是否使用 Overlay 模式。TRUE-使用,FALSE-不使用。使用 Overlay 时,显示速度快、占用CPU资源极少,但是不能快照、录像、显示Logo等。另外,当有一块卡使用了Overlay或者系统中有其他的 Overlay 程序存在时,其他卡将不能使用这种模式。 本 科 毕 业 设 计 第 22 页 共 50 页 本程序为了方便起见,只考虑单卡Overlay情况。本程序默认应用PREVIEW模式,从 而此处为FALSE。 hParentWnd: 指定视频图像的父窗口,图像将显示在 hParentWnd 窗口中。也可用 DSStream_SetOwnerWnd来指定父窗口。程序在打开时弹出的窗口即视频显示的子窗口。 父窗口默认为程序主窗口。 4.3.3设置视频窗口的属性 a) HRESULT DSStream_SetOwnerWnd(int iCardID, HWND hParentWnd) 设置视频显示窗口的父窗口,视频图像将在这个窗口中显示。 hParentWnd:父窗口的句柄。 b) HRESULT DSStream_GetOwnerWnd(int iCardID, HWND* phParentWnd) 得到当前视频显示窗口的父窗口的句柄。 phPraentWnd:返回父窗口的句柄。 c) HRESULT DSStream_SetWindowPos(int iCardID, RECT rc) 设置视频图像在父窗口中的位置。如果所设位置的宽、高与视频图像实际的宽、高 不等,视频图像将被缩放。视频图像的实际宽、高可通过调用DSStream_GetVideoInfo得到。 rc:视频图像在父窗口中的位置。 d) HRESULT DSStream_GetWindowPos(int iCardID, RECT* prc) 得到视频窗口在父窗口中的位置。 prc:返回视频窗口在父窗口中的位置。 e) HRESULT DSStream_SetMessageDrain(int iCardID, HWND hWnd) 设置后,视频显示窗口的键盘和鼠标消息将发往窗口 hWnd。通常,与父窗口为同 一个窗口。 hWnd:承受键盘、鼠标消息的窗口的句柄。 f) HRESULT DSStream_SetNotifyWindow(int iCardID, HWND hWnd, long lMsg) 设置后,每当有视频错误产生时,窗口 hWnd 都将收到消息 lMsg。 hWnd:接受 lMsg 消息的窗口。 lMsg:自定义的消息。消息的LPARAM和WPARAM参数的意义可参见枚举量 - 错 本 科 毕 业 设 计 第 23 页 共 50 页 误代号。 g) void DSStream_ManageNotifyMessage(int iCardID) 此函数要等设置DSStream_SetNotifyWindow后才有效。它分析当前产生的事件, 负责发送消息 lMsg 到窗口 hWnd。每当有错误Error_FirstNotifyMsg产生时,必须调 用此函数。 4.3.4 设置视频图像的各种属性 a) HRESULT DSStream_DisplayPropertyDialogs(int iCardID,PropertyDialog id, HWND hParentWnd, LPCTSTR szCaption=NULL) 调用系统对话框,对视频的各种属性进行设置。 id:要调用的对话框的代号 hParentWnd:对话框的父窗口。 szCaption:对话框的标题。如果设为NULL,使用默认标题。 b) HRESULT DSStream_GetVideoInfo(int iCardID,VIDEOSTREAMINFO * pVSI, intpin) 得到显示脚或录像脚的视频属性,包括视频子类型、帧率、图像的大小、颜色位率 等。 pVSI:返回视频属性。 c) HRESULT DSStream_SetVideoInfo(int iCardID,VIDEOSTREAMINFO vsi, intpin) 设置显示脚或录像脚的视频属性,包括视频子类型、帧率、图像的大小、颜色位率 等。 vsi:VIDEOSTREAMINFO 结构,包括各种属性。 d) HRESULT DSStream_GetVideoPropertyValue (int iCardID,VideoProperty id,VIDEOPROPERTYRANGE* pVPR) 得到视频图像的各个属性的信息,包括亮度、对比度、饱和度等。 id:图像属性的代号。 pVPR:返回图像属性的信息。 e) HRESULT DSStream_SetVideoPropertyValue(int iCardID,VideoProperty id, long value) 设置视频图像的各个属性的值,包括亮度、对比度、饱和度等。 本 科 毕 业 设 计 第 24 页 共 50 页 id:图像属性的代号。 value:属性的值。它的取值范围和默认值可由DSStream_GetVideoPropertyValue得 到。 f) HRESULT DSStream_WhatInPinRouteToOutPin(int iCardID, int idOutPin, long* pInPin) 得到当前的视频源。 idOutPin:必须为0。 pInPin:返回视频源。对于 SDK-2000 卡,范围是 0-2。 g) HRESULT DSStream_RouteInPinToOutPin(int iCardID, int idInPin, int idOutPin) 设置视频源。 idInPin:视频源。对于 SDK-2000 卡,范围是 0-2 idOutPin:必须为0。 h) HRESULTDSStream_GetVideoStandard(intiCardID,VideoStandard*pVideoStandard, long* pAvailable) 得到当前的视频制式。 pVideoStandard:返回当前使用的视频制式。 pAvailable:返回捕捉卡支持的所有视频制式。 i) HRESULT DSStream_IsVideoSignalLocked(int iCardID, BOOL * bIsSignalLocked) 检测当前的视频输入端口上是否有信号输入 4.3.5 录像、快照、数据流函数 a) void DSStream_SetCaptureFile(int iCardID, LPCTSTR szFileName) 设置录像时的输出文件。 szFileName:.AVI 文件的名字。 b) void DSStream_StartCapture(int iCardID) 开始录像。 c) void DSStream_StopCapture(int iCardID) 停止录像。 d) void DSStream_IsCapturing(int iCardID, BOOL* bIsCapturing) 查看某一片卡是否正在录像。 本 科 毕 业 设 计 第 25 页 共 50 页 bIsCapturing:返回结果。 e) void DSStream_SetFrameRateOnCapture(int iCardID, BOOL bUseFrameRate, double duFrameRate) 设置录像时是否使用自定义的帧率,以及帧率的大小(0-30)。 bUseFrameRate:录像时是否使用自定义的帧率。 duFrameRate:帧率的大小(0-30)。 f) void DSStream_IsUseFrameRate(int iCardID, BOOL* pYesOrNo) 查看某一片卡是否在录像时使用自定义帧率。 pYseOrNo:返回结果。 g) HRESULT DSStream_SaveToJpgFile(int iCardID, LPCTSTR szFileName, int iQuality) 保存当前图像为 JPG 文件。视频流状态为 STOP 时,保存失败。 szFileName:.JPG 文件的名字。 iQuality:JPG 图片的压缩质量(0-100)。 h) HRESULT DSStream_SaveToBmpFile(int iCardID, LPCTSTR szFileName) 保存当前图像为 BMP 文件。视频流状态为 STOP 时,保存失败。 szFileName:.BMP 文件的名字。 i) HRESULT DSStream_GetCurrentDib(int iCardID, BYTE* pBuffer, long* pSize) 将当前图像的 DIB 数据保存到内存中。视频流状态为 STOP 时,保存失败。 pBuffer:指向预先分配的内存。可以为 NULL,此时 pSize 将得到保存图像需要 的内存大小。 pSize:若 pBuffer 不为 NULL,pSize 指示 pBuffer 的大小。为 pBuffer 为 NULL, pSize 得到保存图像需要的内存大小。 j) HRESULT DSStream_GetVideoStream(int iCardID, VideoStreamProc proc, LPVOID pParam) 启动或停止数据流回调。如果启动数据流回调,每当有一帧新的图像产生时,函数 proc 都将被调用。 proc:数据流回调函数的函数指针。若 proc 不为 NULL,开始数据流回调;若为 NULL,停止数据流回调。 本 科 毕 业 设 计 第 26 页 共 50 页 回调函数的定义为 extern "c" void proc (const BYTE* pDIBHead, const BYTE* pDIBits, LPVOID pParam)。 pDIBHead 指向 DIB 头(即 BITMAPINFO*),pDIBits 指向点阵数据,pParam 是用户在DSStream_GetVideoStream中自定义的参数。 pParam:用户自定义的参数。每次回调函数 proc 被调用时,pParam 都被传回给用户。 4.3.6 自动控制程序 void CYTDlg::OnTimer(UINT nIDEvent) Timer定时器按照每秒5次的速度扫描串口,在主程序SetTimer(5,200,NULL)中定义. a) fp = fopen("historylog.txt","a+"); fprintf(fp,"%s%s\n",currenttime,strDis) 建立工作记录表,按照时间、动作记录解码器解码后分析编码得到的机床事件,这里机床事件默认有四种:机床%d主电机运转、机床%d主轴转动、机床%d正常停机、机床%d完工,%d为机床编码machine_num的值,由无线信号解码后得到。 b)当解码器传送给计算机的报警代码为"0x?0"时自动控制云台摄像头转到"?"对应的预置位machine_num。 Case 0x?0:m_CStageLens.PreSet(m_nAddr,machine_num,CStageLens::PresetAction_Goto) c) strftime(filename,sizeof(filename),"%Y-%m-%d-%H-%M-%S.bmp",localtime(&t) int set_ad_mode(int cardno,int axis,int value) 当云台摄像头完成向报警未知对应的预置位的定位后,进行自动拍照,文件名为当前时间。格式为BMP。 d) sprintf (strDis,"机床%d完工",machine_num); this->SetWindowText(strDis); 将对解码器投递的监控点的报警信息显示在主窗口标题栏。 e) 对串口的操作 1) HANDLE CCom::OpenCOM(int iPort)打开串口。默认速率为9600bps,无校检位,数据位为8位,1位停止位。 本 科 毕 业 设 计 第 27 页 共 50 页 功能: 打开串口 入口: iPort:串口号 返回: >=0 打开后的串口指针, INVALID_HANDLE_VALUE(-1) 失败 2) void CCom::Close() 功能:关闭串口 3) int CCom::Read(char *buffer, int iMaxLength) 功能:从串口读取数据 4) int CCom::Write(char *buffer, int iLength) 功能:写数据到端口 5) 建立两个串口事件: m_CCom.m_bOpenCom = TRUE; m_CCom2.m_bOpenCom = TRUE; 初始化的时候打开两个串口,对两个串口按照ON TIMER进行轮询式扫描数据。核对数据后,进行相应的自动数据打包发送。 4.3.7 CheckButton.cpp函数 函数定义界面的按钮功能: void CYTDlg::YTBtnDown(int nResourceID) 函数定义按钮的图像转换: void CCheckButton::SetDown(BOOL bDown) 4.4 程序的调试运行 代码修改好后,计算机装好驱动,再次进行DEBUG编译,将程序所需的DLL文件拷贝到DEBUG文件夹中,运行YT.EXE程序,界面出现后,视频正常显示,云台正常控制,自动监控功能能够实现,反复测试,反复修改,功能都没有问题后将程序YT.EXE与DSStream.dll两个文件拷贝出来,放到一个文件夹中,就可以单独作为应用程序使用。 运行在安装有驱动的计算机上执行YT.EXE,显示视频同时生产historylog.txt文件,触动发射端按钮开关,historylog.txt正常记录机床的状态与机床号码,说明程序使用正常。 如果计算机串口被其他程序占用或者计算机串口初始化失败,弹出提示框如图4.4。 本 科 毕 业 设 计 第 28 页 共 50 页 图4.4 串口打开失败 当采集卡初始化失败,或者没有安装驱动程序时会弹出采集卡故障提示窗口。 图4.5 视频采集卡初始化失败 图4.6 软件正常安装使用 本 科 毕 业 设 计 第 29 页 共 50 页 结 论 通过对无线视频监控系统的研究,做出了了一套既经济又可靠又有超强兼容性的监控系统。系统经过长时间测试,图像采集画面清晰、云台定位准确、图片拍摄及时、机床状态记录清楚明了。在实际安装使用,可保持良好的稳定性能,能够长时间连续运行,不出现死机现象;使用时操作简便,系统扩展性好,容易维护。是一种简单的多媒体自动化监控系统。 无线视频监控系统的设计思路是安防与管理的结合,利用先进的探测技术、数据采集技术、传感器技术、自动控制技术、图像分析与处理技术、多媒体技术、数据融合技术,形成安全防范、人员管理、设备管理、信息管理等综合化、自动化、智能化的安全管理体系。相信随着计算机技术、视频技术、控制技术、通信技术的发展,无线监控技术会越来越强大,所以对此系统有了更高的发展要求。 此系统后期将加入人脸识别、多摄像头联合定位、手机监控客户端、多种监控产品协同工作进行监控、通过触摸屏替代软件按钮来实现控制云台操作、局域网广域网无缝结合进行网络化控制、实时录像时自动清除历史、协同报警器实现自动报警等可用功能。接口应用的为工控中常用的串口控制,但随着计算机的普遍应用,USB接口将取代串口,所以接口改为USB也成为一个发展方向。相信随着技术的成熟,无线监控系统会越改进越完善,并且应用前景会更加广泛。 无线视频监控系统现将应用于工厂进行自动化机床监控管理,可以合理记录工人机床操作,并可以作为工人考勤依据,它将为企业节约管理成本,对企业的管理自动化和安全生产有很大的实效性帮助,它的成本低廉、应用广泛。相信在不久之后,此技术就会普及应用,并向成熟产品发展。工业的每一次进步,都代表着人类文明的进步。为工业现代化作出贡献,是每个科学工作者的和义务。 本 科 毕 业 设 计 第 30 页 共 50 页 致 谢 在论文完成之际,我要特别感谢安胜彪老师的热情关怀和悉心指导,同时也感谢其他各位老师对我的帮助。在我撰写论文的过程中,安老师倾注了大量的心血和汗水。老师们平时工作都非常繁忙,但是在这样劳累的情况下,依然对我们进行一丝不苟的悉心指导,对于我不太理解的视频采集部分,于国庆老师曾给过非常大的帮助,耐心的讲解。其他细节部分,安老师也特别为我多次讲解,使我对整个系统的规划有了全局性认识,这些都让我受益匪浅。 无论是在论文的选题、构思和资料的收集方面,还是在论文的研究方法以及成文定稿方面,我都得到了安老师悉心细致的教诲和无私的帮助,特别是他广博的学识、深厚的学术素养、严谨的治学精神和一丝不苟的工作作风使我终生受益,在此表示真诚地感谢和深深的谢意。 在做毕业设计的过程中,也得到了许多同学的宝贵建议,特别是张伟强和代素亮同学,在软件编程过程和硬件设计中给予我很大的帮助和耐心的指导,同时也要感谢崔晓林等同学给我的帮助和支持,在此一并致以诚挚的谢意。 感谢所有关心、支持、帮助过我的良师益友。感谢学院为我们毕业设计的关心。 最后,向在百忙中抽出时间对本文进行评审并提出宝贵意见的各位老师表示衷心地感谢~ 本 科 毕 业 设 计 第 31 页 共 50 页 参 考 文 献 1 余小游,卢焕章,常青(多传感器目标识别系统中的数据融合方法与系统结构的研究(国防科技参考,1998 2 李玉山(数字视觉视频技术(西安:西安电子科技大学出版社,2006. 3 穆战松,黄挚雄(基于H(264的远程数字视频监控系统(计算机与数字:r程, 2006. 4 陈兵旗,孙明(Visual C++实用图像处理专业教程(北京:清华人学出版社, 2004. 5 钱能(C++程序设计教程(北京:清华大学出版社,1999. 6 Douglas V Hall.微处理器与接口技术.合肥:中国科技大学出版社. 7 郑学坚,周斌.微型计算机原理及应用.北京:清华大学出版社,2000. 8 朱剑平,付宇光译.工程问题C语言求解. 北京:清华大学出版社,2005. 9 杨小平.Visual C++项目案例导航.北京:科学出版社,2002. 10 屈磊,李媛媛. Visual C++开发入门与编程实践.北京:电子工业出版社. 11 张春华译.C++精粹——理工类C++教程.北京:科学出版社,2005. 12 刘宏.C++程序设计教程.武汉:武汉大学出版社,2005. 13 蒋 博,nRF905的无线数据传输系统.上海:同济大学出版社,2000. 14 张筠莉. Visual C + + 实践与提高———串口通信与工程应用篇[M ]. 北京:中国铁道出版社, 2005. 15 (美)Jeffrey S.Childs C++. Classes and Data Structures.北京:清华出版社,2009. 16 C(Wren,A(Azarbayejani,T(Darrell,and A(Pentland,“Pfinder:Real—time Trackingof the Human Body,IEEE Trans(PAMI,v01(19,no(7:780—785,Jul(1997( 17 I(Haritaoglu,D(Harwood and L(S(Davis,W4:Real—Time Surveillance of People andTheir ActiVities,IEEE Trans(PAMI,v01(22,no(8:809-830,Aug(2000( 本 科 毕 业 设 计 第 32 页 共 50 页 附录: NRF905发射模块电路图 本 科 毕 业 设 计 第 33 页 共 50 页 NRF905管脚功能表 管脚 名称 管脚功能 说明 1 TRX_CE 数字输入 使能芯片发射或接收 2 PWR_UP 数字输入 芯片上电 3 uPCLK 时钟输出 由晶体震荡器分频的输出时钟 4 VDD 电源 电源+3V DC 5 VSS 电源 地0V 6 CD 数字输出 载波检测 7 AM 数字输出 地址匹配 8 DR 数字输出 接收或发射数据完成 9 VSS 电源 地0V 10 MISO SPI 接口SPI输出 11 MOSI SPI 接口SPI输入 12 SCK SPI 时钟SPI时钟 13 CSN SPI 使能SPI使能 14 XC1 模拟输入 晶体震荡器1脚/外部时钟输入脚 15 XC2 模拟输出 晶体震荡器2脚 16 VSS 电源 地0V 17 VDD 电源 电源+3V DC 18 VSS 电源 地0V 19 VDD_PA 电源输出 给nRF905功率放大器提供的+1.8V电源 20 ANT1 射频输出 天线接口1 21 ANT2 射频输出 天线接口2 22 VSS 电源 地0V 23 IREF 模拟输入 参考电流 24 VSS 电源 地0V 25 VDD 电源 电源+3V DC 26 VSS 电源 地0V 本 科 毕 业 设 计 第 34 页 共 50 页 管脚 名称 管脚功能 说明 27 VSS 电源 地0V 28 VSS 电源 地0V 29 VSS 电源 地0V 30 VSS 电源 地0V 31 DVDD_1 V2 电源 藕和的低压正数字电源输出 32 TX_EN 数字输入 TX_EN=1 TX模式TX_EN=0 RX模式 功能程序 1 接收模块单片机中的程序 接收程序: #include #include #define WC 0x00 #define RC 0x10 #define WTP 0x20 #define RTP 0x21 #define WTA 0x22 #define RTA 0x23 #define RRP 0x24 typedef struct RFConfig { unsigned char n; unsigned char buf[10]; }RFConfig; code RFConfig RxTxConf = { 本 科 毕 业 设 计 第 35 页 共 50 页 10, 0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58 }; unsigned char data TxBuf[32]; unsigned char data RxBuf[32]; unsigned char key; unsigned char temp1; unsigned char rsbrf; unsigned char delayf; unsigned char tf; unsigned char bdata DATA_BUF; sbit flag =DATA_BUF^7; sbit flag1 =DATA_BUF^0; sbit TX_EN =P1^0; sbit TRX_CE =P1^1; sbit PWR_UP =P1^2; sbit MISO =P1^7; sbit MOSI =P3^2; sbit SCK =P3^3; sbit CSN =P3^4; sbit AM =P1^5; sbit DR =P1^6; sbit CD =P1^4; void InitIO(void); void Inituart(void); void Config905(void); void SetTxMode(void); void SetRxMode(void); void TxPacket(void); 本 科 毕 业 设 计 第 36 页 共 50 页 void RxPacket(void); void SpiWrite(unsigned char ); unsigned char SpiRead(void); void Delay(unsigned char n); void Scankey(void); void TxData (unsigned char x); void comdebug(void); void TxData (unsigned char x) { SBUF=x; while(TI==0); TI=0; } void Delay(unsigned char n) { unsigned int i; while(n--) for(i=0;i<80;i++); } void serial () interrupt 4 { unsigned char temp; if(RI) { temp=SBUF; rsbrf=temp; RI=0; } } 本 科 毕 业 设 计 第 37 页 共 50 页 void main() { unsigned int cyc=0; unsigned int distan=0; SCON=0x50; //模式1 TMOD=0x21; //定时模式2 IE=0x90; //=====9600=======设置串口通讯寄存器 PCON=0x00; //波特率9600BPS,晶振11.0592MHZ TH1=0xFD; // TL1=0xFD; //计数器初值 CSN=1; SCK=0; DR=1; AM=1; PWR_UP=1; TRX_CE=0; TX_EN=0; TI = 0;//串行中断标志位清零 TR1 = 1;//打开计数器1 Config905(); P0=0x00; Delay(500); P0=0xff; SetRxMode(); while(1) { if (DR) RxPacket(); 本 科 毕 业 设 计 第 38 页 共 50 页 if(delayf==1) { Delay(500); delayf = 0 ; P0 = 0xff ; } } } void Config905(void) { unsigned char i; CSN=0; SpiWrite(WC); for (i=0;i #include #define WC 0x00 #define RC 0x10 #define WTP 0x20 #define RTP 0x21 #define WTA 0x22 #define RTA 0x23 #define RRP 0x24 本 科 毕 业 设 计 第 41 页 共 50 页 typedef struct RFConfig { unsigned char n; unsigned char buf[10]; }RFConfig; code RFConfig RxTxConf = { 10, 0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xcc, 0x58 }; unsigned char data TxBuf[32]; unsigned char data RxBuf[32]; unsigned char key; unsigned char temp1; unsigned char rsbrf; unsigned char delayf; unsigned char tf; unsigned char m2; //...定义暂时变量 unsigned char bdata DATA_BUF; sbit flag =DATA_BUF^7; sbit flag1 =DATA_BUF^0; sbit TX_EN =P1^0; sbit TRX_CE =P1^1; sbit PWR_UP =P1^2; sbit MISO =P1^7; sbit MOSI =P3^2; sbit SCK =P3^3; sbit CSN =P3^4; sbit AM =P1^5; 本 科 毕 业 设 计 第 42 页 共 50 页 sbit DR =P1^6; sbit CD =P1^4; void InitIO(void); void Inituart(void); void Config905(void); void SetTxMode(void); void SetRxMode(void); void TxPacket(void); void RxPacket(void); void SpiWrite(unsigned char ); unsigned char SpiRead(void); void Delay(unsigned char n); void Scankey(void); void TxData (unsigned char x); void comdebug(void); void TxData (unsigned char x) { SBUF=x; while(TI==0); TI=0; } void Delay(unsigned char n) { unsigned int i; while(n--) for(i=0;i<80;i++); } void serial () interrupt 4 { 本 科 毕 业 设 计 第 43 页 共 50 页 unsigned char temp; if(RI) { temp=SBUF; rsbrf=temp; RI=0; } } void main() { unsigned int cyc=0; unsigned int distan=0; //================NRF905初始化 CSN=1; SCK=0; DR=1; AM=1; PWR_UP=1; TRX_CE=0; TX_EN=0; Config905(); P0=0xff; SetRxMode(); while(1) { //=====================从键盘获得数据 loop: if(P0==0xff) { goto loop; } if(P0!=0xff) 本 科 毕 业 设 计 第 44 页 共 50 页 { m2=P0; Delay(100); //.......键盘去抖 if(P0!=0xff) { TxBuf[0]=0x4c; //...定义车床地址 TxBuf[1]=~m2; } else {goto loop; } } else { goto loop; } loop1: if (CD!=0) goto loop1; SetTxMode(); TxPacket(); TxBuf[1] = 0xff; SetRxMode(); tf=0; Delay(500); P0=0xff; loop2: if (P0==m2) goto loop2; } } void Config905(void) { unsigned char i; CSN=0; SpiWrite(WC); 本 科 毕 业 设 计 第 45 页 共 50 页 for (i=0;i>16) & 0x0000FFFFL。 typedef enum { Error_FirstNotifyMsg = 0x1234, //收到这个错误,必须调用DSStream_ManageNotifyMessage Error_DiskFull, //磁盘已满:wparam=0 Error_VideoSizeChange, //视频流尺寸改变:height=HIWORD(wparam), width=LOWORD(wparam) Error_StreamStatusChange, //视频流状态改变:wparam=0 Error_CaptureError, //录像异常:wparam=HRESULT: error value } DSStreamError; 常量: a)最多支持32片卡,卡的名字最长为80个字符。 #define MAX_DEVICE_NUM 32 #define MAX_DEVICE_NAME_LEN 80 b)视频的显示状态 #define RUN 0 #define PAUSE 1 #define STOP 2 c)设备管脚的代号 #define CAPTURE 1 //录像脚 #define PREVIEW 2 //显示脚
/
本文档为【无线视频监控系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索