您现在的位置是:主页 > 电路技术 > 嵌入式系统 >


基于4G网络与FreeRTOS的远程嵌入式监控系统实现

2020-03-31 23:50嵌入式系统 人已围观

简介我国物联网行业近年来发展迅速,物联网已经成为公众普遍接受的概念。家用的物联网视频监控设备一般利用光纤、WiFi接入网络,而商用或公共场所使用的视频监控设备一般采取有线...

  我国物联网行业近年来发展迅速,物联网已经成为公众普遍接受的概念。家用的物联网视频监控设备一般利用光纤、WiFi接入网络,而商用或公共场所使用的视频监控设备一般采取有线VGA、无线网桥中继传输或光纤实现联网。尽管如此,还有很多场合不具备铺设有线网络、设置WiFi源的条件,或者出于成本、施工量的限制,不适合采用上述的技术手段。
  
  截至目前,随着4G的普及和5G的发展,4G流量的使用资费进一步降低,为在物联网中使用4G传输提供了成本上的可能性。4G这种稳定、覆盖范围广、传输速率快、时延低的成熟无线传输技术,在对网络实时性要求高、数据传输量大的物联网领域势必能发挥作用。本论文主要解决嵌入式设备利用4G网络向互联网传输大流量数据的问题,同时实现配套的服务器端嵌入(Server Side Include,SSI)与公共网关接口(Common Gateway Interface,CGI)功能,以便于从移动端反向控制设备。这一技术途径,不仅可以在现有视频监控传输途径无法发挥作用的场合使用,也可以作为现有技术途径的紧急备用方案。
  

  1嵌入式远程监控系统

  
  嵌入式系统(Embedded System,ES)被定义为:以应用为中心,以计算机技术为基础,软件可裁剪,满足对系统功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。嵌入式系统现如今广泛应用于智能家居、工业控制、通信
  
  等领域。而网络技术的快速发展,为嵌入式设备的智能化提供了良好的技术基础。在嵌入式与网络结合的这些功能中,视频监控功能的实现是极其重要却往往比较困难的一个环节,究其原因,是因为大流量数据传输、多任务处理、低时延要求在嵌入式系统上比较难以实现。针对这一问题,现在常见的应对措施是在嵌入式系统上搭载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所示。
  图1 软件系统代码流程
  图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,进而调用对应的子程序实现功能。这里以驱动一个蜂鸣器为示例,返回的URL为: http://47.101.193.130/beep.cgi?BEEP=BEEPON&button=SEND。在这一串字符中,“beep.cgi”指出此为驱动蜂鸣器的CGI,我们根据此调用开关蜂鸣器的子程序,而“BEEPON”则为变量“BEEP”的值,我们根据此来决定蜂鸣器的开关。
  
  3 硬件设计
  
  系统的硬件结构如图2所示。系统以STM32F767为核心处理部件,驱动摄像头模块、4G模块、各类数据采集模块, 收集并处理监测数据后,统一发出。在这里,为了便于调试, 搭载了MCU显示屏和串口,并非系统运行的必要部件。
  图2 硬件结构
  图2 硬件结构
  
  硬件实物如图3所示,大小为30 cm×20 cm。实际上,如果仅保留系统运行的必要部件,STM32F767以最小系统的形式运行,可以仅在单层10 cm×10 cm的PCB板上布线。
  图3 硬件实物
  图3 硬件实物

Tags:

标签云