王 茜
(山西金融职业学院 信息技术系,山西 太原 030008)
便携式移动监控系统的软硬件设计
王 茜
(山西金融职业学院 信息技术系,山西 太原 030008)
文章设计并成功实现了一个便携式移动监控系统,通过监控小车自建WIFI热点,实时将视频流传输到安卓手机客户端观看,同时接收来自手机端的控制信号进而执行摄像头云台转动、行驶移动、速度调整等动作.文章从小车端硬件、小车端软件、手机端软件三个方面对系统进行了介绍,并着重说明了硬件电路设计及器件选型、视频采集压缩传送算法、小车与手机通信协议.实验证明,系统各项功能满足设计预期,能够较好地完成遥控小车移动、云台转动、视频处理等工作,并且相关设备体积较小便于携带安装.
便携式;移动监控;视频处理;WIFI
近年来,智能设备的研究得到了长足发展[1],其智能化程度也得到了很大提高,搭载了移动视频监控平台的智能机器人的应用领域越来越广泛[2],不仅在工业、农业、医疗、服务等基础性产业中应用广泛,而且也在反恐排爆、军事侦察和空间探测领域等特殊场合得到很好的应用并且表现突出[3].本文介绍了一个低成本的、便于组装的可移动便携式监控系统的软硬件设计.系统通过监控小车自建WIFI热点,实时将视频流传输到安卓手机客户端观看,同时接收来自手机端的控制信号执行摄像头云台转动、行驶移动、速度调整等动作.
设备组成上,系统由可移动监控小车、Android控制端软件两部分组成(见图1).小车是整个移动视频监控系统的核心,负责实现小车移动、视频采集、编码、传输、WIFI无线通讯等功能.它使用安卓手机作为主控端,通过WIFI无线网络对小车进行移动方向、速度的控制,小车上的摄像头可利用云台转动,可以实时采集视频图像信号,并通过无线网络将视频信号传输到手机端供人观看.
文章将分为小车端硬件、小车端软件、手机端软件三部分进行介绍.
图1 系统总体设计结构图
监控小车控制电路的上层以ARM处理器S3C2440A为核心,运行Linux系统,搭载无线网卡进行WIFI通讯,同时使用串口与下层单片机通讯.下层51单片机接收、解析ARM处理器的通讯信号并控制电机和云台舵机的运动.硬件上两层架构的设计充分发挥了不同控制芯片的优势,而且系统各组件的模块化具有系统耦合性低、可拓展性强、系统稳定性高的优点.
2.1 CPU选型
由于在功能设计上需要实现WIFI通讯和实时的视频监控,所以硬件上对处理器的要求比较高,上层平台需要一个速度较快、满足需求的处理器,这里采用了三星公司的基于ARM9架构一款处理器.
2.2 无线网卡选型
无线网卡选择应该基于OpenWrt对无线网卡的支持列表而定.本设计中选择基于Atheros AR9271芯片的TP-Link wn722n USB无线网卡.
2.3 摄像头选型
系统采用了基于USB接口的视频采集.Linux在USB摄像头的支持方面良好,只要设计制作符合UVC规范的摄像头,一般都能被Linux兼容.在Linux UVC官方网站上有一个支持Linux UVC的设备列表.本设计选用的摄像头即为支持UVC规范的设备.
2.4 小车硬件设计
小车车体采用三轮式结构,前面两轮负责提供动力和方向控制,后面万向轮负责保持车体平衡及支撑车体.小车车体材料采用坚固、质轻的亚克力板,其上打孔安装控制电路.
小车运动的实现依赖于车轮上的直流电机,直流电机的控制采用L298N双H桥电机控制芯片,摄像头角度的转动使用舵机来实现.在电机和舵机控制方面,如果使用ARM处理器来控制,就需要编写Linux系统中相应的字符设备驱动程序,增加了项目复杂度和不稳定性,所以为了实现电机和舵机的准确稳定的控制,需要将硬件分为两层架构,底层采用编程简便、成熟、可行性高的STC89C52RC单片机作为电机和舵机云台的控制器.
2.5 直流电机控制
直流电机用来驱动小车移动,其转向和速度的控制使用L298N控制芯片实现(见图2).直流电机驱动板在L298N芯片的基础上设计了外围电路,它具有带载能力强的特点.
图2 控制板驱动原理图
2.6 舵机控制
舵机用来控制云台的转动.舵机的控制一般需要一个20ms左右的时基脉冲,其中高电平部分用来控制转动角度.以180度角度伺服为例,对应的控制关系如下.
0.5ms-----------0 度
1.0ms-----------45度
1.5ms-----------90度
2.0ms-----------135度
2.5ms-----------180度
设计中云台使用的舵机为辉盛SG90 9G舵机,控制脉冲的产生使用单片机编程实现.
软件部分涉及到单片机的串口通信及电机、舵机控制、Linux系统下的WIFI通讯、视频采集、编码等功能.根据视频监控小车的功能需求及技术需求,软件部分包括无线WIFI通讯、视频处理和小车控制三个部分.
3.1 无线WIFI通讯
WIFI通讯移植嵌入式Linux发行版利用OpenWrt实现[4],OpenWrt是一个开源的专用于无线路由器等网络设备的Linux发行版,对于无线WIFI通讯有着完善的软件支持.OpenWrt的设计初衷是为无线路由等设备提供一个开源、免费、可配置性高、自由定制的网络专用系统[5].所以,OpenWrt系统对市面上各种WIFI无线网卡芯片有着广泛的支持.本设计所采用的TP-Link wn722n的无线SoC芯片为基于Atheros方案的AR9271芯片,OpenWrt系统对该芯片的驱动支持良好.具体使用make menuconfig,在OpenWrt固件编译过程中启用对该型号芯片支持及无线通讯相关软件包配置的过程这里不再赘述.
3.2 视频处理
视频采集压缩传输采用开源的MJPG-streamer来实现.MJPG-streamer是一个开源的视频服务器软件[6],该软件内建一个轻量级的HTTP服务器,可应用在基于IP协议的网络中,从摄像头中获取JPEG图像并传输MJPG格式的视频浏览器或者专用客户端观看.具体可分为视频采集、视频压缩和视频传输三个部分.
图3 视频采集流程图
(1)视频采集.视频采集基本流程如图3所示.
(2)视频压缩.大多数摄像头都是以MJPG/YUV格式输出视频.本设计最终给浏览器发送的是JPEG格式的图像,故需要把MJPEG转换成JPEG.工程中采用的方法是,在MJPEG的帧起始标志0xffc0之前插入Huffman表.
(3)视频传输.视频传输采用了并发服务器来提高性能,具体流程如图4所示.
图4 多线程服务器程序流程图
3.3 小车控制
小车的电机和舵机的控制信号是通过手机先发送给ARM上的Linux系统,然后ARM平台再将控制信号通过串口通讯转发给51单片机.本功能采用开源的网络串口转换软件set2net来实现.
舵机和电机都是利用单片机产生PWM(脉冲宽度调制)信号分别进行转速、角度的控制.通过对51单片机的中断、定时器等资源进行编程来产生PWM控制信号.
(1)通信协议.为了实现对WIFI小车的控制,就必须在Android控制端与移动监控小车之间预先定义好一系列指令.每一条控制指令由5个8位二进制数构成.表1是系统中定义的控制指令.
(2)云台控制.云台有上下和左右两个转动方向,需要两路PWM控制.但STC89C52RC单片机内部总共只有三个定时器.其中定时器1用来做串口通讯的波特率发生器,定时器2用来做两路电机的PWM调速,只剩下一个定时器0可以用来产生舵机PWM信号.为了只利用一个定时器实现多路舵机的控制功能,这里通过计算设计了一种算法,可以只利用一个定时器0实现8路舵机的控制.
表1 小车控制协议定义
舵机控制中负责控制舵机角度的高电平脉冲的时间一般为0.5ms至2.5ms范围内.所以,由于一个脉冲周期高电平的持续时间最长也只有2.5ms,所以可以把一个周期分成8部分,每个部分2.5ms.定时器0在一个20ms周期内轮流为8路舵机服务,控制每路舵机的高电平时间.
(3)电机控制.STC89C52RC中的定时器2用来控制两个电机的转速.这里用到了与舵机控制类似的算法,使用一个定时器2来产生.
手机端软件基于Android sdk进行开发,是一款可以安装使用在主流安卓手机上的APP,主要负责小车控制、视频接收显示,以及监控信息记录,各子系统的模块结构如图5所示.
图5 手机端软件模块图
手机端软件功能介绍如下,具体实现过程不是文章重点,这里不再赘述.
(1)视频接收子系统
视频网络传输模块
为了使得视频监控系统的安卓客户端和小车端可以进行实时通信,传输模块通过SOCKET网络通信和HTTP传输实现;
视频解码模块
把MJPEG解码成一帧一帧的JPEG图像;
视频显示模块
为保证视频较为流畅,采用SurfaceView技术实现视频的显示.
(2)小车控制子系统
控制信号通信模块;
用户控制界面;
小车状态显示;
(3)监控信息记录子系统
负责截屏,录像等视频保存功能.
针对系统核心功能WIFI通讯和视频采集进行了如下实验内容.具体如表2、表3所示.
表2 无线WIFI通讯部分实验
表3 视频采集功能实验
文章介绍的便携式移动视频监控系统包括了无线WIFI通讯,视频采集、压缩、编码和传输,并实现了监控平台的移动功能.从实验结果可知,系统各项功能满足设计预期,能够较好地采集、传送、展示和存储视频信息,并且相关设备体积较小便于携带安装.当然,系统在视频压缩效果、信号稳定性方面还有一定不足,还需进一步完善提高.
[1]朱兆坦.论公共安全视频监控系统的现状及建设方向[J]. 信息网络,2010(06):45-48.
[2]薛子伯.基于WIFI的触发式无线图像采集系统的研究与设计[D].长春:吉林大学,2011:3-10.
[3]张科.嵌入式运动物体自动跟踪视频监控器的设计实现[D].成都:西南交通大学,2010:40-46.
[4]Christopher Hallinan.Embedded Linux Primer[M].3th Edition.Boston: Pearson Education,2011.
[5]Neil Matthew,Richard Stones. Beginning Linux Programming [M].4th Edition.Indianapolis:Wiley Publishing,2007.
[6]Vide04Linux Kernel API Reference.[EB/OL].http:// linux. bytesex.org/v412/API.html
(责任编辑:王前)
10.13877/j.cnki.cn22-1284.2016.08.005
2016-07-08
王茜,女,山西太原人,讲师.
TP27
A
1008-7974(2016)04-0016-04