




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 引言1.1 远程监控系统现状在人类社会即将进入信息化社会的今天,计算机网络的开展极大地改变着人们的生活方式,而人们生活方式的改变又反过来对计算机网络的效劳能力提出更高的要求。从传输介质来看,远程监控系统已经走过了原始的模拟数据量传输,进入了全数字传输的时代。随着基于不同传输媒介及其多种方案的出现和开展,如基于双绞线(xDSL,HomePNA)、基于数字电力线、基于无线(WLL)、基于同轴电缆(HFC、CableModem)和基于光纤(OAN)的系统,接入网宽带化得到了空前的开展。从视频采集方式来看,目前最主流的视频采集芯片就是DSP了,由于DSP芯片的众多优点,使其在视频采集和处理领域里得
2、到了广泛的应用,国内著名的视频监控设备供给商海康威视和大华所使用的主要芯片就是DSP。从视频编码方式来看,图像压缩编码方法繁多,开展也相当迅速,经典编码方法如Huffman编码、算术编码、预测编码、变换域编码等。归纳起来主要有、,JPEG标准以及MPEG-1、MPEG-2、MPEG-4标准等。在视频编码中使用编码方式是最普遍之一。由于目前很多远程监控系统存在着本钱上比拟高,系统比拟复杂,维护比拟困难,性价比低,有的地方大材小用等缺点,基于这些考虑,我们准备开发一种本钱较低,系统简单,维护简单,性价比高的嵌入式单芯片视频监控方案。1.2 研究本课题的意义本课题研究的意义在于更加清晰地了解和系统地
3、学习视频监控设备的工作原理,并且提出一种更加低本钱,稳定,可靠,简易的视频监控的解决方案。在研究本课题的过程中,依靠学院提供的实验室,自己动手制作视频监控器的实物,自主设计电路,调试软件,最后组装在一起,实现了单芯片的简易视频解决方案,而且通过以太网进行数据传输,使得这样的监控设备安装非常的简便,只要有网线的地方就可以装这样的监控设备,为一些要求不高但是对本钱敏感的场合提供一种视频监控的解决方案。2 概述2.1 嵌入式远程监控系统概述2.1.1 嵌入式系统概念嵌入式系统是以应用为中心,以计算机技术为根底,并且软硬件可裁剪,适用于应用系统对功能、可靠性、本钱、体积、功耗有严格要求的专用计算机系统
4、。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个局部组成,用于实现对其他设备的控制、监视或管理等功能10。2.1.2 嵌入式技术的开展众所周知,世界上第一台电子计算机诞生于1946年,在相当长的历史进程中,计算机始终是供养在特殊的机房中,实现数值计算的大型昂贵设备。到20世纪70年代,微处理器的出现,计算机才出现了历史性的变化。以微处理器为核心的微型计算机以其小型、价廉、高可靠性特点,迅速走出机房。因此,嵌入式系统诞生于微型机时代,嵌入式系统的嵌入性本质是将一个计算机嵌入到一个对象体系中去。单片机开创了嵌入式系统独立开展道路,Intel公司的MCS-48、MCS-
5、51是其中最经典的单片形态的嵌入式系统。单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。SCM即单片微型计算机Single Chip Microcomputer阶段,主要是寻求最正确的单片形态嵌入式系统的最正确体系结构;MCU即 HYPERLINK :/shop.icbuy /product/list/4.html t _blank 微控制器Micro Controller Unit阶段,主要的技术开展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力;随着微电子技术、IC设计、EDA工具的开展,基于SoC的单片机应用系统设
6、计会有较大的开展。2.1.3 嵌入式系统的特点嵌入式系统是嵌入到对象系统中,必须满足对象系统的环境要求,如物理环境小型、电气/气氛环境可靠、本钱价廉等要求;其次是软、硬件的裁剪性;满足对象要求的最小软、硬件配置等;再者嵌入式系统必须是能满足对象系统控制要求的计算机系统而且必须配置有与对象系统相适应的接口电路。2.2 本设计方案思路本设计以实现信号的检测和数据处理、传输为主要目的;以视频数据采集,数据格式转换,以太网传输,上位机显示等为主要设计内容。基于对嵌入式视频监控系统的背景研究,本设计提出了一个简易可行的方案,以热释电红外 HYPERLINK :/shop.icbuy /product/l
7、ist/15.html t _blank 传感器来检测是否有人靠近,如果没有人靠近处于休眠状态可以节电;当有人靠近设定区域的时候,传感器输出信号,ARM处理器接收到信号立刻做出响应,触发内部的电路和程序,马上开启监控摄像头进行监控,然后数据经过以太网媒介传输到远端的PC端,PC端接到视频数据之后马上进行解析并且显示,同时可以将现场的问题和其他的数据同时传输过来,并且可以设置 HYPERLINK :/shop.icbuy /product/list/172.html t _blank 蜂鸣器进行报警。2.3 研发方向和技术关键1摄像头的数据采集2数据格式的编码以及缓冲技术3数据打包经过以太网发送
8、4完善的协议来保障不同数据识别5PC机的视频实时显示及图像存储2.4 主要技术指标1采集图像的分辨率不低于120*1202局域网内传输距离不少于100米3人体红外检测不小于3米4网络传输延时小于秒5PC机视频图像显示无明显抖动或者迟滞3 总体设计3.1 主控芯片选型3.1.1 基于以太网优势的ARMARM作为目前最通用的处理器,具有很多优点,特别是在架构上面,ARM采用RISC精简指令集,并且采用哈佛流水结构,在功耗,速度上面都有明显的优势,特别是在移动通信行业中,更是如此,据不完全统计,目前 的主芯片有98%是采用ARM的,可见ARM在处理器行业的位置。ARM有众多的合作伙伴,包括国际上最著
9、名的半导体行业的巨头,例如Intel,TI,三星,索尼,等等。因此ARM是一个专注于CPU设计的公司,依靠授权和出售其IP核,给世界一流的半导体公司来代工,生产和销售。ARM最经典之作是ARM7-TDMI内核,这个内核已经在目前很多的行业中使用非常广泛,以NXP的LPC2000系列为代表的ARM7内核非常的成熟和成功。ARM7之后的ARM9也在中高端的场合使用非常的广泛,其代表三星的S3C2440是一款非常优秀的ARM9芯片,一般认为在ARM9以后,ARM芯片根本都带有网络控制器。在ARM9和ARM11后的就是当下最热门的ARM-Cortex内核,该内核是ARM公司最新的内核,增加了众多的中断
10、控制器,内核效率更高,单位执行代码效率也更高,Cortex系列分为三个子系列有A系列,R系列,M系列。A系列主要面向应用类的,更加高端,主频也更快等优点;R系列主要面向于实时控制,主要有响应特别快等优点;而M系列主要面向微控制器,特点是低功耗,低本钱,适合低端控制场合。美国德州仪器(TI)Stellaris群星系列产品为汽车电子,运动控制,过程控制,以及医疗设备等要求低本钱的嵌入式微控制器领域带来了一系列具有32位运算能力的高性能芯片。而且这个系列的芯片有带网络控制器的芯片,满足我们的设计需求,我们基于该芯片设计出一个单芯片的以太网解决方案。3.1.2 基于视频采集优势的DSPDSP是目前通用
11、的视频处理器,主要的优势是在于DSP指令集非常适合大数据量的运算,因为本身DSP的诞生就是为数字计算而设计的,因此DSP在视频采集有得天独厚的优势,因此在专业的视频采集方案中几乎都选择了DSP作为主控芯片。在我们的这个课题中,首先我们的定位不是专业的视频采集,而只是一个采集方案的创新。我们没有必要选择昂贵,复杂的DSP作为主控,而是采用相对简单易学的ARM处理器。虽然ARM处理器运算上面不如DSP,但在我们这个课题中已经满足需求了,我们最终选择了ARM。3.2 视频采集方案设计3.2.1 方案一:CMOS摄像头CMOS摄像头在设计上的感光器是连接放大器,灵敏度低,本钱低,解析度低,信噪比高,功
12、耗低等特点,适合在低端的摄像头场合,由于CMOS在设计上面的简单,被广泛的应用于很多的场合。3.2.2 方案二:CCD摄像头CCD是一种单一感光器,灵敏度高,本钱高,解析度高,噪点低,功耗高等特点,与CMOS相比,CCD的优势较明显。因此在本工程中,我们所使用的是OV6620的CCD摄像头。3.2.3 模拟接口摄像头模拟接口的摄像头是指输出信号就是模拟信号,需要外部AD来采样,经过视频别离芯片,导致硬件设计,由于模拟摄像头在早期使用非常的广泛,并且模拟信号的传输更加方便,因此在工业设备使用广泛。3.2.4 数字接口摄像头数字接口的摄像头是指摄像头输出信号就是数字信号,方便单片机I/O口可以直接
13、来读取数据,并且舍去了AD和视频别离芯片,硬件设计相对简单,最后我们的课题选择了数字接口的CCD摄像头。3.3 数据通讯方案设计3.3.1 串口通讯RS-232串口,是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会EIA联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。串口在很长的一段时间内几乎成了单片机必备的通讯方式,由此可见串口的使用广泛程度。但是串口RS232信号不是差分信号,传输距离不够远,只有几米,而且串口是一种异步通讯方式,在这个过程中需要有波特率来标准双方的通信速率,而且这个速率一般是在115200Kbps,这个速度显然是比拟低的,而
14、且没有完善的协议支持,串口慢慢被其他的通讯方式所替代。由于串口的通讯速率较低不适合本课题。3.3.2 USB通讯USB通用串行总线,是目前电脑上应用较广泛的接口标准,由Intel、Microsoft、Compaq、IBM、NEC等几家大厂商发起的新型外设接口标准。USB接口是电脑主板上的一种四针接口,其中中间两个针传输数据,两边两个针给外设供电。USB接口速度快、连接简单、不需要外接电源,传输速度12Mbps,最新可达480Mbps;电缆最大长度5米,价格廉价;USB最多可串接127个设备;支持热插拔。USB具有以上这些特点,在个人电脑上广泛应用,虽然这个接口有很多的优点,但是由于通讯距离问题
15、不适合我们这个课题。3.3.3 CAN通讯CAN控制器局域网,是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其高性能、高可靠性、实时性等优点现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。这种通讯方式非常的适合于汽车电子和一些工业自动化控制,因为这种通讯方式也是差分通信,信号的稳定性非常好,抗干扰能力非常强,而且采用CAN协议使用报文和地址的概念,使得CAN使用非常广泛。由于CAN的协议相对复杂,也不适合我们这个课题。3.3.4 无线RF通讯无线RF通讯是指以无线调制为根底的一种通讯方式,就是在一个无线信道上构建一种非常特殊的数字载波,实
16、现高速的无线通讯手段,这样的结构可以让通讯变得很简易,不需要线就可以实现通讯,不过速度上还是无法与传统有线通讯相比,如果采用无线通讯实现图像无压缩实时传输,这个技术上面还是有点困难,因此经过比拟也不适合本课题。3.3.5 以太网通讯以太网(Ethernet)指的是由Xerox公司创立并由Xerox,Intel和DEC公司联合开发的基带局域网标准,是当今现有局域网最通用的协议标准。 以太网络使用CSMA/CD(载波监听多路访问及冲突检测技术)技术,并以10M/S的速率运行。以太网可以采用多种连接介质,包括同轴缆、双绞线和光纤等。以太网通信速度非常快,协议也很完善,最著名的TCP/IP协议就是最好
17、的例子。随着以太网的普及,越来越多的设备支持,据不完全统计,有机构预计到2021年,能够上网的设备将到达150亿个。我们本课题所选择的以太网通讯方式是基于对本钱,协议,还有通讯速率等综合考虑之后定下来的,这个对于我们后期维护和升级等都有明显的优势,因为这种通信方式使用非常的广泛。3.4 传感器方案设计3.4.1 人体红外检测人大概会发出8um20um的红外线,利用红外接收器来接收这种特殊的信号,通过运放进行高增益低噪声的多级放大,得到所需波形。继而利用施密特触发器得到数字方波,最后输入到主控芯片中,控制器根据这个传感器就可以检测有无人员活动。红外传感装置采用多路复合探测和可编程技术,提高传感器
18、精度。3.4.2 环境温度检测 HYPERLINK :/shop.icbuy /product/list/117.html t _blank 温度传感器采用常规的热敏电阻,这种测试方法具有简单的特点,只需要AD进行采样就能实现,而不需要复杂的电桥和非线性校正,将这个AD所采到的模拟量进行转换成单片机识别的数字,这样就可以获取当前的温度值了。3.5 上位机客户端设计3.5.1 使用MFC界面设计开发MFC是微软为用户提供的窗口界面的编程,这个对于一般的程序来说非常简便,因为其语言是采用最常用的C+语言,这是一个通用的语言平台,而且是面向对象的编程,并且对于底层的API支持非常好,结合WinSoc
19、ket编程,就可以实现一个很简易的网络应用程序。3.5.2 使用C#实现控件编程C#是最近几年流行起来的编程语言,具有丰富的控件支持,在编写大型应用程序的时候非常的有效,但是由于对C#熟悉程度还不如C+,因此MFC成为我们的首选方案。4 硬件设计4.1 主控电路设计主控电路采用TI公司的Stellaris系列的LM3S8962,由于我们考虑了是自己制板,因此我们的MCU做成了最小系统板,主控芯片的电路如下。图4-1 主控芯片4.2 摄像头电路设计本课题所采用的摄像头是数字接口的,因此接线很简单,八根数据线与摄像头的灰度图像输出信号,MCU直接通过GPIO口来读取数据。行中断和场中断的信号线需要
20、加电容和电阻滤波,否那么可能引起中断不稳定。图4-2 摄像头接口电路4.3 传感器电路设计4.3.1 热释电 HYPERLINK :/shop.icbuy /product/list/119.html t _blank 红外传感器热释电红外传感器是利用人体所发出来的红外线,通过特殊的材料感知红外线,就会产生相应的电平变化,再通过整流,滤波,放大,最后输出数字信号,菲涅尔镜是用来增强红外模块的接收灵敏度的,最后我们所使用的模块就是只要给其供电,当人靠近的时候就能产生高电平,MCU只要去检查这个电平就能感知是否有人在了。图4-3 热释电红外传感器模块4.3.2 热敏电阻传感器热敏电阻一般分为正温和
21、负温两种,根据其灵敏度不同,采用适宜的热敏电阻在适宜的场合使用,如果需要精度很高的话可以采用PT-100铂电阻,需要电桥电路配合信号处理,并且需要非线性校正,而我们的方案是的同工电阻分压通过AD来采集数据,进行简易的处理之后就可以通过上位机显示。图4-4 温度传感器电路4.4 其他模块电路设计4.4.1 时钟电路设计时钟电路采用外部的DS1302电路,由于ARM内部也集成了RTC,因此本系统中可以使用两套时钟,该时钟有外部钮扣 HYPERLINK :/shop.icbuy /product/list/189.html t _blank 电池供电,不会因为系统掉电而停止运行,时钟芯片与主芯片通过
22、串行通信进行配置和传输数据,使用很方便。图4-5 时钟模块 HYPERLINK :/shop.icbuy /product/list/49.html t _blank 存储器电路设计Flash存储器是目前使用很广泛的存储元件,这种存储器可以将大数据量存储在内部而掉电不丧失数据,本系统采用的是一颗2MByte的Flash存储器,这块Flash使用的时候非常的简单,通过SPI接口,只需要配置初始化后,就可以按页对其进行操作,每一页都有512Byte的容量,这个存储器主要是用来存储一些关键参数的,暂时不提供视频图像数据的存储,因为视频图像太大,直接通过以太网传到电脑上进行存储。图4-6 存储器模块电
23、路4.4.3 电源电路设计电源模块是一个系统的关键,因为只有一个好的稳定的电源才能保证系统的稳定,因此我们这里采用了多级滤波,并且采用了优质的LM7805和LM1117稳压芯片进行稳压,给系统提供稳定的5V和电源。图4-7 电源模块4.4.4 以太网接口电路以太网接口RJ45,这是一个非常关键的器件,因为从MCU出来的差分信号很容易受干扰,一定需要一个隔离变压器来实现隔离,而且在实际调试过程中,发现隔离变压器到MCU的引脚不能超过5cm,否那么会导致信号不稳定,表现的状态就是和电脑的联网不稳定,最后的解决方法就是PCB中注意布线就可以了。图4-8 以太网接口5 软件设计5.1 TCP/IP协议
24、下位机编程首先是本系统的软件工作流程图,采用一个定时器进行循环扫描,并且根据场中断的节拍进行图像的采集。处理好之后在一定的时间内通过以太网发送给上位机,上位机接到之后进行处理。图5-1 系统架构图TCP/IP传输协议:本系统采用的是标准的TCP/IP传输格式的协议,包含从MAC层数据到UDP数据的各个数据包格式都是遵循工业以太网的传输标准,而本课题中由自行编写的协议包的数据结构只采用了其中的一种传输标准,即UDP协议,在UDP数据包头部还有IP头,所以IP数据报也是根据标准协议的格式编写的。本系统采用的MAC地址和IP地址都是已经默认配置好的,用户无需关心如何实现,如果需要查看,可以在上位机P
25、C端的软件上查看到具体的MAC地址和IP地址,也可以通过数据包发回来的内容在PC端显示本机的IP地址以及本地MAC地址。传输开始时需要进行寻找设备,PC端会发出一个播送数据包,在这个网段里面任何计算机都能收到这个播送包,这个包的格式本身是UDP协议的,但是只有接到特定指令后ARM会才会作出回应,提示PC已经连接成功,并且返回IP地址和MAC地址。5.1.1 Ethernet底层驱动首先需要进行的是Ethernet的初始化。第一步,进行系统的时钟初始化,调用ARM底层的API函数实现。SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC
26、_MAIN|SYSCTL_XTAL_8MHZ);第二步,使能以太网时钟和以太网GPIO口,并且复位。SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH);SysCtlPeripheralReset(SYSCTL_PERIPH_ETH);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);第三步,配置GPIO口工作模式,与以太网相关的需要配置。GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_2|GPIO_PIN_3,GPIO_DIR_MODE_HW);GPIOPadConfigSet(GPIO_PO
27、RTF_BASE,GPIO_PIN_2|GPIO_PIN_3,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);第四步,Ethernet的PHY层初始化,进行配置。EthernetIntDisable(ETH_BASE,(ETH_INT_PHY|ETH_INT_MDIO| ETH_INT_RXER|ETH_INT_RXOF|ETH_INT_TX|ETH_INT_TXER| ETH_INT_RX);ulTemp = EthernetIntStatus(ETH_BASE, false);EthernetIntClear(ETH_BASE, ulTemp);Ethernet
28、InitExpClk(ETH_BASE, SysCtlClockGet();EthernetConfigSet(ETH_BASE,(ETH_CFG_TX_DPLXEN|ETH_CFG_TX_CRCEN| ETH_CFG_TX_PADEN);ulTemp = EthernetPHYRead(ETH_BASE, PHY_MR1);EthernetEnable(ETH_BASE);定义一个有效的结构体来保存TCP/IP数据头的有效信息。typedef structBYTE desmac6; /目的MAC地址BYTE srcmac6; /源MAC地址USHORT ethertype; /帧类型BYTE
29、 ip_head_len; /IP包头部长度,单位:4字节BYTE tos; /效劳类型TOSUSHORT ip_total_len; /IP包总长度USHORT iident; /标识USHORT flags; /标志位BYTE ttl; /生存时间BYTE proto; /协议USHORT ip_chksum; /IP首部校验和BYTE source_IP4; /源IP地址(32位)BYTE dest_IP4; /目的IP地址(32位)USHORT srcport; / 源端口USHORT dstport; / 目的端口USHORT udp_total_len; / UDP数据长度(单位:
30、字节)USHORT chksum; / 校验和 Eth_Header;5.1.2 UDP数据收发1校验和算法UDP协议是以太网协议中常用的协议,由于不需要进行像TCP那样的三次握手,UDP的效率很高,总线利用也很高,但是UDP是一种不可靠的传输协议,只能尽力传输,不能保证数据可靠性。那么UDP是否没有使用价值了?不是的,由于UDP的效率高,在一些数据丧失场合要求不是很严格的时候,就可以使用UDP,比方说在视频传输和流媒体传输的时候,由于丧失几包数据不会影响到下一个图像的传输,因为图像显示很快,丢了一帧之后会马上被下一帧数据所覆盖,那么表现出来的就没有太多的影响,因此UDP在视频传输过程中使用非
31、常广泛。为了进一步提高UDP的传输可靠性,在TCP/IP协议栈里规定了一个UDP的数据校验算法,这个校验算法称为校验和。这种16位校验和计算的根本原理是:采用的都是将数据流视为16位整数流进行重复叠加计算。为了计算检验和,首先把检验和字段置为0,然后,对有效数据范围内中每个16位进行二进制反码求和,结果存在检验和字段中,如果数据长度为奇数那么补一字节0。当收到数据后,同样对有效数据范围中每个16位数进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何过失,那么接收方计算的结果应该为全0或全1(具体看实现了,本质一样) 。如果结果不是
32、全0或全1,那么表示数据错误。2主机IP地址动态获取由于在网络中的所有设备都会对应的唯一的MAC地址和一个可以在不同网段重复的IP地址,但是由于IP地址的资源有限,在TCP/IP协议中有子网掩码的概念,而在我们这个系统中,由于底层的网络协议非常的精简,我们的ARP地址解析协议由自己实现,也就是说PC需要访问我们的数据的时候,需要首先进行动态获取主机的IP地址,否那么将无法建立网络通信。具体的实施方法是首先PC端会发送一个的播送地址,这个播送地址是采用间接寻址,实际上ARP也是这么做的,只不过ARP里面还有一个路由表,而我们这里暂时没有路由表的概念,因为我们现在做的是局域网里的通讯,现在的问题就
33、是当PC发出一个地址之后,ARM做出如何的反响,因为ARM的网络控制器出于混杂模式下的接收,也就是说这个过程不需要管,ARM肯定会接到这个来至于的包,那么ARM会做出第一反响就是判断这个包是否是自己的,如果是的话那就接收下来。PC在这个包的发送过程中采用的也是自整定的协议,也就是内部协议,协议告诉ARM说这个一个握手的包,需要进行获取主机的IP地址以及MAC地址,因此ARM会马上把这个包里面包含到的对方IP地址,MAC地址都存下来,然后马上发送一个自己的数据包,这个数据的对方IP地址和MAC地址从刚刚的包里截获下来的,同时ARM也会把自己的本地的IP和MAC地址也打包发出去,发到刚刚的那个IP
34、地址,当PC接到这个数据包的时候,以及发现这个数据包是自己的,因为包含了目标IP和MAC地址,那么在WinSocket编程里面就得到这么一个数据包,进行解析之后将数据包里面所包含的IP和MAC信息在MFC窗口显示出来。3中断接收以太网数据中断接收以太网数据是指将ARM处于中断效劳的状态下,在任何时刻下,ARM的以太网中断的优先级都要高于其他优先级,因为作为要接收重要的指令,如果在接受的过程被其他指令所打断,或者还在处理其他中断的时候有重要指令过来都会出问题,因此需要ARM的Ethernet中断处于最高的优先级效劳状态。并且不能被其他的函数所屏蔽,才能保证以太网的数据稳定接收。当以太网数据接收到
35、之后,需要在最短的时间做出响应,并且处理完成,如果处理不完的就先保存在缓冲内,等出了中断效劳函数有时间的时候继续处理,这样的中断机制可以保证系统最快的响应和最稳定的应答能力。5.1.3 应用层握手协议由于握手协议比拟复杂,本身可以有TCP协议很完善,但是由于本系统的限制,我们采用UDP在应用层进行握手,当设备处于空闲状态的时候,主机可以通过“Link命令进行连接请求,当设备接到“Link命令的时候,会返回一个“#0符号,并且后面参加四个地址信息,即设备IP地址,设备MAC地址,主机IP地址,主机MAC地址,这样会给整个协议族带来很可靠的传输,因为已经有握手协议的存在。当握手成功后,才进行控制按
36、键,否那么就无法进行处理,并且提示用户首先要连接设备。5.1.4 数据与命令解析协议数据与命令解析协议又称控制字符传输协议:首先由两个控制符组成的命令,PC向ARM传输的指令格式第一个字符为“#,然后跟上具体的命令号,命令号为0255,“0号命令为系统保存,作为开启设备和关闭设备,优先级最高。整个PC的控制命令下字符长度不超过128字节。ARM向PC发送的命令第一个字符为“%说明是视频数据,这个符号很特殊,因为视频的数据量很大,作为特殊考虑,也是后面跟上数据的格式也是视频的数据格式,视频数据位1440,具体说明在下面介绍。ARM向PC发送的第一个字符为“说明是其他的命令或者数据,因为其他的都是
37、低速设备,因此使用同一个指令,比方返回MAC地址和IP地址,比方AD采样,比方热释电红外传感器数据,或者 HYPERLINK :/shop.icbuy /product/list/151.html t _blank 其他开关量数据。5.2 摄像头视频采集编程5.2.1 中断函数中使用汇编代码采集由于视频数据量太大,如果采用API进行操作的话可能效率不是很高,那么最直接的解决方法就是在底层采集的时候使用汇编进行编写,在ARM的底层汇编操作最通用的有C语言内嵌汇编,还有一种就是指针的地址操作,下面是以地址操作写的摄像头图像代码。DataBuf0HRefFlag=(*(volatile unsign
38、ed long *)0 x400043FC);这条语句就是用来将摄像头数据读入到单片机的内存中的,DataBuf 是一个二维数据用来保存图像数据的。0 x400043FC这个地址是指向PORTA口的数据,由PORTA的基地址加上偏移地址得到。5.2.2 视频帧数据缓存由下面两个变量来处理视频帧数据,全局变量DataBuf作为数据缓存,首先就会把每一个点对应到这个内存地址中,然后进行处理,而HRefFlag那么表示一行的结束,将数据传入下一行的地址变量中。5.2.3 数据按照太网格式打包这里的打包格式也是定义好的,以一种很简单的方式进行打包,就是在每一个数据包头参加该数据包的序号,然后再进行校验
39、和并且发送就可以了。for(k=0;k40;k+)video_buf1=k;for(m=0;m200;m+)for(n=0;n6;n+)video_bufn*200+m+2=DataBufmn+k*6;UDPCheckSum();EthernetPacketPut(ETH_BASE, send_buf, send_buf_len);5.3 传感器采样编程5.3.1 热释电红外传感器数字信号输入红外热释电的信号是一种数字信号,这个信号只要被ARM所接收之后,直接进行判断是否有人,结果保存在一个标准位里面,这个过程就完成了,而热释电红外传感器本身是一个模块化的操作,因此不需要更多其他的操作。5.3
40、.2 热敏电阻AD采样编程AD传输采用两种协议,一种是线性传输,另一种是非线性传输,即一种是直接传输当前的AD值,一次传输即占用一个以太网数据包,两个控制符加一个字节的数据就占用了一个以太网包的1500字节的负载,因此这种效率是很低的,所以只有通过另一种方式来传输,就是用定时器来采样,并且在一定的时刻来实现多个数据一包传输,为了方便使用,这个数据包长度规定为300个字节,即与PC端显示界面的一个数据长度相当,因此这样的传输效率会大大提高。当有更好的协议来支持的时候,我们可以用更加方便的协议来支持。5.4 TCP/IP上位机编程5.4.1 通用控件编程这里所讲的控件是一般的按钮和根本的输入输出编
41、辑框,还有一些静态文本,包括组框等,这些都是最根本的编程,作为MFC的根本编程。这些编程需要注意的就是内部的消息响应函数需要自行添加,否那么就不会产生相应的响应。5.4.2 WinSocket编程WinSocket是微软开发的Socket程序,这个网络接口程序非常方便,只需要调用初始化函数,然后就可以进行以太网的IP地址的配置,以及数据包的发送和接受,这个过程很简单,如以下代码所示。BOOL CChatDlg:InitSocket()m_socket=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,0);if(INVALID_SOCKET=m_socket)Mess
42、ageBox(创立套接字失败!);return FALSE;SOCKADDR_IN addrSock;addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSock.sin_family=AF_INET;addrSock.sin_port=htons(60000);if(SOCKET_ERROR=bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR)MessageBox(绑定失败!);return FALSE;if(SOCKET_ERROR=WSAAsyncSelect(m_socket,m_hW
43、nd,UM_SOCK,FD_READ)MessageBox(注册网络读取事件失败!);return FALSE;return TRUE;5.4.3 视频显示编程视频编程有两种方式,一种是是利用控件进行编程,还有一种就是普通的描点法进行编程。本系统中采用描点的方法实现。下面是编程实例。dc.SetPixel(230+ad_dis_flag,150-(unsignedchar)*(wsabuf.buf+2),RGB(255,0,255);本系统的图像传输协议:传输图像大小为120*120,固定大小。传输的格式为灰度图像,8位一个点。传输帧数为一秒10帧。每一帧采集时间为20ms,采集完一帧图像之后
44、就会连续跳过4帧图像,即还有80ms的时间用来传输和其他的处理,我们实际传输和校验的时间一般在20ms左右,还有60ms时间是空闲的,即1秒种内有600ms是空闲的,因此这样的CPU使用率为40%。基于以太网数据包的格式要求,为了标准传输,现在规定一包数据包含12行,每行数据都带有两个标志位数据,两个控制符的含义在下面文档中说明。一行的数据位120byte,12行就是1440byte,包含一个行控制符和行标识符,即1442个有效字节,再加上TCP/IP数据包控制字符42个字节,一共为1484个字节。一帧图像共分成10包传输,每次传输前重新进行校验字符的计算。采用UDP传输,无重传机制,假设丢包
45、不做处理,因为是图像数据,即便是丢包后,由于图像是连续的,后面的数据会直接覆盖掉前面的数据。上位机采用实时显示,首先将接收到的数据进行验证,然后直接在对应的响应行上面实现描点。5.4.4 UDP在应用层握手编程本函数实现了在UDP层的握手协议。主机首先通过播送地址发送一个“#0link命令,这个命令就会去访问ARM,并且ARM做出响应,实现握手,否那么整个通信无法建立。void CChatDlg:OnBtnLink()/ TODO: Add your control notification handler code here/创立效劳器套接字SOCKET Svr = socket(AF_IN
46、ET,SOCK_DGRAM,0);/创立地址SOCKADDR_IN addrSvr;addrSvr.sin_family = AF_INET;addrSvr.sin_port = htons(10000);addrSvr.sin_addr.S_un.S_addr = inet_addr(192.168.14.255);char sendBuf128;int len = sizeof(sockaddr);sendBuf0=#;sendBuf1=0;sendBuf2=l;sendBuf3=i;sendBuf4=n;sendBuf5=k;sendto(Svr,sendBuf,strlen(sendB
47、uf)+1,0,(sockaddr*)&addrSvr,len);6 问题与解决6.1 视频采集数据量大,系统负载很重这个问题是由于本身视频采集的特点造成的,不管是上位机和下位机负载都很重,在台式机赛扬420处理器主频,1G内存,WinXP操作系统中CPU使用率到达35%左右。在下位机系统采用ARM-Cortex-M3内核,Thumb-2指令集,Keil-3编译器,50MHz主频,64K内存,如果再加上uC-OS,估计CPU使用率也会到达50%左右。因此这个问题的关键就是在与视频数据的高效压缩,在保证了图像数据的稳定不迟滞的前提下,进一步降低单位时间内的图像采集数,在底层采集的时候,在行中断采
48、集中,本系统使用了汇编编程,即在C语言中嵌入汇编进行编写,这样可以提高效率,也就是在保证系统稳定的前提提高像素点。6.2 视频采集图像不稳定,图像显示抖动在调试初期的时候发现一个很奇怪的问题,就是视频图像很不稳定,刚开始以为是摄像头问题,一直在查找原因,包括在下位机Keil中软件单步调试以及上位机的MFC的单步调试来验证以太网的传输正确性,排除了由于网络传输延时或者网络丢包而带来的不稳定,还是没有找到答案。有一次调试时,终于发现了问题的关键,查看PC系统的以太网包的接收与发送的时候,发现接收的以太网包与我实际发送的不一致,一般认为这肯定是丢包造成的,但是实际却不是少了数据包,而是多了很多的数据
49、包,而且这个多出来的数据没有规律,有时多一点,有时多很多,这个结果让我仔细去查看下位机软件。排除了编程的Bug之后,继续查找原因,最后在硬件上面发现问题了,很奇怪的现象就是场中断的引脚电平很不稳定,有时会出现莫名其妙的电平,这个引起我的注意。将GPIO口设置为弱上拉或者弱下拉都不管用,问题还是存在,换了几个摄像头还是一样,最后将目光集中在了PCB布线上面,最后发现是由于摄像头的场中断线受到板子上的信号干扰,结果就导致摄像头在每一帧图像采集的时候,实际上CPU采集到的图像不只一帧,可能是帧,而且这个是干扰信号,很随机的,结果就导致在PC端复原图像的时候,发现图像可能有叠影,这就是会抖动的原因了。
50、6.3 传感器灵敏度不高,常温曲线变化不明显由于热敏传感器的灵敏度在一定的动态范围里变化不是很明显,导致ARM采集到的AD数值变化也不是很明显,结果导致人体温度接触变化不是很明显,解决方法有两种,一是换传感器,可以提高一定范围内的动态响应灵敏度,还有一种就是通过软件来补偿,也就是说可以在软件中参加一个系数,在温度变化乘以一个系数,这样可以提高变化的灵敏度,表现在图像上就是抬升比拟明显,同样也会引入一些不稳定,需要参加过采样技术和平均滤波可以解决。6.4 图像数据与命令控制如何区分图像数据和命令控制在最初设计本系统的时候就考虑到了,由于图像的数据量很大,也就是在整个网络通信过程中,99%都是图像的数据,命令控制很少,那如何区分呢?最简单的方法就是参加一个有效的控制协议,这个协议主要就是在一个以太网的包里面参加不同的控制字符,也就是说图像数据前面都带有一个特定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年吉林省建筑安全员C证考试(专职安全员)题库及答案
- 2025-2030年中国衣物柔顺剂行业发展状况及营销战略研究报告
- 2025-2030年中国荠蓝油市场发展现状规划研究报告
- 2025-2030年中国硅酸锆行业前景趋势及发展规划分析报告
- 2025-2030年中国矿物棉市场营运状况及发展策略研究报告
- 2025波兰数学奥林匹克(第二轮)试题
- 2025辽宁省建筑安全员B证考试题库
- 合肥幼儿师范高等专科学校《汉字文化与创新设计》2023-2024学年第二学期期末试卷
- 河北美术学院《中小学教学名师论坛》2023-2024学年第二学期期末试卷
- 湖南电气职业技术学院《现代办公技能训练A》2023-2024学年第二学期期末试卷
- 2025年慢性阻塞性肺疾病全球创议GOLD指南修订解读课件
- 北京市西城区2022-2023学年高三上学期1月期末考试历史试题 附答案
- 第三单元名著导读《骆驼祥子》整本书阅读教学设计+2023-2024学年统编版语文七年级下册
- 2024关于进一步提升基层应急管理能力的意见学习解读课件
- 2024年2个娃儿的离婚协议书模板
- DB11T 527-2021 配电室安全管理规范
- 智能建造施工技术 课件 项目1 智能建造施工概论
- 单词连连看答题闯关游戏课堂互动课件1
- 物理学家伽利略课件
- 《WPS办公应用职业技能等级》课件-1. WPS初级-文字
- 2024小学数学义务教育新课程标准(2022版)必考题库附含答案
评论
0/150
提交评论