陈桢 陈蕾
摘 要:基于利用4G网络传输嵌入式视频监控数据、环境监控数据的目的,文章采用了STM32F767芯片搭载了FreeRTOS操作系统,结合USB2.0协议、LWIP通信协议,利用4G芯片EC20传输OV5640模块采集到的视频数据和其他环境数据,并添加了配套的CGI功能、SSI功能。实验结果显示,视频传输帧率达到7~8帧/s(720 P),传输平均速率达到240 K(bit/s),配套的CGI功能、SSI功能得以实现。进而得出结论,基于4G网络与FreeRTOS的远程嵌入式监控具有实现的可行性与实际应用价值,可以应用于当下嵌入式监控视频传输手段不便使用的场景。
关键词:4G;STM32;嵌入式;视频监控;CGI;SSI
我国物联网行业近年来发展迅速,物联网已经成为公众普遍接受的概念。家用的物联网视频监控设备一般利用光纤、WiFi接入网络[1],而商用或公共场所使用的视频监控设备一般采取有线VGA[2]、无线网桥中继传输或光纤实现联网。尽管如此,还有很多场合不具备铺设有线网络、设置WiFi源的条件,或者出于成本、施工量的限制,不适合采用上述的技术手段。
截至目前,随着4G的普及和5G的发展,4G流量的使用资费进一步降低,为在物联网中使用4G传输提供了成本上的可能性。4G这种稳定、覆盖范围广、传输速率快、时延低的成熟无线传输技术,在对网络实时性要求高、数据传输量大的物联网领域势必能发挥作用。本论文主要解决嵌入式设备利用4G网络向互联网传输大流量数据的问题,同时实现配套的服务器端嵌入(Server Side Include,SSI)与公共网关接口(Common Gateway Interface,CGI)功能,以便于从移动端反向控制设备。这一技术途径,不仅可以在现有视频监控传输途径无法发挥作用的场合使用,也可以作为现有技术途径的紧急备用方案。
1 嵌入式远程监控系统
嵌入式系统(Embedded System,ES)被定义为:以应用为中心,以计算机技术为基础,软件可裁剪,满足对系统功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统[3]。
嵌入式系统现如今广泛应用于智能家居、工业控制、通信等领域。而网络技術的快速发展,为嵌入式设备的智能化提供了良好的技术基础。在嵌入式与网络结合的这些功能中,视频监控功能的实现是极其重要却往往比较困难的一个环节,究其原因,是因为大流量数据传输、多任务处理、低时延要求在嵌入式系统上比较难以实现。针对这一问题,现在常见的应对措施是在嵌入式系统上搭载Linux系统以处理数据,然而也正因搭载了Linux系统,对片上资源的要求也随之提高。
STM32作为一款市场占有率极高,使用极其广泛的嵌入式芯片,片上资源有限,对于Linux这样的系统来说,尤其显得不足。而免费实时操作系统(Free Real Time Operating System,Free RTOS)作为一个轻量级的操作系统,包括了任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等功能,体量小巧、使用免费、在EEtimes统计的2015年RTOS系统占有量中是第一位。故而本文选用FreeRTOS来进行STM32片上资源的分配,实际的实验结果也证明,功能与效果都是比较理想的。
2 软件设计
此软件系统实现的任务主要有3个:(1)借由4G网络上传实时监控视频到服务器并进行查看。(2)借由4G网络以HTML网页为载体上传实时环境数据到服务器并进行查看(SSI的实现)。(3)借由4G网络以HTML网页为载体反向控制开发板(CGI的实现)。软件系统的架构如图1所示。
下面简单介绍这3种功能的核心技术内容。
2.1 视频监测
首先,由4G芯片通过AT指令集连入服务器,4G芯片选用的是移远公司EC20芯片,服务器则为阿里云服务器。其次,由摄像头模块OV5640采集视频数据,该视频模块使用了STM32F767的DMA双缓冲功能。在实际的测试中,发现了由于网络速度与摄像头数据采集速度不匹配,出现了图片损坏的情况,所以得到视频采集数据后,使用了FIFO的写法,来对视频数据进行缓存。最后,通过USB2.0协议,使用STM32F767自带的USB OTG FS功能模块,将视频数据进行上传。STM32F767的运行内存虽然已经远优于常用嵌入式芯片,但由于需要同步处理的数据与协议众多,所以必须要对内存空间进行合理的管理。传输使用LWIP下的TCP协议以保证传输的可靠性,此外,为了配合FreeRTOS多任务系统和大数据量场合,这里必须使用NETCONN编程接口。
阿里云服务器端使用网络摄像头软件进行接收后,便可以在移动端进行查看,常见的查看方式有Microsoft公司提供的远程桌面功能或RD Client APP,阿里云本身也支持浏览器登录。
2.2 环境监测
首先,先连入服务器,连接的协议与方式基本与视频监控功能一致,如果最终的需求不需要实现视频监控,STM32F767与EC20的通信则可以借由RS232串口实现,当然这样也就失去了使用4G网络的意义,故这里不做展开讨论。其次,采集STM32F767板载外围数据,由于在实际的应用中,需求的数据各有不同,这里取温度、湿度以及ADC值作为示例。最后,通过SSI的句柄数组来调用内部数据并添加到网页中,借由STM32F767的RTC时间,便可以看到数据的对应采集时间。查看的功能,借助阿里云服务器端的浏览器便可以实现。
需要补充的是,网页源文件并不能直接添加进工程,而是需要借助相关软件转换成.c格式的网页数组,才能进行使用。
2.3 反向控制
首先,连入服务器,连接协议与方式参考环境数据功能。其次,分析瀏览器返回的URL[4],进而调用对应的子程序实现功能。这里以驱动一个蜂鸣器为示例,返回的URL为:http://47.101.193.130/beep.cgi?BEEP=BEEPON&button=SEND。在这一串字符中,“beep.cgi”指出此为驱动蜂鸣器的CGI,我们根据此调用开关蜂鸣器的子程序,而“BEEPON”则为变量“BEEP”的值,我们根据此来决定蜂鸣器的开关。
3 硬件设计
系统的硬件结构如图2所示。系统以STM32F767为核心处理部件,驱动摄像头模块、4G模块、各类数据采集模块,收集并处理监测数据后,统一发出。在这里,为了便于调试,搭载了MCU显示屏和串口,并非系统运行的必要部件。
硬件实物如图3所示,大小为30 cm×20 cm。实际上,如果仅保留系统运行的必要部件,STM32F767以最小系统的形式运行,可以仅在单层10 cm×10 cm的PCB板上布线。
4 实验验证
4.1 视频监测功能
实验在两个小时内不间断地实行视频传输,用以查看视频在传输过程中的质量和流畅程度。流出带宽如图4所示。
可以看到在整个传输期间,大的网络迟滞一共有3次,这3次网络波动在功能中的体现为监测视频的卡慢,图片本身没有出现损坏的情况。在这里截取一张正常情况下的监测视频软件进行分析。
如图5所示,在传输720 P视频码流的情况下,帧率可以达到7帧/s以上,完全可以满足常规视频监控的需要。
4.2 环境监测功能
实验采集了实时ADC电压值、温度传感器值、湿度传感器值,从STM32开发板发送至服务器端,并借助服务器端浏览器进行查看,环境监测示意如图6所示。其值在传输期间一直保持稳定、准确。这里仅仅是作为示例传输了如上的环境数据,实际上,完全可以根据实际需要,来采集数据。
4.3 反向控制功能
实验从服务器端,借助浏览器进行对开发板的反向控制。在如图7所示的网页界面设置好蜂鸣器与LED的状态,在点击发送后,开发板能立刻做出响应。同样的,在实际的应用场景中,可以控制各式外设。
5 结语
实验结果显示,在本文实现的视频传输系统中,传输的720 P视频码流可以达到7~8帧/s,传输的平均速率达到240 Kbit/s,与之配套的CGI功能、SSI功能也得到了顺利的实现。本文所论述的技术手段可以应用于当下嵌入式监控视频传输手段不便使用的场景。
现如今,嵌入式系统以其使用场景广泛、体积小、功耗低成了远程监控的主流方向,而4G网络在嵌入式监控中的应用,为嵌入式系统的数据交互提供了有效的技术手段。
基金项目:江苏省大学生创新创业项目;项目编号:201710285031Z。
作者简介:陈桢(1996— ),男,江苏南通人,本科生;研究方向:通信工程(嵌入式培养)。