基于STM32的WiFi视频监控小车设计与实现*

2021-12-11 10:03戴梦飞赵俊锋
科技创新与应用 2021年36期
关键词:路由器小车摄像头

戴梦飞,赵俊锋

(南阳理工学院 智能制造学院,河南 南阳473004)

在当今电子科技高速发展的时代背景下,在我们的生活中充满了各种科技产品,这些产品的系统不断强大,功能也逐渐丰富。WiFi视频监控小车作为近代的一种新的设计理念,它具有独特的优点,例如成本低、结构简单,又有着多种实用功能。其设计之初便是为了能够代替人类到一些危险环境中执行任务,例如军事侦察任务或是化工环境下的巡查工作。事实证明,小车比人类更适合在恶劣且危险的环境高效地工作,可以极大地减少人力成本,并且降低了风险。

本文研究的主要目的是在基于STM32的WiFi小车的基础移动功能上对于视频信息采集和传输功能的设计。最终,WiFi视频监控小车能够在通电情况下采集小车摄像头前方的视频信息,同时小车通过WiFi模块的WiFi信号将采集到的视频信息发送到PC上位机端或是Android手机端的应用程序上,并在控制终端的应用程序界面上显示出来。同时,用户可以在控制终端应用程序的控制界面上通过WiFi信号向视频监控小车发送控制指令从而实现实时控制视频监控小车的运动。

1 系统总体设计

近些年来,处理器随着科技高速发展,嵌入式操作系统也得到了更为广泛地使用。以嵌入式操作系统为核心的图像信息采集和无线信息传输系统也已广泛应用于生活和工作中。本文就是基于STM32设计出WiFi视频监控小车。如今的电脑(又可称为PC上位机)和手机(本文主要介绍Android操作系统的智能手机)成为每个人必不可少的生活工具。使用STM32作为处理器,利用摄像头采集图像信息并通过WiFi信号传递给PC上位机或是手机端,并在应用程序的界面上显示实时画面,也可以通过WiFi信号发出控制指令给视频监控小车,从而控制小车的移动。

本文设计的基于STM32的WiFi视频监控小车预期实现的功能如下:

(1)远程控制移动功能:用户可以远程使用控制终端通过WiFi信号发送控制指令给视频监控小车,从而控制视频监控小车的前进、后退、左转弯和右转弯这些基本的移动功能。

(2)数据无线通信功能:视频监控小车和控制终端能通过WiFi信号互相连接,从而可以从控制终端发送控制指令给小车,小车也可以将采集到的视频信息发送给控制终端。

(3)控制终端显示功能:在PC上位机端或是Android手机端上的应用程序可以实时显示视频监控小车采集的视频图像。

本文基于STM32的WiFi视频监控小车系统的总体设计主要是硬件设计和软件设计两大方向。硬件设计主要是以STM32系列的处理器作为主控制器为基础,再增加所需的视频信息采集模块和无线通信模块。软件模块则是由小车选用硬件的驱动模块程序设计和控制终端的应用程序设计组成。硬件的驱动程序主要是电机的驱动程序、USB摄像头的视频信息采集驱动程序和无线数据传输驱动程序这三部分组成,应用程序由PC上位机端和Android手机端的APP共同组成,但系统还需要有相关的调试程序和烧录程序。其设计的总体框架图如图1所示。

图1 WiFi视频监控小车总体设计图

2 硬件电路设计

2.1 微处理器模块

对于微处理器的选型是设计中的重点,要求微处理器可以帮助小车来控制各底层模块,并通过无线信号与外部设备即终端建立联系,从而控制电机的转动、视频信息数据的处理和传输等。综合这些要求以及客观条件,小车系统采用的处理器模块是市面上主流的性能较为优越的STM32F103ZET6。其在STM32系列的处理器内部拥有高速存储器,还添加有8MHz的RC振荡器,这使得处理器可以达到72MHz的工作频率[1]。综上所述,STM32系列处理器可以说是相关用户们的首选。本系统采用的核心板添加了四个电机对应的串口引脚,并且在板子的角落处还设计了与WiFi模块连接的串口引脚,不用再进行相关外设的添加,这使得实际的设计和操作更为简单。

2.2 电机驱动模块

当今市面上主流的电机驱动芯片主要是L298N和L293D两种型号,但对两者之一的选取需要通过两种电机驱动模块的性能对比和实际的设计要求来决定。通过L298N和L293D的性能对比可知,L298N是L293D电机驱动芯片的高功率、大电流版本,L298N的性能更为优越,故本系统的电机驱动模块选用L298N型号的电机驱动。通过控制输入端口的电平高低就可以控制电机的正反转。因为小车底盘没有转轴,所以为了实现小车的转向通过模仿老式坦克的转向方式,即利用小车四个电机的转速差来实现小车的转向功能。

2.3 视频采集模块

视频监控小车的视频采集模块即摄像头,作为小车的核心之一,摄像头的好与坏决定着实际的监控画面质量及监控的效果。考虑到实际条件和设计需求,本系统采用的是USB数字摄像头,没有选用比较普遍的CMOS数字图像传感器。因为相对于后者,USB数字摄像头的外观更为紧凑一体化,且驱动开发更为简单等优点,在实际使用时只需在USB-HOST驱动的基础上加配摄像头USB驱动便可轻松达到实时采集视频信息的要求,所以更利于初学者使用[2]。所以考虑到USB摄像头更加方便实用,而且USB接口正好可以适合本系统所选取的无线路由器模块,在实际使用时可以做到通电状态下插上接口便可以使用。并且,依靠USB线路直接连接无线路由器获得的电流电压完全可以满足USB摄像头所需的电压,从而就不用再连接电池组来获取电源电压,这就使得系统设计时可以不用考虑给摄像头单独供电,减少工作量和设计的复杂程度。

2.4 无线路由器模块

WiFi模块是视频监控小车设计的一个重要环节。在本次设计中采用无线路由器来代替普通的WiFi模块。因为一个无线路由器可以在通电情况下制造出一个具有开放性的无线局域网,这样用户就可以通过PC上位机或是Android手机连接局域网的方式与视频监控小车建立联系。之后,打开控制终端上的应用程序,点击连接后显示实时的监控画面便是连接成功了。此时用户就可以使用PC端或是Android手机上的应用程序软件向视频监控小车发送各种控制指令,以及接收小车采集的视频信息数据并在应用程序界面上实时地显示。

因为WiFi信号是连接视频监控小车和用户控制终端的纽带,所以选择一个合适的无线路由器模块对于整体的设计和实验而言十分关键。结合系统设计的要求以及视频监控小车自身携带的局限性考虑,本次设计采用了TP-LINK的TL-WR702N型号的150M迷你型无线路由器。这种无线路由器默认为AP(无线接入点)模式,其最高传输速率可以达到150Mbps,适用于15-60m2面积的范围内。考虑其能够满足设计的需要,最重要的是这种无线路由器可以做到即插即用,并且自身的信号稳定、体积较小,大小只有普通信用卡的一半,自重只有170g,方便小车携带。根据这些因素,最终决定选用此类无线路由器。

2.5 电源电路模块

电源模块是给整个系统提供稳定有效电压的能源模块,相当于整个系统的心脏,是确保系统中的每个模块都可以正常运行的前提保障。电源电压的获取方式有两种,一种是直接获取直流电源输入的电压,另一种是使用USB电源通过USB接口来获取电压。而在本系统中小车的电源模块则是采用两节18650锂电池组成的电池组,可以直接提供7.5V的电源电压。但是由于系统中的各个模块所需的额定电压不相同,所以需要把两节18650锂电池组提供的7.5V电压先进行一次降压。STM32系列处理器的外围硬件模块所需额定电压为5V,而当提供的电源电压高于额定电压可能会损毁元器件,所以本系统采用LM2596降压模块来将电池组的7.5V降至5V。因为STM32的SWD接口和芯片的额定电压为3.3V,现在已经有经过降压处理的5V电压,所以本系统还需要使用AMS1117稳压器。AMS1117稳压器可以将稳压电源流入系统的5V电压降为3.3V。为了安全考虑,在输出低压侧加上了一个LED红灯作为电流倒流时的警示灯。

3 系统软件程序设计

3.1 操作系统的移植

相比较于其他嵌入式操作系统,嵌入式Linux操作系统是一种更受欢迎、使用者更多并且发展更完善的网络操作系统。从其自身分析,因为Linux为开源系统并且无黑箱技术,所以根据网络协议所有人都能对Linux的源代码进行修改,开发出新代码和新的功能来制造出独特的操作系统。并且Linux操作系统在全球各地拥有的众多Linux爱好者,可以作为Linux开发者的强大技术支持力量,用户之间可以互相帮助并且共同开发。综上所述,嵌入式Linux操作系统作为一种开源且可裁减的软件平台系统,是嵌入式产品开发时的首选系统[3]。

3.2 应用程序设计

本系统中PC上位机上应用程序的开发是采用了QtCreator 4.4.1开发工具软件,使用的编程语言是C++。最终设计出来的应用程序需要实现的功能包括发送指令控制视频监控小车的运动以及接收数据实时显示监控画面[4]。

对于Android程序的开发则是使用Eclipse加JDK和ANT的组合,当然还要有Android对应的SDK和Android系统要使用Eclipse软件时必要的插件。在使用时要先按照程序推荐的安装流程操作,然后设计好环境变量。程序开发的简要流程是:

(1)首先点击Eclipse软件界面左上方的File选项,再点击后选择弹出的一系列选项中的New选项。

(2)其次选择弹出的Project选项。选择后会弹出一个对话窗,点击其中的AndroidProject。

(3)再次要在弹出的窗口输入程序开发的相关参数。

(4)最后可以编译程序自动生成的代码,注意此时代码的不同和复杂程度就代表最终生成的Android应用程序的不同和复杂程度。

3.3 驱动程序设计

3.3.1 电机驱动程序设计

对于L298N电机驱动程序的设计要先了解其驱动芯片的引脚,和各个引脚的对应作用。每个L298N电机驱动模块可以控制两个电机的转动,在此先对L298N电机驱动模块的主要引脚的作用进行简单说明。首先引脚如何控制左侧电机A和右侧电机B正反转和停止的方式进行说明,其控制引脚端口的高低电平和小车电机旋转方式的关系如表1所示。

表1 引脚高低电平与小车电机旋转方式对应表

在本系统中使用了两个L298N电机驱动模块,用来分别控制视频监控小车前端两侧电机和后端两侧电机的转动以及转速。正如上述说明,每个驱动模块可以通过控制输入引脚的高低电平来同时控制左右两个电机的转动。L298N电机驱动电机转动原理图如图2所示。

图2 L298N电机驱动电机转动原理图

系统通过PWM脉冲调速的方式来改变电机的转速,从而实现转速差控制小车转向。采用的PWM脉冲调速就是通过控制输出的电平高低来控制调速。而输出高低电平的频率就是所谓的方波占空比。占空比是接通时间和周期时间之比,此外占空比通常通过百分比来表示。所以总结来说,PWM脉冲调速就是通过改变占空比的方式来改变平均电压,从而使对应电机的转速发生变化[5]。

通过下面的流程图说明了当小车接收到控制终端的控制指令时,L298N如何驱动电机转动从而控制小车的运动方式。当前进或后退时,两个L298N控制四个电机同时同速正转或反转。但当左转或右转时会对电机转速进行调整。左转时小车左侧两电机向后转,右侧的两电机向前转,但是为了让小车能够可以近似原地旋转,右后方的电机转速加大,从而使电机转角变大。右转时同理。整体流程图如图3所示。

图3 电机控制流程图

3.3.2 视频采集程序设计

USB摄像头的工作原理其实就是通过图像传感器将物镜转换为电信号,然后再经过A/D转换成数字图像信号,最后将数字图像信号发送给摄像头内部DSP(数字信号处理)处理芯片进行相关的数据处理[6]。为了让小车能正常采集处理视频信息,要先将摄像头的相关驱动加载到无线路由器中。当小车通电各模块正常启动后,此时STM32F103ZET6处理器通过无线路由器控制USB摄像头开始视频信息的采集,采集到的视频数据在摄像头内部处理压缩后通过USB传输到无线路由器中,然后再经过无线路由器将串口数据转换为网络数据通过WiFi信号发送给控制终端。用户控制终端上的应用程序经过对数据的解码处理后,便会在用户界面显示实时的监控画面。

3.3.3 无线数据传输程序设计

视频监控小车和用户控制终端之间就是通过无线数据传输来接收视频信息和发送控制指令的。而无线数据传输是需要按照TCP/IP协议来进行工作的,TCP/IP协议是一个开放性的通信协议,在概念上可以分为应用层、传输层、IP层和数据链路层[7]。其中传输层的作用是用来服务上层运行中的应用层,可以给应用层提供一端到另一端的通信支持。而传输层自身中有两个最重要的协议TCP和UDP,即传输控制协议和用户数据报协议。提到TCP/IP协议就要说TCP/IP协议栈。在本系统设计中TCP/IP协议栈和控制终端应用程序的接口被设计成一种Socket标准的API接口,这可以用来封装协议栈内部的大部分底层文件,方便后来的修改编制。

无线数据传输的具体流程是当无线路由器经过初始化过后,打开控制终端的WiFi开关进行搜索,搜索到创建好的网络服务器IP地址:192.168.1.1,其视频端口:8080,控制端口:2001[8]。进行设置连接,连接成功后就可以进行数据传输,此时会在控制界面上显示监控画面。关闭连接后会自动退出程序,结束监控控制画面。

4 系统测试

先是对程序进行烧录,当编写好的程序烧录成功后对小车主要硬件中的电机和无线路由器进行测试,最后就是PC上位机和Android手机上的应用程序的测试。通过对系统软硬件和整体的测试,验证了系统的可行性和稳定实用性。测试的最终结果表明,小车各部分都能正常工作,整体系统在通电情况下,用户的控制终端可以通过正常的WiFi信号实现对视频监控小车的远程移动控制以及实时地显示视频监控画面,基本上达到了最初的设计目标。PC上位机端和Android手机端程序的测试图如图4和图5所示。

图4 PC上位机端视频控制界面和小车实物图

图5 Android手机端视频控制界面

5 结束语

虽然设计出的WiFi视频监控小车达到了预期的设计要求,但是小车本身还是有一些缺陷。随着自动化和智能化的普及,工业生产对于智能小车的要求也越来越高。本文的视频监控小车只是智能化小车的一个分支,设计的小车硬件比较简单并且只能实现一些简单的功能,但为以后更加智能化地设计打下了一个基础。

猜你喜欢
路由器小车摄像头
浙江首试公路非现场执法新型摄像头
买千兆路由器看接口参数
摄像头连接器可提供360°视角图像
维持生命
路由器每天都要关
路由器每天都要关
大车拉小车
刘老师想开小车
两轮自平衡小车的设计与实现
去修理厂