基于ARM与4G网络的图像传输系统设计与实现

2018-03-29 03:36孙启昌杨卫社刘引涛
电子设计工程 2018年2期
关键词:端口号服务器端摄像头

孙启昌,杨卫社,刘引涛

(1.杨凌职业技术学院陕西杨凌712100;2.陕西工业职业技术学院,陕西咸阳712000)

图像传输经历了本地闭路电视图像传输、基于PC的多媒体图像传输、网络化图像传输3个阶段[1]。随着4G网络技术的广泛应用,TDD-LTE理想速率可到100 Mb/s,为远程实时传输图像提供可靠的保障,因此,文中提出了基于ARM与4G网络的图像传输系统[2-3]。该系统以ARM-i.MX6Q处理器为核心,利用USB摄像头采集图像,将采集的图像通过4G无线网络远程实时发送至Android手机客户端,所设计的系统不受距离、空间和时间等限制,可应用于监控场所、安防场所和教学实验等相关领域。

1 系统总体设计

文中所研究的图像传输系统集嵌入式技术、图像采集技术、4G无线网络通信技术和Android手机客户端开发于一体。该系统利用ARM技术、电子技术、USB摄像头、4G无线网络图像实时传输技术和计算机技术等方法,实现图像的采集、远程实时网络传输。使用摄像头采集图像数据,将采集到的图像经过压缩处理,通过4G网络发送到服务器端,服务器将接收的图像发送至Android手机客户端,使用Android手机客户端实时查看当前现场情况。系统结构框架如图1所示。

2 硬件平台搭建

系统的采集终端以飞思卡尔的4核i.MX6Q处理器电路板为核心,电路板外接电源模块、4G通信模块、7寸LCD液晶屏和USB摄像头,通过i.MX6Q处理器控制以上各个模块。

图1 系统整体框架图

1)主控处理器

系统以4核i.MX6Q处理器为核心,i.MX6Q是由美国飞思卡尔公司基于ARM Cortex-A9架构设计,4个频率最高支持1.2 GHz,拥有1MB的2级缓存,内存采用1 G的DDR3,支持Android 4.4、Linux 3.0.35和Ubuntu 12.04操作系统。

2)图像采集模块

图像采集模块采用极速A20USB摄像头进行图像采集,该摄像头搭配1 200万像素的CMOS传感器、USB2.0高速接口、支持JPEG压缩格式和UVC免驱协议。

3)数据传输模块

数据传输模块选用USR G401t的移动4G网卡,该网卡采用mini-PCIE接口,支持TD-LTE、TDSCDMA和GSM,LTE下行峰值速率为100Mbps、上行为 50 Mbps,支持 Linux、Android、window 7和 window xp系统,选用的4G网卡符合系统设计要求[4]。

3 软件设计

由于Linux操作系统具有良好的兼容性、移植性高、功能强大等特点,因此,该系统的采集终端选用嵌入式Linux操作系统[5]。嵌入式Linux开发环境的搭建,一般由宿主机和嵌入式目标机构成[6]。宿主机一般由PC电脑充当硬件部分,软件部分选择普通的Linux操作系统,并安装交叉编译环境,本系统宿主机选择Ubuntu 12.04系统。目标电路板选择Linux3.0.35内核版本,Linux3.0.35支持TCP/IP协议和4G拨号上网,根据系统设计需求,对目标电路板Linux内核进行配置、编译、制作根文件系统和Bootloader的编译,完成目标电路板Linux系统的搭建。系统的软件开发使用Qt应用软件,Qt应用软件支持Linux、Android、window系统[7]。在目标电路板Linux系统上,配置Qt开发环境,设计采集终端;在window7系统上,配置Qt开发环境,设计服务器端和Android手机客户端。

3.1 图像采集设计

图像采集主要分为8个部分,流程如下所示:

1)打开视频设备

首先,使用open函数打开视频设备文件,具体程序如下:

本系统采用非阻塞模式打开摄像头,无论摄像头是否捕获到图像,应用程序都会接收到驱动返回的值,因此,提高了图像的采集效率。

2)获取设备信息

当摄像头打开后。使用VIDIOC_QUERYCAP命令符查询摄像头属性,通过ioctl函数获取摄像头信息,结构体v4l2_capability中有包括驱动名称driver、card、bus_info、version以及属性 capabilities[8]。

3)检查当前设备支持的标准

检查当前摄像头支持的标准,使用VIDIOC_QUERYSTD命令符。摄像头的标准通常可以 分 成 PAL(Phase Alternation Line)和 NTSC(National Television System Committee)两种[9]。PAL采用逐行倒相正交平衡调幅的技术,克服了NTSC相位敏感造成色彩失真的缺点,我国目前采用PAL制式[10]。NTSC采用正交平衡调幅的技术,因此也称为正交平衡调幅制,其优点是成本低且解码线路简单。中国的台湾、日本、韩国、菲律宾、美国和加拿大等国家均采用NTSC制式。

4)设置捕获格式

本系统中,为了获取摄像头捕获图像格式,使用VIDIOC_S_FMT命令符[11]。目的是便于图像在信道中传输,使用结构体v4l2_format设置采集一幅图像的格式V4L2_PIX_FMT_YUYV,高度和宽度分别为320和240。

5)申请缓存区并记录缓存的物理空间

使用VIDIOC_REQBUFS命令符申请图像内存缓存,通过v4l2_requestbuffers结构体定义若干个数量的图像缓存[12]。

为了将相对内存地址转化为绝对物理地址,这里使用到一个关键的mmap()函数,也是整个程序中最为重要的一步。在嵌入式Linux操作系统中,内存空间主要分为两部分,分别是内核空间和用户空间[13]。在内核空间中,用户不能访问里面的数据,必须使用应用程序才能访问数据,但是,内存空间由操作系统和应用程序两部分共同进行管理。通过3种方式捕获图像,第一种方式为读/写,通过这种方式对设备中的数据进行读写,但是,它具有资源空间占用量大的缺点[14];第二种方式是用户指针,内存空间由应用程序自身分配,效率低下;第三种方式是内存映射方式,它可以对开发板的内存进行处理,具有很高的效率,本系统采用第三种方式采集图像。

6)开始采集图像

内存分配完毕后,使用VIDIOC_STREAMON命令符,开始采集图像[15]。

7)处理采集的图像

图像缓存采用先进先出的方式,当图像被应用程序使用时,缓存区将第一次采集到的图像发送出去,然后,重新采集一张图像。通过ioctl函数下的两个命令符实现上述过程,一个是将数据从缓存中读取的VIDIOC_QBUF命令符,另一个是将数据放回缓存的VIDIOC_DQBUF命令符。

8)停止采集和关闭设备

通过VIDIOC_STREAMOFF命令符,停止图像的采集,使用close函数关闭设备。图像采集设计如图2所示。

图2 图像采集流程图

3.2 图像压缩设计

在本设计中,主要将采集到的图像信息进行压缩处理,减少图像的大小,从而加快图像在网络中的传输速率。采用IJG JPEG Library进行JPEG图像压缩。IJG JPEG Library是JPEG压缩库,是以源码的形式提供给应用开发人员,本系统用到的库文件主要有以下 4个文件:libjpeg.lib,jconfig.h,jmorecfg.h,jpeglib.h[16-17]。首先,申请缓存区,初始化压缩对象;其次,指定文件存放的目录;然后,设置压缩参数,主要参数有图像的宽度、高度和色彩空间,并进行图像数据压缩;最后,释放缓存空间。

3.3 4G无线网络传输

本系统的图像传输是基于socket套接字的客户端与服务器端模式,通过QT分别实现socket套接字的客户端与服务器端[18]。ARM电路板作为采集终端运行采集客户端程序,PC机作为服务器端运行服务器端程序,Android手机客户端用于接收图像。采集客户终端(ARM端)、Android手机客户端和服务器端(PC机)采用TCP/IP协议进行连接,PC机接入互联网,通过花生壳软件的映射,将产生一个公网IP地址与端口号,采集客户终端(ARM端)和Android手机客户端通过输入公网的IP地址与端口号进行连接,服务器进行线程与端口号监听,当监听到采集客户终端(ARM端)和Android手机客户端发送请求时,做出相应的反应,并建立连接。通过建立连接后,采集客户终端(ARM端)、Android手机客户端与服务器进行图像的发送与接收,实现4G网络的图像远程实时传输。

服务器设计如下,第一,服务器进行初始化,建立Socket;第二,绑定本地IP地址和端口号,调用listen函数做好采集客户终端(ARM端)与Android手机客户端监听准备;第三,通过accept Connection()函数接收采集客户终端(ARM端)与Android手机客户端连接;第四,当客户端连接完毕后,使用onlySending()和transmitData()函数实现采集客户终端(ARM端)与Android手机客户端之间的图像传输。服务器端(PC端)软件设计流程如图3所示。

图3 服务器端(PC端)流程图

采集客户端设计如下,第一,对采集客户终端(ARM端)进行初始化,建立Socket;第二,获取服务器的IP地址和端口号,连接到服务器;第三,通过调用startTransfer()函数实现图像的发送;采集客户终端(ARM端)软件设计流程如图4所示。

图4 采集客户终端(ARM端)流程图

Android手机客户端设计如下,第一,对Android手机客户端进行初始化,建立Socket;第二,获取服务器的IP地址和端口号,连接到服务器上;第三,通过readMessage()函数实现图像的接收与显示;Android手机客户端程序流程如图5所示。

图5 Android手机客户端程序流程图

4 系统的测试

在互联网上申请一个静态IP地址与端口号,IP地址为61.174.40.202,端口号为38505。服务器程序运行在windows 7系统下,初始化服务器,在服务器端添加61.174.40.202地址和38505端口,将本地服务器与互联网进行连接;采集终端在启动后将自动进行网络配置、DNS解析和设备初始化,获取服务器的IP地址与端口号;采集终端初始化界面如图6所示。打开Android手机客户端,Android手机客户端在启动后将自动进行网络配置、DNS解析和设备初始化,获取服务器的IP地址与端口号;图7是Android手机客户端接收到采集终端(ARM端)发送的图像。

图6 采集终端

5 系统的测试结果分析

测试结果分析:测试发现接收到的图像可以清楚的分辨。但服务器和客户端在进行第一次图像传输时,耗时相对较长,而在接下来的传输过程中,图像延迟明显降低。经过分析发现造成这一结果的原因是服务器在启动后开始监听网络数据包时,一定时间内没有收到网络数据时,服务器程序会被系统降低优先级,并放在后台运行,数据包扫描周期也从而降低,最终导致在进行第一次发送图像时延迟较大。在后来的改进过程中,让客户端在连接主机后每隔30秒向服务器发送一个小的数据包,使服务器一直处于唤醒状态,这样就解决数据包延迟的问题。发送的时间周期间隔相对较长,数据包的内容较小,在保证延迟尽量低的前提下节省了一定的网络流量。

图7 Android手机客户端接收到的图像

表1 图像传输时间延迟测试表

6 结束语

文中在分析传统图像传输的基础上,通过微处理器i.MX6Q、USB摄像头、4G无线网卡和Android智能手机,设计了一款基于ARM与4G网络的图像传输系统。该系统采集终端采用ARM电路板i.MX6Q、USB摄像头、4G无线网卡与嵌入式Linux操作系统,实现图像的采集、JPEG压缩和发送;服务器端采用window操作系统,目的是将图像发送至公网,并在公网完成图像的互交;Android手机采用Android操作系统,实现图像的接收与显示。系统采用最新的4G无线网络技术,可以应用于监控场所、安防场所和教学实验等相关领域,具有广泛的应用前景。

[1]陈名松,黄高见,邱晓金,等.一种便携式无线监控的实现[J].现代电子技术,2016(22):142-145.

[2]Huang D W,Gentili R J,Katz G E,et al.A limitcycle self-organizing map architecture for stable arm control.[J].NeuralNetworksthe Official Journalofthe InternationalNeuralNetwork Society,2016(85):165-181.

[3]马玉林.基于ARMCortex-A8平台的双频RFID台式读写器设计与实现[D].成都:电子科技大学,2014.

[4]姚迪.基于ARM的无线对讲门的设计[D].大连:大连理工大学,2012.

[5]沈庆,吴晓,沈杰,等.基于ZigBee的钢丝绳生产扭矩报警系统设计[J].电子设计工程,2016(16):67-69.

[6]Deng M,Eramura Y,Wang A,et al.Particle filter-based viscoelasticity estimation of human multi-joint arm[J].IFAC Proceedings Volumes,2011,44(1):14312-14317.

[7]曹永胜,白恩健.车载无线中控系统[J].微型机与应用,2015(16):52-54,57.

[8]徐培玲.基于ARM和4G的视频监控系统的设计[J].山西电子技术,2015(1):34-35.

[9]雷金奎,原丹丹,李海生.基于ARM的双冗余微小型无人机飞行控制系统的设计[J].电子设计工程,2016(1):162-164,168.

[10]轩志伟.基于WLAN的无线分布式测试系统[D].太原:中北大学,2014.

[11]杨传东,席志红.基于达芬奇技术的4G移动视频传输系统的设计与实现[J].应用科技,2016(3):44-48.

[12]张超.家庭智能网关的研究与实现[D].合肥:安徽理工大学,2016.

[13]陈立刚,冯伟伟,周智颖,等.基于Android客户端GSM短信模块的远程浇花系统[J].电子设计工程,2016(1):165-168.

[14]王冬辉.基于ARM的建筑节能温度监测系统设计[J].科技与企业,2015(8):71.

[15]赵舒畅.基于嵌入式Linux下视频监控系统的研究[D].淮南:安徽理工大学,2016.

[16]邵秋丽.基于Linux嵌入式系统的低压断路器智能控制器研究[D].镇江:江苏科技大学,2014.

[17]张雁琳.基于Arduino的ZigBee无线传感节点的硬件设计[J].电子设计工程,2015(24):162-165.

[18]姚国风,庄斌,赵大明,等.基于ZigBee无线技术的智能家居系统设计[J].现代电子技术,2016(22):81-84.

猜你喜欢
端口号服务器端摄像头
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
Linux环境下基于Socket的数据传输软件设计
在Docker容器中安装应用程序
基于太赫兹技术的新一代摄像头及其在安防领域的应用探讨
浅析异步通信层的架构在ASP.NET 程序中的应用
浅谈以java为基础的Socket通信简介及实现
基于Qt的安全即时通讯软件服务器端设计
奔驰360°摄像头系统介绍
Winsock编程在《计算机网络基础》教学中的应用