基于ARM的远程无线视频监控系统设计

发布者:石头12345最新更新时间:2020-10-30 来源: elecfans关键字:ARM  远程无线  视频监控系统 手机看文章 扫描二维码
随时随地手机看文章

  随着计算机、网络、通信技术的发展,以及多媒体视频技术的不断完善,基于网络的第三代远程网络视频监控系统取得了长足的发展。新一代的监控系统以网络为依托,以数字视频的压缩、传输、存储和播放为核心。系统采用嵌入式多任务操作系统、高效的视频压缩芯片和功能强大的嵌入式处理器,将视频压缩和传输处理工作全部内置到芯片上,前端摄像机送来的视频信号数字化后经过压缩、打包等过程变成基本网络协议的视频流,通过网络的传输,视频流发送到接收端。视频接收端可利用软件进行解码,在PC上进行显示和处理。


  系统硬件平台

  本系统是以PXA270为微处理器的ARM开发平台组成。PXA270是一个32位处理器,可在312MHz、416MHz、520MHz和624MHz这4种不同的时钟频率下运行。用在高性能、低功耗、便携、手持式的设备中。它加入了Intel Xscale技术,具有调节动态电压和频率以及完善的电源管理功能,提供了工业界领先的MIPS/mw性能。外接网卡接口与处理器直接连接,实现以太网通信,可利用TFTP协议对内核和根文件系统的映像进行快速下载。有3个UART分别是标准、蓝牙和全功能的UART,可以通过全功能UART与GPRS DTU相连接进行信号传输。3个USB接口,可以与USB摄像头相连接进行图像采集。USB摄像头采用的是以OV511为芯片的网眼V2000摄像头。


  GPRS DTU是一款基于GPRS 网络的无线数据传输终端设备,提供全透明数据通道,网络覆盖范围广能使用移动电话的地方就可以使用支持数据透明传输与协议转换,支持备用数据中心,点对点互连功能,支持永远在线、空闲下线和空闲掉电3种工作方式,具有短信和电话唤醒功能,支持断线自动重连功能。


  系统总体设计

  整个监控系统主要是由ARM、GPRS DTU、USB摄像头和PC组成。ARM开发板以Linux操作系统编写驱动,通过指令调度利用USB摄像头进行图像采集,将采集好的图像通过GPRS DTU进行无线传输,PC与因特网相连接,接收到GPRS DTU传输过来的图像,通过VC++编写上位机,可以看到监控点传输的图像。操作人员可以通过短信或电话对监控端进行控制,可以使监控端随时处于工作或关闭状态,这样一来不仅可以随意对监控端进行控制还可以节省流量,经济实惠,特别适用于一些对动态图像要求不高的环境,系统结构框图如图1所示。

  

  图1 系统结构框图


  系统软件设计

  本系统采用Linux为操作系统,它是一个多用户、多任务操作系统;具有良好的开放性,遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。具有完善的内置网络。Linux在通信和网络功能方面均优于其他操作系统。为用户提供了强大完善的网络功能。根据程序开发的需要对Linux操作系统进行裁减与编译,将制作好的Linux操作系统通过JTAG下载到ARM开发板里,就可以使用arm-linux对ARM开发板进行控制。


  图像的采集是通过ARM-Linux调度Video4Linux和影像设备驱动程序来进行视频捕获。Video4Linux是Linux影像系统与嵌人式影像的基础,是Linux 内核里支持影像设备的一组API,Linux在多媒体上的应用是目前非常热门的研究领域,其中最关键的技术则是Linux的Video4Linux。在Linux内核中对Video4Linux进行配置,如图2所示。配置好以后通过bootloader下载到ARM-Linux里。USB摄像头使用的是OV511芯片的网眼V2000摄像头。在Linux操作系统里配置好OV511芯片的驱动,如图3所示。

  

  图2 配置Video for Linux

  

  图3 配置USB OV511摄像头
 

  通过bootloader下载到ARM-Linux里,这样就可以通过USB摄像头进行图像采集,图像采集流程如图4所示。


  采集到的图像为BMP格式,图像太大不利于网络传输,需要进行JPEG压缩,JPEG压缩技术十分先进,它用有损压缩方式去除冗余的图像数据,在获得较高的压缩率的同时能展现十分丰富生动的图像,非常适合于视频网络传输。基本的JPEG算法由以下步骤完成:(1)通过离散余弦变换(DCT)消除数据冗余;(2)使用量化系数矩阵对离散余弦变化系数进行量化;(3)对量化后的系数进行编码,使其熵最小,熵编码通常采用huffman可变字长编码。产生有损图像压缩的原因主要发生在第2步。JPEG标准是在变换编码的基础上,综合应用了DCT和哈夫曼编码2种手段,达到了很好的图像压缩效果。基于离散余弦变换DCT的编码方法,是JPEG算法的核心内容[5]。在图像采集的时候需要用到JPEG库,所以需要先安装JPEG库。

  

  图4 图像采集流程图

  在/usr/local/man/manl目录下会生成cjpeg.l、djpeg.l、jpegtran.l、rdjpgcom.l、wrjpgcom.l、snapscreenshop.l六个文件,在/usr/local/arm/3.4.3/arm-linux/lib目录下会生成libjpeg.a、libjpeg.la、libjpeg.so、 libjpeg.so.62、libjpeg.so.0.0五个函数库,libjpeg.so.62、libjpeg.so.0.0就是我们需要的库,将它拷贝到arm-linux里,这样ARM就支持JPEG压缩格式的图像。图像压缩的一些重要函数如下:

  char *filename = “first.jpeg”;//指定压缩后的图像所存放的目标文件

  struct jpeg_compress_struct cinfo;//申请并初始化JPEG压缩对象

  struct jpeg_error_mgr jerr; // 声明错误处理器

  JSAMPROW row_pointer[1]; // 一行位图

  int row_stride; // 每一行的字节数

  int line; //每一列的字节数

  jpeg_create_compress(&cinfo);

  cinfo.image_width = width; // 图像的宽、高和深度

  cinfo.image_height = height;

  cinfo.input_components = depth;

  cinfo.in_color_space=JCS_RGB;// 彩色图像

  jpeg_set_quality(&cinfo, JPEG_QUALITY, TRUE ); // 设定压缩质量

  cinfo.dct_method=JDCT_FASTEST; // DCT离散余弦变换

  jpeg_start_compress(&cinfo, TRUE); //开始进行JPEG图像压缩

  while (cinfo.next_scanline 《 cinfo.image_height)//对每一行进行压缩

  jpeg_destroy_compress(&cinfo); //释放压缩工作过程中所申请的资源

  采集到的图像如图5所示。如果要进行连续帧的采集由grab_fd.frams来确定需要采集的帧数,最多支持一次采集32帧。

  

  图5 采集的图像

  GPRS DTU通过全功能串口与ARM开发板相连接,在arm-linux的指令调度下将ARM采集到的图像通过串口通信传输到GPRS DTU。arm-linux是通过设备文件访问串口的,在访问具体的串行端口时,只需打开相应的设备文件即可。串行端口Port1和Port2对应的设备文件分别为/dev/ttyS0和/dev/ttyS1。若要使用串口进行通信必须在通信两端设置好串口的属性,包括数据传输的波特率、传输的数据格式、是否有奇偶校验位、流控方式等。在Linux下进行串口设置,涉及一个重要的数据结构struct termios,设置串口波特率struct termios Opt,设置串口数据位

  struct termios Opt;

  Opt.c_cflag &= ~CSIZE; //屏蔽字符大小位

  Opt.c_cflag |= ~CS8; //选择8位数据位

  设置串口校验位与此相关的宏定义有:

  #define PARENB 0000400 //PARENB控制是否使能奇偶校验

  #define PARODD 0001000 //PARODD控制使用奇校验还是偶校验

  设置串口停止位与停止位相关的宏定义只有CSTOPB,设置termios结构的.c_cflag成员即可。

  #define CSTOPB 0000100

  Opt.c_cflag &= ~CSTOPB; //1位停止位

  Opt.c_cflag |= ~CSTOPB; //2位停止位

  设置串口波特率:

  串口使用open函数执行打开操作,open( )函数带有两个参数,其中参数1为要打开的设备文件名,参数2为打开方式。它们的含义如下。

  O_RDWR:既可读也可写。

  O_NOCTTY:告诉嵌入式Linux,该程序不想成为此端口的“控制终端”。如果应用程序不强调这一点,那么任何输入都会影响程序的执行。


  O_NDELAY:表示该程序不关注DCD信号线所处的状态,即不管对端设备是在运行或是挂起。如果不设置该标志,则程序会被设置为睡眠状态,直到DCD信号为低为止。


  使用close(fd)系统调用关闭串口。关闭一个串口通常会将DTR信号设置为低电平,如果外接GPRS DTU,就会将GPRS DTU挂起。使用write( )函数向串口写入数据,write调用若正确,返回发送的字节数,否则返回-1。从串口读取数据如果在原始数据的模式下对端口进行操作,read( )函数调用将返回串行口输入缓冲区所有的数据。如果没有数据,那么该进程将被阻塞,处于等待状态,直到数据到来,或者到了规定时间和出现错误为止。通过如下方法,能使read( )函数调用立即返回。


  系统的实现

  本系统监控中心服务器采用PC实现,使用Windows操作系统,使用VC++编写上位机程序,利用TCP/IP通信,输入监控端的IP地址后,上位机可以与监控端通信,接收到传输过来的图像,如图6所示。该系统大概3~5秒传输一幅图像。

  

  图6接收到的图像


  本监控系统支持短信和电话唤醒功能,也就是说通过短信和电话拨号就可以对监控系统进行远程控制,使其进入工作状态,进行信息传输。具有连接时机可控功能,支持永远在线、空闲下线和空闲掉电3种工作方式。在不进行数据传输时,监控系统可以进入下线状态,大大节约了通信费用,而在需要重新开始数据传输时,可以用手机给监控系统发送短信或打电话将其唤醒,恢复与数据中心的连接,也可以随时随地发短信对监控系统进行配置,方便管理。

关键字:ARM  远程无线  视频监控系统 引用地址:基于ARM的远程无线视频监控系统设计

上一篇:基于ARM室内温度控制系统的设计与实现
下一篇:ARM在嵌入式系统中的应用

推荐阅读最新更新时间:2024-11-07 01:48

ARM单片机开发经验点滴
简介:一些简单的ARM开发中的例程 计算r1和r2的绝对值 对应的C伪指令为: if ( r1 r2 ) r0 = r1+r2; else r0 = r1-r2; 对应的ARM汇编为: cmp r1, r2 subgt r0, r1, r2 sublt r0, r2, r1 以上条件判断只适合简单的分支结构,复杂的分之结构如何实现呢???比如如下控制逻辑: if ( r1 r2 ) { r0 = r1 - r2; if ( r0 r3 ) r0 = 1; else r0 = 0; } else { r0 = r2 - r1; if ( r0 r3 ) r0 = 1; else r0 = 0; } 如果还按照
[单片机]
基于ARM920T的嵌入式Linux系统的构建
前言 目前,嵌入式操作系统的种类很多,如VxWorks,Windows CE和Linux等。在这些操作系统中,Linux是发展最快,应用最广泛的。由于使用费用、开放源代码程度和使用习惯等各方面因素,Linux是得到较多推广的操作系统之一。由于Linux支持从x86到嵌入式处理器的多种处理器,使得Linux桌面PC上开发的很多资源可以轻松的移植到各种嵌入式平台上,这种便利使得在嵌入式系统中使用Linux操作系统具有很大吸引力。 开发环境 硬件环境 本系统中使用目标平台S3C2410(SAM SUNG公司使用ARM920T处理器内核开发的一款嵌入式处理器)。ARM920T核由ARM9TDMI,存储管理单元(MM
[单片机]
基于<font color='red'>ARM</font>920T的嵌入式Linux系统的构建
基于ARM7的单片机实现32位系统
随着全球化工业生产的发展与深入,终端产品功能的多样化,8位或8051的工程师在设计工业控制器和模块时,越来越需要复杂的以RISC(精简指令系统)为基础的微处理器。由于有机能源的短缺和全球气候变暖,对电子设备能耗的要求越来越高。意法半导体的STR7系列单片机内置闪存存储器,寄存器以一种很简单的方式排列。STR7可以很方便地连接各种外部设备。ST提供丰富的应用笔记和例行程序,有效地降低了应用和学习的入门门槛。目前意法半导体提供三种评估板,STR710、STR720和STR730。 图1. 评估板 有效地用好用熟一款单片机,最大限度地发挥硬件的效能是每一个工程师的目标;首次接触ARM的系统,要想达到上述目标,对于一个用惯8位或1
[单片机]
基于<font color='red'>ARM</font>7的单片机实现32位系统
ARM学习笔记002之gcc-4.3.2编译器不支持硬件除法运算的解决方
一般如果gcc不能使用除法,make后的错误是: 每一个错误处都使用了除法。 我的makefile代码如下: CC = arm-linux-gcc LD = arm-linux-ld AR = arm-linux-ar OBJCOPY = arm-linux-objcopy OBJDUMP = arm-linux-objdump INCLUDEDIR := $(shell pwd)/include CFLAGS := -Wall -O2 CPPFLAGS := -nostdinc -I$(INCLUDEDIR) export CC LD AR OBJCOPY OBJDUMP INCLUDEDIR
[单片机]
<font color='red'>ARM</font>学习笔记002之gcc-4.3.2编译器不支持硬件除法运算的解决方
苹果重新设计款ARM iMac,Face ID或将被推迟
有爆料称,苹果正在研发重新设计的iMac新品,这是自2012年以来iMac产品线最大规模的设计大调整。 不过,根据彭博社Mark Gurman的一份新报告,苹果Face ID面部识别认证系统很可能会出现在重新设计的第二次迭代中,而不是2021年第一版。 这个小插曲是在关于即将推出的M1 MacBook Air重新设计的报告末尾传出的。此外,报告还强调,苹果打算对其Mac产品线推出一系列更新,以满足Mac最坚定支持者的愿望,包括推出新的端口、插槽和网络蜂窝连接。 苹果还为 Mac 开发了对蜂窝连接(Mac 通过智能手机网络连接互联网的能力)和 Face ID(面部识别系统)的基础支持。但这两项功能似乎都不会很快到来。为此
[嵌入式]
μCOS-II在ARM Cortex-M3处理器上的移植
0 引言 嵌入式系统已经广泛渗透到了人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%,其中ARM的应用最为广泛。基于ARM内核的处理器以其诸多优异性能而成为各类产品中选用较多的处理器之一。 当系统越来越大,应用越来越多时,就出现了如何管理众多的硬件资源,以及如何满足系统的实时控制要求和如何提高系统软件开发效率等不可回避的问题。这时,使用嵌入式操作系统很有必要。操作系统的主要作用有:统一管理系统资源;为用户提供访问硬件的接口;调度多个应用程序和管理文件系统等。 1 概述 μC/OS-II是著名的、源码公开的实时内核,是专为嵌入式应用设计的,可用于各类8位、16位和32位处理器。μC/OS-II已经
[单片机]
μCOS-II在<font color='red'>ARM</font> Cortex-M3处理器上的移植
基于GPRS的油烟远程无线监控系统设计
摘 要:利用GPRS实现了油烟的远程无线监控。监控系统以AVR单片机为控制核心,通过采集油烟气体传感器TGs2100的信号,并由GPRS和Internet发送到监控中心服务端PC机,从而实现传感器信号的远程实时检测;监控中心发送的控制命令通过无线网络由单片机接收并根据信号控制外部设备,从而实现无线控制。与传统监控方式相比,该系统具有耗资小,使用便利等优点,具有广阔的应用前景。 关键词:GPRS;AVR单片机;油烟传感器;数据采集;远程无线监控;TCP/IP协议 油烟能够对人体及环境造成严重危害,对油烟加强监控治理已经成为人们关注的焦点。目前国内的油烟监控方式多为现场监控,具有远程信号传输功能的的监控系统很少,监控的效率也
[工业控制]
基于GPRS的油烟<font color='red'>远程</font><font color='red'>无线</font>监控系统设计
9.ARM寻址方式
1.立即数寻址 立即数寻址,是一种特殊的寻址方式,操作数本身就是在指令中给出。只有取出指令就取到了操作数。这个操作数就称为立即数,对应的寻址方式就是立即数寻址方式。例如: ADD R0,R1,#0X45;这汇编的意思:R1+0x45- R0 在以上两条指令中,第二个源操作数,是立即数,要求以 # 为前缀。 2.寄存器寻址 寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是一种执行效率较高的寻址方式。 该指令的执行效果是将寄存器R1和R2的内容相加,其结果存放在寄存器R0中 3.寄存器间接寻址 寄存器间接寻址就是寄存器中的存放的是操作数在内存中的地址。例如以下指令: 在第一条指令中,以寄存器R2的值作为操作数的地
[单片机]
9.<font color='red'>ARM</font>寻址方式
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved