论文部分内容阅读
摘要:提出了一种基于STM32嵌入式微处理器的WIFI智能小车设计方案。该设计以uCOS-II为操作系统,利用PC端的WIFI串口通信向小车发送指令,STM32主控制器根据接收到的指令对小车进行操作,从而达到PC端通过无线网络来控制小车状态并且能够显示小车传输图像的目的,同时实现了红外避障及温度采集显示功能。测试表明该系统成本低,设计合理,能够实现远程无线控制,为未来的智能家居及无人探测提供了研究方向。
关键词: STM32微处理器;WIFI小车;嵌入式;串口通信;无线控制
Abstract: The WIFI smart car design scheme based on STM32 embedded microprocessor is proposed. The design uses uCOS-II as the operating system, and uses the WIFI serial communication on the PC to send instructions to the car. The STM32 main controller operates the car according to the received instructions, so that the PC terminal controls the state of the car through the wireless network and can display the car transmission image. At the same time the infrared obstacle avoidance and temperature collection and display functions is realized. Tests show that the system has low cost, reasonable design, and can realize remote wireless control, providing a research direction for future smart home and unmanned detection.
Key words: STM32 microprocessor; WIFI car; embedded; serial communication; wireless control
1 引言
近幾年,人们的生活正在逐渐向智能化转变,嵌入式技术及一些新技术的快速发展,使人们生活和工作变得越来越智能化[1]。
智能小车可以在所处的环境中通过传感器自行进行判断和分析,在无人操作的情况下自主完成任务[2]。本文设计的智能小车通过WIFI实现远程无线控制,同时具有避障及温度采集功能,实现了小车的智能化,可以作为研究智能汽车或者其他移动机器人的基础模型,具有较大的研究空间[3]。
2 设计方案
2.1 系统功能定义
本设计能够实现无线控制,避障,循迹等功能,由硬件,软件,无线传输三大部分组成,现对以上三部分功能进行具体的叙述[4]。
1)硬件部分:输出PWM控制电机;检测障碍物,检测距离为10cm;串口通信,需要通过串口对智能小车进行调试,串口波特率设置为115200;对接收到的命令进行处理和判断;通过温度传感器检测环境温度;连接WIFI模块及控制WIFI模块;通过uCOS-II实现多个任务同时执行。
2)软件部分:操作界面功能;通过SOCKET编程实现联网,可以连接到WIFI模块;接收STM32开发板传输的数据和发送指令数据;利用摄像头进行拍照,在小车行驶过程中接收小车传输的图片信息并显示;实现小车的模式切换,模式1为无线控制行驶模式,模式2为自动行驶模式。
3) WIFI通信功能:与PC端进行联网连接;实现PC与单片机之间的数据交换功能。
2.2 系统方案设计
本设计采用STM32F103开发板,与51单片机相比,STM32可以搭载小型系统且速度更快,设计方案如图1所示。STM32开发板作为本设计的控制中心,使用PWM输出波形驱动电机转动,通过内部定时器达到控制方向的效果,同时将接收到的数据及命令经过处理器判断和计算从IO口输出。本设计利用温度传感器采集温度信息通过串口传输到WIFI模块,在PC端显示;利用红外传感器实现探测障碍和循迹功能。WIFI模块是PC端和开发板进行数据交互的媒介,PC端的操作指令由WIFI模块进行发送,开发板和PC端之间设置了相应的数据协议,由此判断接收到的是哪种类型的命令,小车根据命令执行相应的操作。
3 硬件设计
3.1 WIFI通信电路设计
WIFI通信模块作为STM32和PC端通信的中介,两端都通过WIFI模块进行数据交互,该模块选用ESP8266芯片[5],其特点就是如果断开连接,再次连接,模块会连接到最近一次连接过的热点[6]。
ESP8266支持三种模式,分别为STA模式,AP模式,STA AP模式。本设计使用AP模式,使其他网络能够连接到ESP8266。本设计使用ESP8266的AP模式,使其他网络能够连接到ESP8266,与STM32的引脚连接如表1所示。
3.2 摄像头电路设计
摄像头模块选用OV7670,摄像头模块采集的光信号通过内部转换变为RGB信号,屏幕显示的为色位信息[7-8]。摄像头模块电路如图2所示,摄像头模块数据需要7个引脚进行传输,传输协议为SCCB[9]。
3.3 定时器
STM32中的通用定时器是由16位的自动装载计数器构成,通用定时器包括TIM2、TIM3、TIM4和TIM5。定时器可以实现基本定时、输出4路PWM、输入捕获等功能。本设计采用STM32F103开发板,该开发板中除了定时器6和定时器7都可以产生PWM输出,本设计使用的定时器为TIM3。 3.4 电机驱动
为了实现PC端能够控制小车的速度以及满足直流电机的驱动电压,本设计选用L298N电机驱动模块给直流电机供电[10]。
电机状态与STM32输入如表2。电机驱动共有两个电源输入接口,一个是5V,另一个是12V,在使用时12V的接口输入电压要大于7V,5V的接口就可以向单片机供电。
4 软件设计
软件设计部分包含硬件所需程序和PC端程序,设计框图如图3所示。PC端的软件部分主要是实现控制界面,连接网络,显示图像功能。控制界面包括按键和信息接收区,按键用来向STM32发送数据和命令,并控制PC端程序;信息接收区是接收STM32发送的部分信息进行显示,如温度可以在信息接收区进行显示,图像显示部分显示从STM32接收到的图像。
4.1 硬件功能程序设计
1)uCOS系统程序
本设计选择uCOS-II作为处理器的内部操作系统,该操作系统满足本设计的多任务处理要求,硬件部分所有程序都是在此操作系统内部编写[11]。
操作系统部分流程图如图4所示,在main函数内部完成各个模块的初始化同时创建起始任务。在执行完main函数之后开始执行起始任务函数,在起始任务函数里面创建多个任务。当创建完任务之后退出起始任务,之后开始执行创建的多个任务。
2) WIFI模块程序
WIFI模块一直监听是否有数据发送到WIFI模块,当接收到从PC发送的信息后,还需要对接收到的数据进行判断或者处理,使STM32能够识别命令并进行相应的操作。WIFI模块软件流程图如图5所示。
4.2 PC端软件程序设计
PC端软件程序部分有界面程序、网络连接程序及图像显示程序三部分。PC端软件编译工具为VC ,使用C 语言编写。界面部分需要处理多个任务,因此需要多线程来处理多个操作。软件流程图如图6所示。
PC端软件程序部分的核心是网络连接和数据接收发送程序,这两部分程序负责PC与STM32之间的数据交互。在VC 中使用对话框创建整个工程,当按下对话框界面中的一些按键时,对话框会做出响应,这些按键实现的功能都是独立的。接收图片信息和键盘按键信息的任务要在任何时刻都能不受影响地执行,因此需要创建多线程。
PC端界面如图7所示,包含网络、图片显示、指令三部分。网络连接部分,控制PC和WIFI模块ESP8266的连接;图片显示部分显示摄像头拍摄的图片,初始图片为PC中的图片;指令部分可以向STM32单片机发送命令,包括拍照命令,采集温度命令,变换速度命令,改变小车模式的命令。
5. 测试结果
智能小车启动前,首先WIFI模块与PC端需要连接成功,进行正常的数据传输,图8所示为WIFI与PC正常发送数据的结果。
为了实现PC端无线控制小车,PC端和小车必须处于同一个网络中。如图9所示,PC端和小车的WIFI模块连接同一网络,服务器和客户端界面显示连接成功。
PC端与小车的指令发送结果如图10所示,当PC和WIFI模块连接之后,只要小车处于模式1时按下键盘方向键,指令数据就会发送到开发板,小车执行相应的操作(前进,后退,左转,右转,停止)。
图11所示为红外避障结果,红外模块指示灯亮表示前方有障碍物,灯灭表示无障碍物或者前方为黑色物体,实现有效避障。图12所示为温度采集结果,能够正确显示周围环境的温度。
6 结论
本设计基于STM32,以UCOS-II为操作系统,通过对硬件和软件部分的程序编写以及外部器件选择和连接,实现了具有串口通信功能,能够通过PC端键盘无线控制小车行进方向的WIFI智能小车。智能化是未来生活和工作的一种必然趋势,本设计的实现为未来的智能家居及无人探测提供了研究方向。
参考文献:
[1] 秦畅,孙艳龙.论智能机器人的发展和未来[J].农家参谋,2019(11):198.
[2] 李婕.基于STM32的无线视频监控智能小车设计[D].兰州:兰州理工大学,2014.
[3] 刘雪飞,李勇.基于STM32单片机的智能小车控制系统[J].电子世界,2020(19):164-165.
[4] 周东瑶,师文庆,黄江,等.基于STM32的WiFi智能小車控制系统设计[J].装备制造技术,2019(8):58-61,83.
[5] 王立人,朱彦宇,黄洁,等.具有WiFi通讯功能的智能小车控制系统研究[J].无线互联科技,2014(6):98-99,131.
[6] 张滔.基于STM32单片机DMA机制的多通道数据采集[J].黑龙江科技信息,2013(30):27.
[7] 陶杰,王欣.基于STM32F407和OV7670的低端视频监控系统[J].单片机与嵌入式系统应用,2014,14(3):60-63.
[8] 李慧敏,樊记明,杨笑.基于STM32和OV7670的图像采集与显示系统设计[J].传感器与微系统,2016,35(9):114-117.
[9] 杨会建,杨阳,张环,等.基于SCCB总线配置的FPGA视频采集系统设计[J].长春理工大学学报(自然科学版),2015,38(4):97-100.
[10] 殷留留,韩森,王芳,等.基于L298N的直流电机调速系统的设计与应用[J].信息技术,2017,41(6):104-106,111.
[11] 陶锐,李洋,曹海燕.基于ARM7内核的UCOS-Ⅱ移植研究[J].企业技术开发,2012,31(5):68,74.
【通联编辑:梁书】
关键词: STM32微处理器;WIFI小车;嵌入式;串口通信;无线控制
Abstract: The WIFI smart car design scheme based on STM32 embedded microprocessor is proposed. The design uses uCOS-II as the operating system, and uses the WIFI serial communication on the PC to send instructions to the car. The STM32 main controller operates the car according to the received instructions, so that the PC terminal controls the state of the car through the wireless network and can display the car transmission image. At the same time the infrared obstacle avoidance and temperature collection and display functions is realized. Tests show that the system has low cost, reasonable design, and can realize remote wireless control, providing a research direction for future smart home and unmanned detection.
Key words: STM32 microprocessor; WIFI car; embedded; serial communication; wireless control
1 引言
近幾年,人们的生活正在逐渐向智能化转变,嵌入式技术及一些新技术的快速发展,使人们生活和工作变得越来越智能化[1]。
智能小车可以在所处的环境中通过传感器自行进行判断和分析,在无人操作的情况下自主完成任务[2]。本文设计的智能小车通过WIFI实现远程无线控制,同时具有避障及温度采集功能,实现了小车的智能化,可以作为研究智能汽车或者其他移动机器人的基础模型,具有较大的研究空间[3]。
2 设计方案
2.1 系统功能定义
本设计能够实现无线控制,避障,循迹等功能,由硬件,软件,无线传输三大部分组成,现对以上三部分功能进行具体的叙述[4]。
1)硬件部分:输出PWM控制电机;检测障碍物,检测距离为10cm;串口通信,需要通过串口对智能小车进行调试,串口波特率设置为115200;对接收到的命令进行处理和判断;通过温度传感器检测环境温度;连接WIFI模块及控制WIFI模块;通过uCOS-II实现多个任务同时执行。
2)软件部分:操作界面功能;通过SOCKET编程实现联网,可以连接到WIFI模块;接收STM32开发板传输的数据和发送指令数据;利用摄像头进行拍照,在小车行驶过程中接收小车传输的图片信息并显示;实现小车的模式切换,模式1为无线控制行驶模式,模式2为自动行驶模式。
3) WIFI通信功能:与PC端进行联网连接;实现PC与单片机之间的数据交换功能。
2.2 系统方案设计
本设计采用STM32F103开发板,与51单片机相比,STM32可以搭载小型系统且速度更快,设计方案如图1所示。STM32开发板作为本设计的控制中心,使用PWM输出波形驱动电机转动,通过内部定时器达到控制方向的效果,同时将接收到的数据及命令经过处理器判断和计算从IO口输出。本设计利用温度传感器采集温度信息通过串口传输到WIFI模块,在PC端显示;利用红外传感器实现探测障碍和循迹功能。WIFI模块是PC端和开发板进行数据交互的媒介,PC端的操作指令由WIFI模块进行发送,开发板和PC端之间设置了相应的数据协议,由此判断接收到的是哪种类型的命令,小车根据命令执行相应的操作。
3 硬件设计
3.1 WIFI通信电路设计
WIFI通信模块作为STM32和PC端通信的中介,两端都通过WIFI模块进行数据交互,该模块选用ESP8266芯片[5],其特点就是如果断开连接,再次连接,模块会连接到最近一次连接过的热点[6]。
ESP8266支持三种模式,分别为STA模式,AP模式,STA AP模式。本设计使用AP模式,使其他网络能够连接到ESP8266。本设计使用ESP8266的AP模式,使其他网络能够连接到ESP8266,与STM32的引脚连接如表1所示。
3.2 摄像头电路设计
摄像头模块选用OV7670,摄像头模块采集的光信号通过内部转换变为RGB信号,屏幕显示的为色位信息[7-8]。摄像头模块电路如图2所示,摄像头模块数据需要7个引脚进行传输,传输协议为SCCB[9]。
3.3 定时器
STM32中的通用定时器是由16位的自动装载计数器构成,通用定时器包括TIM2、TIM3、TIM4和TIM5。定时器可以实现基本定时、输出4路PWM、输入捕获等功能。本设计采用STM32F103开发板,该开发板中除了定时器6和定时器7都可以产生PWM输出,本设计使用的定时器为TIM3。 3.4 电机驱动
为了实现PC端能够控制小车的速度以及满足直流电机的驱动电压,本设计选用L298N电机驱动模块给直流电机供电[10]。
电机状态与STM32输入如表2。电机驱动共有两个电源输入接口,一个是5V,另一个是12V,在使用时12V的接口输入电压要大于7V,5V的接口就可以向单片机供电。
4 软件设计
软件设计部分包含硬件所需程序和PC端程序,设计框图如图3所示。PC端的软件部分主要是实现控制界面,连接网络,显示图像功能。控制界面包括按键和信息接收区,按键用来向STM32发送数据和命令,并控制PC端程序;信息接收区是接收STM32发送的部分信息进行显示,如温度可以在信息接收区进行显示,图像显示部分显示从STM32接收到的图像。
4.1 硬件功能程序设计
1)uCOS系统程序
本设计选择uCOS-II作为处理器的内部操作系统,该操作系统满足本设计的多任务处理要求,硬件部分所有程序都是在此操作系统内部编写[11]。
操作系统部分流程图如图4所示,在main函数内部完成各个模块的初始化同时创建起始任务。在执行完main函数之后开始执行起始任务函数,在起始任务函数里面创建多个任务。当创建完任务之后退出起始任务,之后开始执行创建的多个任务。
2) WIFI模块程序
WIFI模块一直监听是否有数据发送到WIFI模块,当接收到从PC发送的信息后,还需要对接收到的数据进行判断或者处理,使STM32能够识别命令并进行相应的操作。WIFI模块软件流程图如图5所示。
4.2 PC端软件程序设计
PC端软件程序部分有界面程序、网络连接程序及图像显示程序三部分。PC端软件编译工具为VC ,使用C 语言编写。界面部分需要处理多个任务,因此需要多线程来处理多个操作。软件流程图如图6所示。
PC端软件程序部分的核心是网络连接和数据接收发送程序,这两部分程序负责PC与STM32之间的数据交互。在VC 中使用对话框创建整个工程,当按下对话框界面中的一些按键时,对话框会做出响应,这些按键实现的功能都是独立的。接收图片信息和键盘按键信息的任务要在任何时刻都能不受影响地执行,因此需要创建多线程。
PC端界面如图7所示,包含网络、图片显示、指令三部分。网络连接部分,控制PC和WIFI模块ESP8266的连接;图片显示部分显示摄像头拍摄的图片,初始图片为PC中的图片;指令部分可以向STM32单片机发送命令,包括拍照命令,采集温度命令,变换速度命令,改变小车模式的命令。
5. 测试结果
智能小车启动前,首先WIFI模块与PC端需要连接成功,进行正常的数据传输,图8所示为WIFI与PC正常发送数据的结果。
为了实现PC端无线控制小车,PC端和小车必须处于同一个网络中。如图9所示,PC端和小车的WIFI模块连接同一网络,服务器和客户端界面显示连接成功。
PC端与小车的指令发送结果如图10所示,当PC和WIFI模块连接之后,只要小车处于模式1时按下键盘方向键,指令数据就会发送到开发板,小车执行相应的操作(前进,后退,左转,右转,停止)。
图11所示为红外避障结果,红外模块指示灯亮表示前方有障碍物,灯灭表示无障碍物或者前方为黑色物体,实现有效避障。图12所示为温度采集结果,能够正确显示周围环境的温度。
6 结论
本设计基于STM32,以UCOS-II为操作系统,通过对硬件和软件部分的程序编写以及外部器件选择和连接,实现了具有串口通信功能,能够通过PC端键盘无线控制小车行进方向的WIFI智能小车。智能化是未来生活和工作的一种必然趋势,本设计的实现为未来的智能家居及无人探测提供了研究方向。
参考文献:
[1] 秦畅,孙艳龙.论智能机器人的发展和未来[J].农家参谋,2019(11):198.
[2] 李婕.基于STM32的无线视频监控智能小车设计[D].兰州:兰州理工大学,2014.
[3] 刘雪飞,李勇.基于STM32单片机的智能小车控制系统[J].电子世界,2020(19):164-165.
[4] 周东瑶,师文庆,黄江,等.基于STM32的WiFi智能小車控制系统设计[J].装备制造技术,2019(8):58-61,83.
[5] 王立人,朱彦宇,黄洁,等.具有WiFi通讯功能的智能小车控制系统研究[J].无线互联科技,2014(6):98-99,131.
[6] 张滔.基于STM32单片机DMA机制的多通道数据采集[J].黑龙江科技信息,2013(30):27.
[7] 陶杰,王欣.基于STM32F407和OV7670的低端视频监控系统[J].单片机与嵌入式系统应用,2014,14(3):60-63.
[8] 李慧敏,樊记明,杨笑.基于STM32和OV7670的图像采集与显示系统设计[J].传感器与微系统,2016,35(9):114-117.
[9] 杨会建,杨阳,张环,等.基于SCCB总线配置的FPGA视频采集系统设计[J].长春理工大学学报(自然科学版),2015,38(4):97-100.
[10] 殷留留,韩森,王芳,等.基于L298N的直流电机调速系统的设计与应用[J].信息技术,2017,41(6):104-106,111.
[11] 陶锐,李洋,曹海燕.基于ARM7内核的UCOS-Ⅱ移植研究[J].企业技术开发,2012,31(5):68,74.
【通联编辑:梁书】