基于单片机的视觉导航小车设计

摘 要

随着智能化的到来,通讯网络,计算机,自动控制等产品正在不断发展,人们对于产品的方便性以及舒适性也越来越看重,使得传统的人工工艺和机械装备不再满足人们的需求,而又随着时代水平的提高,汽车逐渐成为人们在生活和工作中不可缺少的工具。
为了消除人们在各种工业繁琐的危险环境对于自身的危险的问题,本着让工作更加高效而且节省成本,提升人们生活水平的原则,本课题利用STM32单片机作为主控芯片,视觉采集模块采用USB摄像头以及PWM驱动技术实现视觉导航小车,同时在小车上增加WIFI传输功能,从而实现人们可以规划小车的行驶路径以及人们可以在手机终端或者PC端实时看见周围的情况并且实时控制小车,从而随时应付突发情况。结果表明,通过完成系统总体设计、硬件设计、软件编写、软硬件调试的工作,人们完全可以让视觉导航小车去他们无法进入地方进行勘测,从而可以让工作更加有效,提升生活效率,而且对安全也可以得到保障,即使由于环境导致小车损坏,只需修理,既做到了节省成本,又可以消除安全隐患,从而带来了巨大的经济和社会效益。

关键词:STM32; PWM驱动; WIFI; 视觉导航

1 总体方案设计

1.1 方案论证

本课题是为了让小车进入人类无法进入的地方进行勘测,从而让人类在手机终端或者PC端看见小车周围的环境,从而进行操作和工作。所以为了控制小车实现功能做出以下两种设计方案进行对比:

方案一:是采用STM32主控+摄像头+PWM驱动技术实现视觉导航小车,具体为通过STM32作为主控芯片驱动小车,以便来控制小车的运行,根据视觉采集模块采集的图像信息通过WIFI模块发送到手机或电脑,人们在界面上实时查看,再将图像信息传递给STM32,从而控制小车。
方案二:是采用FPGA+图像采集单元+驱动板实现视觉导航小车,具体地,视觉导航小车利用CMOS传感器采集图像信息。FPGA利用COMS传感器提供的时钟信号作为同步的信号进行图像采集,然后通过控制板的数字接口将相机的8位数据线和相应的控制信号直接连接到图像采集,优点是集成度高,速度快和可靠性高[1]。如果要更改驱动电路的时序并添加一些功能,则只需对设备进行重新编程。
经过比较,考虑到性能,第一种更加灵活。对于变化的车速,使用PWM脉冲代码速度控制进行控制,并通过更改电动机的平均电压来改变汽车的速度。相对于第二种,成本也是很低,所以采用第一种方案。

1.2 项目总体设计

本设计基于STM32主控模块,该功能主要通过7个模块的电路设计来实现,分别是电源模块,红外模块,电机驱动模块,视觉采集模块,WIFI模块,循迹模块,超声波模块。系统功能图如图1.1所示。

图1.1 系统功能图

2 单片机选型

控制芯片的选择应适合设计要求,性能应具有功耗低,性能高,稳定性好,存储空间大的优点。当设计要求准确时,代码指令的兼容性就很高。 STM32结构设计最大限度地减少了外围设备,以实现最大的集成度。与STC89C51相比,它具有更多I/O口,可以进行更多的功能,包括上电复位,按钮复位,定时器时钟等功能,可以用作系统的主时钟,以满足丰富的片外设备和各种接口[2]。因此,在本设计中,选择了STM32,它起着编写程序的作用。它类似于微型计算机,可以用C语言和汇编语言进行编程,以它为核心,每个模块都连接到微控制器以实现各种功能。

2.1 STM32F103RCT6芯片

本设计使用STM32F103系列单片机的STM32F103RCT6作为主控制芯片。 STM32F103RCT6是嵌入式微控制器集成电路(IC)。该单片机具有32位ARM Cortex-M3内核,具有72MHz的速度和512K FLASH和48K SRAM存储器容量,具有3个ADC,13个通信接口。STM32F103系列芯片的主要参数如图2.1所示:

图2.1 STM32F103系列
其中本设计选用的STM32F103RCT6的管脚描述如图2.2所示:

图2.2 STM32F103RCT6引脚图

2.2 红外遥控模块设计

为了让人们可以在现场远程控制小车,从遥控器进行调试小车,让它去人们无法工作的地方进行工作,所以在本课题中加了一个红外接收头,插在了单片机的A4端口上,如下图2.8所示,用来遥控视觉导航小车。可以通过按遥控器的按钮,对小车进行控制,CH键是前进,蓝色是向左前进,绿色是向右前进,+号是向后倒退,蓝色的向右键是停止,遥控器如下图2.9所示。当用遥控器对着红外接收头控制时,红外线进入模块,它可以在其输出端便可以获悉原来发射器发出的数字编码,只要它由STM32解码程序解码,就可以知道按下了哪个按钮并执行相应的控制过程以完成红外遥控操作。

图2.9 遥控器实物图

3 视觉导航软件设计

在本设计中,人们可以通过手机或PC控制视觉导航小车,因此需要设计出一个视觉导航软件的程序。本设计要实现的是,人们可以使用电脑或手机选择不同的按钮来控制小车,并实际监视视频机器以建立连接。人们可以在计算机界面上选择不同的按钮,并发送适当的命令来控制小车的运行和实时视频监控。该系统的目的是控制计算机上的终端软件。通过使用Visual C ++设计软件,它具有开发环境可视化的特征。用户可以直接在界面上进行编程,这给开发人员带来了很多便利。在PC端可以实现的功能是
(1)实时监控显示。可以实时显示摄像头采集的图像;
(2)可以对小车进行控制。比如说前进,后退,左右移动。
本设计中的应用程序设计也是两个部分。一部分是控制界面,另一部分是视频界面。在控制界面中,人们可以看到小车的不同行驶状态,并控制车辆向前,向后,向左和向右行驶。在视频界面中,人们可以看到视频的IP地址和视频显示界面。然后结合这两个界面,可以同时在手机上看到这两个界面,如图3.3所示。

图3.3 手机界面

3.1 循迹模块软件设计

若想让小车在规定的轨迹上进行前进,后退,左转,右转,应当在软件设计中,编程好小车的代码,如下图3.5所示,循迹模块的流程图如下图3.6所示,当按下转接板的按钮时,系统开始初始化,小车开始在黑色引导线上移动,当左循迹模块检测到是白色,右循迹模块检测到的也是白色,小车继续根据轨迹行驶;当左循迹模块检测到是黑色,右循迹模块检测到的是白色,小车会根据检测到的信号向右行驶;当左循迹模块检测到是白色,右循迹模块检测到的是黑色,小车会根据检测到的信号向左行驶。

图3.5 循迹模块软件设计图

4 仿真与调试

4.1 系统硬件调试

在调试的过程中,小车循迹出现了在地面上不走的情况,于是检查了两路循迹探头的发射和接收有没有焊接好,然后调节了上面的电位器,增加它的灵敏度,这样做了之后还是不好使,于是检查了红外发射二极管有没有红外光发出,打开手电筒功能对着红外发射二极管,看有没有红外光发出,发现没有红外光发出,找了商家重新更换了循迹探头,最后实现了功能。
在调试循迹功能的过程中,发现小车在规定的轨道上可以进行移动,但是拐弯的时候,会跑出轨道,检查程序,程序没有错误,于是把目标转到循迹探头灵敏度,原因是灵敏度太强了,于是看哪边先出的轨道,就把对应的那个循迹探头上面的电位器往顺时针方向调节降低灵敏度,最后实现功能。

4.2 系统软件调试

在软件调试过程中,点击编译按键,若文件在系统中正常运行,会在下面的应用窗口上显示提示信息。若显示的提示的信息中有“error”,就要根据提示找到错误程序并且进行改正,无提示错误信息的图如下4.1所示。

图4.1 无错误信息图
在程序编译无错误之后,烧录程序到单片机中,开始验证系统功能是否满足要求,如果功能有问题,需要继续调试程序,反复进行,直到所有功能都满足为止。
但在实际调试过程中,首次对程序进行编译时提示窗口提示错误,经过检查发现在程序句中无分号以及少符号。

4.3实物测试

根据本设计需求,对实物功能进行逐一测试:
(1)当按钮启动的同时,小车可以在平面上进行运动;
(2)小车可以避开障碍物,选择一条无碰路径,遇见障碍物就停止运动;
(3)小车能够将控制器发出的命令以及采集出来视频与控制器连接;
(4)PC或手机可以清晰显示小车采集到的视频数据以及可以显示各种命令。
所有预设功能均以实现,实物展示图如图4.2所示。

图4.2 实物展示图

5 结论

本设计是以STM32为核心,在外围加电机驱动模块,循迹模块,红外模块,超声波模块,WIFI模块,使其构成一个基于单片机的视觉导航小车。WIFI模块的稳定性以及在手机上的操作灵敏,使得这次方案设计达到了最开始的设计期望。
论文首先分析了关于智能车的国内外相关现状,其次提出了视觉导航小车的设计方案以及总体思路,然后进行了单片机的选型以及对各种传感器进行了简单的介绍和说明。
本设计经过了硬件以及软件的测试,各部分均达到预期功能:当按钮启动的同时,小车可以在平面上进行运动以及随意变速;小车可以避开障碍物,选择一条无碰路径,遇见障碍物就停止运动;小车能够将控制器发出的命令以及采集出来视频与控制器连接;PC或手机可以清晰显示小车采集到的视频数据以及可以显示各种命令。本设计通过7个模块,达到了这些目的,并且首次通过自己的努力完成了以上的功能。
在设计出这个视觉导航小车之后,各个模块的功能需求很实用并且在WIFI信号稳定正常的情况下,手机或者PC端能够实现与小车的实时控制以及视频监测,根据这个功能,人类可以利用它进不能进入的地方进行勘测。

作者:QQ2193276455

物联沃分享整理
物联沃-IOTWORD物联网 » 基于单片机的视觉导航小车设计

发表回复