【《基于STM32的无线感控小车方案设计实现》15000字(论文)】_第1页
【《基于STM32的无线感控小车方案设计实现》15000字(论文)】_第2页
【《基于STM32的无线感控小车方案设计实现》15000字(论文)】_第3页
【《基于STM32的无线感控小车方案设计实现》15000字(论文)】_第4页
【《基于STM32的无线感控小车方案设计实现》15000字(论文)】_第5页
已阅读5页,还剩24页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第页共27页绪论无线感控小车研究背景和意义无线通信技术日臻成熟,无线感控小车的技术也得到了快速发展,目前市面上已经涌现出各种各样的多功能智能无线小车,其中通过WiFi技术通信的无线感控小车也越来越得到各个行业上的广泛应用。无线感控小车,通过外部传感器不断的感知小车外部环境信息,在有障碍物的复杂环境中,实现远程灵活遥控运动的同时也能完成自主规避障碍物运动,从而完成在各个场景中的工作。无线感控小车系统中融合了传感器、信息融合、通信接口、远程智能控制以及自动控制等一系列高新技术REF_Ref8759\r\h[1]。物联网技术的快速发展,使得无线感控小车与物联网技术相结合,能够实现远程无人控制的功能。无线感控小车具有自动避障、可随机规划路径运动和远程可控行驶等功能。无线感控小车在各个行业都有很好的应用价值。例如,在日常生活中,无线感控小车可以像训练有素的导盲犬一样给盲人指引正确的行走路线。在军事方面,无线感控小车可以代替军人们在危险区域完成排雷和侦察任务。在科学研究中,无线感控小车可以在外星球上完成探索和返回照片的任务。此外,它还可以帮助人们在复杂的环境中执行设备例行检查和货物处理等任务REF_Ref9478\r\h[2]。本文设计的基于WiFi的无线感控小车,相比于传统的无线智能小车的基础上增加了WiFi视频监控等诸多功能。该款无线感控小车通过WiFi的通信方式,与计算机上的的远程控制程序进行实时通信,并且实时感知小车传感器信息并对小车进行运动控制,具备有随机规划路径运动、障碍物规避等功能。远程控制小车的上位机中能实时看到安装在小车上的摄像头传回的视频画面,这样就能在上位机中实时地监控小车的行驶,能够方便地去检测一些人类难以进入的环境。小车在运动过程中遇到障碍物时,通过提前设定好的算法实现自动规避障碍物功能。该项技术可以运用在物流中转站中的智能搬运小车,也可以运用在智能家居中,所以有很高的应用价值。无线感控小车国内外发展及研究现状对于智能小车的研究,最早是在上世纪50年代美国那边开始研究的。全球首个自动控车系统是由美国巴雷特电子公司研发出来的,也是世界上第一个可以以固定路线运行的智能小车系统,它具有智能小车最基本的功能REF_Ref12453\r\h[3]。这一革命性的发明拉开了属于智能小车时代的序幕,智能小车系统的研究在发达国家中逐渐呈现蓬勃发展的趋势。国外非常多的大型科技企业公司、研究所纷纷在智能小车领域的研发中投入了大量的财力、精力和人力。其中最具有代表性的有微软、谷歌、以及IBM这三大巨头公司,他们近几年来已连续推出自己公司研发的新型智能小车REF_Ref14830\r\h[4],具有多种功能,其中包括有远程操控、小车联网、视频监控、基于机器视觉的障碍物规避、自主导航以及自主行进搬运等功能。相比于国外,我国是这近十几年来才真正开始研究智能小车,但我国与国外的差距也在不断地减少。在我国,目前主要是研究所、高等高校等具有丰富资源的机构或者实验室在研究智能小车,主要以清华大学、北京理工、中科院自动化研究所、国防科技大学、电子科技大学为代表。目前阶段,智能小车的产业已得到国家政府部门的高度重视且制定了一系列政策来大力扶持这一行业。通过对国外相对成熟的智能小车产品进行研究,国内的技术也已经取得了较多的突破性进展REF_Ref14830\r\h[4]。论文主要内容及章节安排本论文的研究目的是以STM32为基础设计的多功能无线感控小车,电脑端的远程控制程序通过WiFi与小车进行通信。无线感控小车能远程操控、自主避障、随机规划行走路径、实时采集小车周围的图像并在终端显示。无线感控小车将采集到的数据信息通过WiFi发送到终端的上位机,用户在终端通过操控界面对无线感控小车发送控制指令信息从而对小车进行灵活的控制。论文各章节主要内容如下:阐述了论文的研究背景和意义,国内外对无线智能小车的系统的研究及发展现状。阐述了无线感控小车系统的总体设计,其中包括系统的总体设计思路和设计方案,另外也包括了方案的可行性分析。提出了无线感控小车系统的硬件设计方案,建立硬件总体框架,并对模块选型进行了分析。阐述了无线感控小车的功能设计与实现方法,说明了无线感控小车所有设计的功能与其相应的实现方法。阐述了无线感控小车系统的软件设计,其中包括C#上位机应用程序的设计和单片机硬件驱动程序的设计。系统测试。测试的主要内容包括硬件测试、软件测试、通信时延测试等对小车系统的多方面测试。对本论文的工作进行总结以及对后续工作的展望。无线感控小车系统的总体设计无线感控小车系统的总体设计思路本论文的主要设计思路是将STM32单片机选为无线感控小车的核心控制器,对小车的减速直流电机进行控制,从而对小车的行驶状况进行控制。在小车车模的最前端安装超声波模块,通过超声波实时测距来判断小车正前方是否有障碍物,从而判断小车当前是否需要避障;将WiFi模块通过串口与STM32进行通信,进而让小车能通过WiFi的方式与终端的上位机进行通信;在小车上安装一个网络摄像头进行图像采集,并通过WiFi的方式实时将图像信息传给上位机,最终能够让用户在计算机上发送控制指令,实现远程灵活的控制小车。本论文设计的无线感控小车预期能实现的功能如下:1、运动功能:包括无线感控小车的前进、后退、右转、左转以及电机调速等关键的基础运动功能;2、自主避障功能:无线感控小车在遇到障碍物时能进行有效规避;3、随机规划路径功能:在上位机的画板中绘制小车的行走路径,之后将路线信息发送给小车,小车随后做出与绘制路径相应的运动;4、无线通信功能:终端的上位机与无线感控小车通过WiFi无线信号进行通信,对小车进行远程实时控制和图像画面显示。无线感控小车系统的总体设计方案无线感控小车系统的总体设计主要包括两个部分:硬件设计部分和软件设计部分。硬件设计部分的核心是选用一个性能满足应用需要的单片机—STM32,然后在使用STM32最小系统板为基础下添加一些必要的功能模块,其中包括有电机驱动模块、WiFi模块、超声波模块等。STM32通过对电机驱动模块进行控制从而对电机进行正反转以及调速的控制;STM32通过自身串口与WiFi模块进行通信,从而获取到远端控制程序发送过来的数据信息;超声波模块与STM32的输入捕获通道相连,不断进行测距从而判断小车与前方障碍物的距离;网络摄像头则利用树莓派ZEROW与USB摄像头进行搭建。软件设计部分包括STM32的硬件驱动程序和终端上的C#上位机的软件设计。STM32硬件驱动程序的核心是将从WiFi模块得到的上位机发来的数据进行相应解析,从而得到正确的控制指令,进而驱动小车的直流电机;C#上位机的软件设计核心是在一个局域网内开启一个TCP服务器让小车上的WiFi模块作为客户端进行通信连接,从而实时接收小车端发送过来的数据,并在控制界面处做相应的显示。上位机接收数据的同时也在实时检测当前是否有键盘按键按下,若有则将相应的控制数据发送给小车端。无线感控小车的总体设计框图如图2.1。图STYLEREF1\s2.SEQ图\*ARABIC\s11无线感控小车总体设计框图方案的可行性分析本设计选用的主控制器是目前市场上比较主流的主处理器—STM32F103系列,其性价比明显优越于同价位的ARM系列的处理器。此控制器采用的是高度集成的结构方式,很大程度上的减少了很多不需要的外设,提高芯片的整体性能的同时也减少了功耗。电机驱动模块使用的芯片是L298N,使用的控制信号分别是TTL和CMOS逻辑电平,以对外部的电阻进行检测并反馈控制电路的变化量,小车电机的速度可由PWM脉冲编码信号对其控制。网络摄像头是使用树莓派ZEROW和一个USB摄像头组合起来进行搭建的。树莓派ZEROW搭载博通BCM2853芯片,且板载WiFi芯片,具有更小尺寸,低功耗,发热量低等多个优点。能直接与USB摄像头相连接,即插即用,使用简单。STM32的程序是用KeiluVision5软件编写的,使用的编程语言为C语言,且该开发软件具有在线仿真与调试功能,还有一键下载程序到单片机的功能,所以很大程度上提高了我们的开发效率;终端的上位机是在VisualStudio平台上开发的,使用的编程语言是C#,在C#的winform程序设计中,上位机的UI界面开发相对比较方便,直接在工具栏中拖动需要使用的控件即可,这也极大的提高了终端上位机的开发效率。无线感控小车的设计主要包括有硬件和软件系统的设计。在硬件上,用的基本都是市场上现成的模块,然后再将每个模块搭建在小车上,这样能较大的减小了因模块硬件设计的问题导致小车不能正常工作的几率;软件设计主要是STM32单片机硬件驱动程序设计和终端C#上位机的程序设计。硬件驱动程序设计主要是对整个无线感控小车系统中各个模块设计的相应的驱动程序;上位机的程序设计是让用户可以通过控制界面来远程控制小车以及实时显示小车的实况数据和视频画面信息。无线感控小车系统的硬件设计系统硬件设计无线感控小车硬件结构设计框图如图3.1。图STYLEREF1\s3.SEQ图\*ARABIC\s11无线感控小车硬件结构设计框图无线感控小车硬件系统各模块主要功能如下:小车整体是由3节锂电池串联后进行供电的,电池型号为18650,容量为2000mAh。每节电池充满电后电压为4.1V左右,因此串联的供电输出电压为12.3V左右。WiFi通信模块主要的工作是不断地接收上位机发送过来的数据,然后将这些数据通过串口再发送给STM32控制器进行解析。WiFi模块在整个小车系统中起到了通信桥梁的作用。JTAG调试下载电路的作用是将STM32的下载引脚引出来,以便于在下载程序的时候可以使用J-Link高速下载器进行下载和在线调试。电机驱动模块的主要作用是控制小车电机的正反转、停止和调速,其次就是将3节锂电池串联后的输出电压12.3V通过模块上的线性稳压芯片降压到5V,给STM32最小系统板和小车上的其他模块进行供电。超声波模块的作用是进行测距,不断测量小车与前方障碍物之间的距离,以便于让STM32控制器来判断小车当前是否需要进行避障控制。LCD串口彩屏的主要作用是将用户输入的服务器的IP地址和端口号发送给STM32控制器,从而控制WiFi模块连接到终端上位机开启的TCP服务器。因为每次在一个局域网内开启一个TCP服务器时IP地址基本都会发生改变,所以WiFi模块每次连接服务器时都需要重新设置IP地址;同时串口屏也实时显示当前锂电池剩余电量。系统硬件模块选型微处理器模块选型本论文设计的无线感控小车选用的微处理器模块是STM32F103C8T6最小系统板。此模块的芯片是Cortex-M3的内核,采用了与系统相统一的嵌入式设计,这种结构使得系统具有较低的功耗、性能高和成本低等显著优点,而且系统的集成度大大提升,降低了开发难度REF_Ref14830\r\h[4]。该芯片资源丰富,有3个串口,且内置有多个ADC通道,还有多路PWM通道。在本设计中,使用的是现成的STM32最小系统板,而不是用单独一个芯片再去设计STM32最小系统电路,因此在节省了开发时间的同时也能更好的保证小车系统的稳定运行。因为近期国内ST系列的芯片在大幅度的涨价,导致了现如今STM32F103C8T6芯片的价格已经是去年的30倍,因此直接用现成的最小系统板模块能很大程度上的减少成本。STM32F103C8T6最小系统板的实物图如图3.2。图STYLEREF1\s3.SEQ图\*ARABIC\s12STM32F103C8T6最小系统板电机驱动模块选型本设计选用的电机驱动模块为L298N电机驱动模块,是目前运用在智能小车中较为常用的电机驱动模块。此模块使用的驱动芯片是ST公司的L298N芯片,具有驱动能力强,发热量低等特点,且该模块上还在驱动芯片上安装了一个较大体积的散热片,这样能为芯片起到很好的散热作用,保证了芯片在工作过程中不会因为自身温度过高而导致芯片烧坏的现象;该模块上还有线性稳压芯片M7805与其外围电路,可以对锂电池输入的12V电压进行降压,且其输出的电流最大能达500mA。将输入电压降压到5V后以便于给STM32最小系统板和无线感控小车上的其他模块进行供电。L298N电机驱动模块的实物图如图3.3。图STYLEREF1\s3.SEQ图\*ARABIC\s13L298N电机驱动模块WiFi通信模块选型在本设计中的WiFi通信模块选用的是正点原子公司的ATK-ESP8266串口转WIFI模块,该模块采用串口与MCU进行通信,且还内置了TCP/IP通信协议栈,能实现MCU串口与WiFi之间的转换。模块支持串口转WiFi接入、串口转AP与WiFi接入+WiFi热点模式,因此能够快速构建串口-WiFi数据的传输方案。在本设计中使用的是模块的WiFiSTA接入模式。ATK-ESP8266串口转WiFi模块的实物图如图3.4。图STYLEREF1\s3.SEQ图\*ARABIC\s14ATK-ESP8266串口转WiFi模块测量锂电池电压的ADC电路设计整个无线感控小车系统都是由3节18650锂电池串联后进行供电的,充满电时的电压是12.3V左右。为了让MCU计算出锂电池当前的剩余电量,就必须进行ADC转换。在本设计中,ADC使用的是STM32F103C8T6内置的ADC通道,但输入的模拟电压不能超过3.3V,若超过则会烧坏芯片的ADC通道。因为要测量的锂电池电压最大为12.3V左右,远远超过了3.3V,因此要用电阻进行串联分压。本设计用了2个电阻进行串联分压,阻值分别是3K和1K,再用STM32的ADC去测量阻值为1K的电阻两端的电压即可计算出锂电池当前的电压,最后推算出锂电池当前的剩余电量。STM32的ADC最大承受的输入电流为50mA,由欧姆定律I=U/R可算出当锂电池满电时ADC电路中的电流为3mA左右,因此不会烧坏STM32芯片。测量锂电池总电压的ADC电路如图3.5。图STYLEREF1\s3.SEQ图\*ARABIC\s15ADC采样电路网络摄像功能集成本次设计的无线感控小车加上了网络摄像的功能,而其中网络摄像头是使用树莓派ZREOW和一个USB摄像头进行搭建的。选用树莓派ZREOW搭建摄像头能保证传输视频的质量,体积小巧,功耗低且成本不高。在无线感控小车系统中使用树莓派ZREOW还可以增加了整个系统功能的可扩展性,方便日后增加上其他扩展功能,如目标跟踪、图像识别以及自动行驶等扩展功能。树莓派ZEROW的实物图如图3.6。图STYLEREF1\s3.SEQ图\*ARABIC\s16树莓派ZEROW无线感控小车的功能设计与实现远程遥控小车运动的功能设计无线感控小车可以通过终端上上位机进行远程遥控控制,通信方式为WiFi通信。上位机是用C#编程语言开发的,在上位机的程序编写中,将一些特定的键盘按键的按下事件编写好之后,当这些按键被按下时就会触发这些事件。在这些按下事件中,都编写了相对应的发送字符串的指令,所以说当这些按键被按下时上位机就会通过WiFi信号发送相对应的字符串给小车,小车端接收到这些字符串后进行相应的处理,最终实现上位机控制小车运动的功能;总的来说,上位机程序在与小车通过WiFi进行通信连接后,就会不断的检测当前是否有键盘按键被按下,若有相应的按键按下就会发送控制小车运动的字符串信息给小车的MCU,每种字符串信息代表一种运动方式,MCU接收数据做处理之后再控制小车做相应的运动。值得一提的是,MCU每次接收数据之后都要做清空串口接收缓冲区的处理,因为不做清空缓存的处理的话,MCU会将上次接收到的字符串信息作为当前的控制信息,这样小车则会失控,不会按照用户的控制意愿进行运动。每次小车接收到正确的控制信息后都会给上位机发送已接收到控制指令的信息,这样就能在上位机中实时观察小车是否正常运行,而且上位机中每次发送和接收数据都会显示时间戳,且精确到毫秒级,这样就能方便计算出上位机与小车的通信时延是多少。因为本次设计的无线感控小车车模用的是安装麦克纳姆轮的车模,因此小车可以做多个方向的运动,比如向右平移。上位机控制小车运动的字符串信息与小车运动方式的对应关系如下表4.1。表STYLEREF1\s4.SEQ表\*ARABIC\s11字符串信息与小车运动方式的对应关系字符串信息小车运动方式up前进down后退left左转right右转stop停止PR向右平移PL向左平移自动规避障碍物的功能设计在本设计在中,无线感控小车不仅具有远程手动遥控的模式,还具有自主规避障碍物模式。在自动规避障碍物的模式中,当无线感控小车在运动过程中正前方遇到障碍物时,会自动避开正前方的障碍物继续前进。而无线感控小车避开障碍物的方式设计有三种,分别是小车利用麦克纳姆轮的特殊功能性向右平移避开障碍物、小车向右转90度绕开障碍物之后后继续直行,小车遇到障碍物时调头后直行这三种规避障碍物模式。无线感控小车是通过超声波模块不断地进行测距来判断小车的前方是否有障碍物,一旦小车的正前方出现障碍物时,超声波模块测出的距离值就会较小,一旦这个值小于程序中预设值时,无线感控小车就知道进行避开障碍物的操作,至于是以那种方式去避开障碍物的,这个就得看用户在控制小车进入自动规避障碍物模式时选用的是哪种规避模式,这些模式的设定都是需要用户在终端的上位机中进行设定的。当超声波模块测出的距离值小于设定值时,小车开始自动避障,而这个设定值就需要在MCU的程序中进行设定,因为考虑到小车遇到障碍物进行避障动作时不能马上停止,其中存在惯性,所以这个设定值就不能设得太小,否则小车会撞上障碍物。经过多次调试之后,将这个设定值设为45厘米较为合适。也就是说到小车与前方障碍物之间的距离小于45厘米时,小车将进行规避障碍物操作。而在后期调试过程中,考虑到用户的使用体验,则设计成不断的将小车与前方障碍物的距离值发送给服务端的上位机,上位机上实时显示这个距离值。因为超声波模块的测距距离有限,则将距离值小于100厘米的时候发送给上位机,而当这个距离值大于100厘米时就不做任何处理。路径规划功能设计在本设计中,无线感控小车不仅具有自动规避障碍物的功能,还具有路径规划小车运动的功能。在此功能中,用户可以在上位机的画板中进行路径轨迹的绘制,绘制完成后上位机会发送与之对应的路径轨迹坐标信息给小车,小车接收到后进行解析处理,随后做出跟用户在上位机绘制的路径轨迹一样的运动。总的来说,就是用户在上位机中绘制小车的行走路线,随后小车就会做出跟这路线一样的运动,比如说画一条直线,小车就会往前直走,直走的距离与绘制的直线长度成正比,绘制得越长,小车则会运动得越远。在此功能设计中,原本打算是想设计成无论在上位机中绘制的路线是直线还是曲线,小车都能按着绘制路线的轨迹进行运动,但后期在设计过程中遇到了较大的技术瓶颈,无法让小车精确的走出曲线的轨迹,因此抛弃了让小车能走曲线的功能,所以后期改成绘制的小车行走路线只能是直线或斜线。因为在小车运行的过程中,绘制完规划的路线后上位机只发送路线的起点坐标和终点坐标,小车的MCU接收到这些坐标信息数据之后就会进行数据处理,从而解析出起点坐标和终点坐标的X值和Y值,最终根据这两个坐标的X、Y值通过算法来计算出小车该走的距离和转向的方向以及角度值。树莓派搭建网络摄像头传输视频设计在本设计中,无线感控小车系统上还安装有摄像头,因此用户可以在上位机中实时观察到摄像头拍摄到的视频画面,这样更有助于让用户方便地远程遥控小车,也能让用户有更好的使用体验。而且传输视频的质量要高,在保证足够高清的同时也要把传输延迟控制在用户的可接受范围内。要利用树莓派ZEROW和一个USB摄像头来搭建一个网络摄像头,就必须先对树莓派进行一些配置。树莓派是体积只有信用卡大小的微型电脑,而树莓派ZEROW的体积更是只有信用卡一半的大小,其系统都是基于Linux的,功能丰富且易于开发。把烧好树莓派官方系统镜像文件的内存卡插进树莓派后,树莓派开机后再进到设置界面将摄像头功能开启,这样树莓派就能成功使用与之相连的USB摄像头了。树莓派网络传输视频的设计方案一般用得较多的是在树莓派中运行Motion和MJPG-streamer这两个软件。这两个方案都是将摄像头拍摄到的画面信息转换成视频流的形式推送到网页中,而这个网页的IP地址和端口号都是要提前配置好的。这两个方案的区别就是使用Motion时配置比较简单方便,但传输视频的图片质量比较差,时延也比较高。而使用MJPG-streamer时配置相对较为麻烦,但传输视频的图片质量比较高清,时延也比较低,因此比较适合运用在本设计中,能很好的实现网络视频传输的功能。将树莓派配置成开机自启MJPG-streamer,这样就不用树莓派每次开机后再去手动运行MJPG-streamer了。控制小车的C#上位机要获取MJPG-streamer推送的视频流数据,就要在上位机工程中调用MJPG-streamer插件,然后再将显示视频画面的控件拖到UI界面中,并且上位机与树莓派是连接在同一个局域网时,这样才能在上位机中看到树莓派网络摄像头传回的画面。无线感控小车系统的软件设计C#上位机应用程序设计在整个无线感控小车系统的设计过程中,C#上位机应用程序的设计占整个系统设计的核心部分。上位机的主要功能是负责开启一个TCP服务器让无线感控小车作为客户端通过Socket套接字的方式进行通信连接,建立通信连接后上位机在实时控制小车的同时也实时接收小车端发送过来的信息并且做相应的显示,这是一个双向通信的过程。在控制小车的过程中,上位机可以连接小车上的树莓派网络摄像头,这样就可以在上位机看到摄像头拍摄的画面。上位机的程序设计部分包括UI设计和程序设计。上位机的UI设计C#上位机的UI设计是用VisualStudio平台开发的,在平台中创建C#的winform工程。在此工程中,设计UI界面比较方便,窗口的大小可以随意拖动,需要用到的控件也可以从工具栏中直接拖动出来放到窗口里合适的位置,其中用的较多的控件有按钮、文本标签、文本框、图片框等控件。C#上位机的UI界面如图5.1。图STYLEREF1\s5.SEQ图\*ARABIC\s11C#上位机的UI界面其中上位机UI界面中划分区域如下:通信数据监控区域:而上位机在发送和接收控制信息的时候,会在通信数据监控区域显示收发信息的内容,且还能看到收发信息的时间戳,这个时间是精确到毫秒级的。而上位机给小车发送控制指令信息的同时,小车也会给上位机回一条接收到控制指令的信息,以便于让用户得知上位机程序和无线感控小车系统是否已正常运行,同时也方便计算出上位机与小车之间的通信时延。在此区域还放置了启动服务器和连接树莓派网络摄像头的按钮。小车实况数据显示区域:在该区域中,显示了小车系统当前剩余电量的百分比以及与前方障碍物之间的距离。另外还有代表电池剩余电量的电池样式的图片,当电池剩余电量发送一定范围的变化时,电池图片中的电池格数也会减少。小车控制区域:在该区域中,放置了设置小车速度档位的按钮和显示小车速度档位的图片。小车速度档位总共设置有4个档位,当设置小车档位时,显示小车速度档位的图片中的指针也会发生变化,会去指向与档位相对应的仪表位置;该区域也还放置了设定小车运动模式的按钮,分别可以设置成手动遥控模式、自动避障模式,路径规划模式这三种运动模式。路径绘制区域:在该区域中,放置了一个绘画板,当无线感控小车进入路径规划模式时,可以在绘画板中绘制小车运动的路线轨迹,绘制完成后小车随后就会做出与绘制路径相对应的运动轨迹。上位机的主要程序描述在整个C#上位机程序的设计中,最为核心的部分就是上位机端与无线感控小车端建立通信连接后,相互之间收发数据的数据处理的算法设计。C#上位机程序刚开始运行时,在与小车通过WiFi进行通信连接后,会开启双线程,其中一个线程负责不断地接收小车端发送过来信息,另一个线程则负责监测是否有键盘按下事件和按钮点击事件的发生,若监测到有事件发生则发送相应的控制信息给小车端。简单来说,就是上位机其中的一个线程负责发送信息数据,另外一个线程负责接收信息数据,最终实现上位机与无线感控小车系统的双向通信。无线感控小车系统运行时,会WiFi通信模块不断地发送当前的锂电池电量百分比和与前方障碍物距离的信息数据以字符串的形式给上位机,上位机接收到这两个数据的字符串之后进行数据处理,截取出相对应的字符串信息,最后分别得出这锂电池电量百分比和与前方障碍物距离的数值,并在UI界面的小车实况数据显示区域显示出来。当用户在运行上位机程序时,通过计算机键盘和鼠标对无线感控小车进行控制,在此过程中上位机会给无线感控小车端发送控制信息,这些控制信息也是通过字符串数据的形式发送的,小车端接收到字符串信息之后也会进行数据处理,最终实现上位机通过WiFi方式控制小车。上位机的程序流程图如图5.2。图STYLEREF1\s5.SEQ图\*ARABIC\s12上位机程序流程图硬件驱动程序设计在无线感控小车的硬件驱动程序设计中,是以STM32单片机驱动各个小车模块的程序设计为核心的。其中这些程序设计则包括有无线数据传输的程序设计、电机驱动模块的程序设计、超声波测距程序的设计,以及实时检测电池电压程序设计。在STM32中稳定地运行这些程序,最终实现对无线感控小车的所有控制功能。无线数据传输与处理的程序设计无线感控小车在与C#上位机的通信过程中,数据处理的程序为重要核心。上位机给无线感控小车发送的控制信息都是以字符串的形式发送的,而小车接收到这些字符串数据之后就要进行处理,得到这些字符串中所包含的控制信息,最后STM32再根据这些控制信息对小车进行相应的运动控制。在无线感控小车上的STM32单片机中,进行数据处理的核心方法是调用C语言函数库中的strstr()函数,其功能是寻找某个字符串数组中是否存在特定的字符串,调用此函数去寻找STM32的串口接收缓冲区中是否存在相应的控制指令,若存在则控制小车做出相应的运动,随后将串口接收缓冲区的数据清空,以保证此次接收的数据不会影响到下次接收数据的处理;在无线感控小车的随机路径规划功能中,C#上位机要发送路径起点和终点的X,Y坐标值给小车端,在此过程中小车接收了4个数值,所以就不能用寻找特定字符串是否与控制指令一致的方法。因为这4个数值是经过上位机进行添加特定字符串处理后发送给小车,而一种特定的字符串对应其中一个数值,因此小车端的MCU就可以通过截取特定字符串之后的数据即可得到相应的坐标值。电机驱动模块程序设计在无线感控小车的最基本的运动功能中,是通过STM32单片机控制电机驱动模块去驱动小车车模上的直流减速电机,对电机实现正转、反转、停止以及调速的控制,最终实现对无线感控小车的运动控制。在本设计中,使用的电机驱动模块是L298N电机驱动模块,此模块可以同时控制两个电机,无线感控小车总共用到了四个直流减速电机,因此需要使用2个电机驱动模块。其中对每个电机的控制需要两个控制信号来控制电机的转动方向是正转还是反转,而对电机的调速控制则是通过PWM信号控制电机的旋转速度的。电机驱动模块控制接口和小车运动情况如图5.3。图STYLEREF1\s5.SEQ图\*ARABIC\s13电机驱动模块控制接口和小车运动情况在STM32控制L298N电机驱动模块的程序设计中,则是先配置好定时器然后初始化好PWM通道,再对两个GPIO口配置成推挽输出模式。在驱动程序中,则使用配置好的两个IO口输出高电平或低电平去控制电机的转动方向,使用PWM通道输出占空比可调的PWM信号给电机驱动模块进而对电机进行调速,最终实现对小车的运动控制。超声波模块测距程序设计在无线感控小车的自主规避障碍物功能中,是通过使用超声波模块进行测距,对前方障碍物与小车之间的距离进行测量,从而判断小车当前的距离是否需要进行规避障碍物的运动,若需要则对电机的转动方向和速度做出相应的控制,最终控制小车做出规避障碍物的运动。HC-SR04超声波模块上总共有两个探头,分别负责发射和接收超声波。模块在使用时,STM32需要给模块的触发端引脚发送一个10微秒以上的高电平信号来控制模块发射超声波,随后超声波经过反射后回到模块上的接收探头。模块上的信号引脚会从刚开始发送超声波的时候由低电平变成高电平,当接收探头接收到反射回的超声波时,模块上的信号引脚会从高电平变成低电平。根据上述超声波模块的工作原理,在测距的程序设计中,只需要测量出超声波模块的信号引脚输出的高电平持续时间,再利用这个时间值乘上声速后除于2即可得出测量的距离值。在STM32中,要测量高电平持续时间就要使用到输入捕获,因此需要在STM32程序中对输入捕获进行初始化,开启输入捕获通道,去捕获超声波模块信号引脚的高电平持续时间,最终根据这个时间值计算出小车与障碍物之间的距离。实时检测锂电池电量程序设计为了使整个无线感控小车系统能正常稳定的运行,就必须要有稳定的供电,因此就要对锂电池输出的供电电压的测量,从而推算出当前锂电池的剩余电量。得知剩余电量能实时观测出无线感控小车的运行情况,续航能力情况等。同时也能保证锂电池不会出现因为超负荷放电而被损坏的情况。在STM32单片机程序中,通过使用单片机内置的ADC通道进行AD转换。要使用ADC的功能,必须先对其进行初始化和配置,且被测的电压大小不能超过3.3V,否则会烧坏芯片的ADC通道。因为在无线感控小车的ADC电压采样电路中,是通过两个电阻串联进行分压的,两个电阻的阻值分别是3千欧和1千欧,因此需要测量阻值较小的电阻上分压的小电压,这样才能保证STM32的ADC通道不会被烧坏。因为锂电池充满电时的电压在12.3V左右,此时分压在1千欧电阻上的电压为3V左右,因此当测量到这个电阻上的电压大于或等于3V时,即认定锂电池的剩余电量为百分之百。而在调试过程中,当锂电池的输出电压低于7V左右时,发现小车在运动状态下直流电机几乎不转动,而车上的串口屏也不亮了,所以可以视为当锂电池的电压低于7V时,无线感控小车的整体系统剩余电量为0%。最后在程序算法的设计中将锂电池的电压值从7V到12.3V的区间换算到0%到100%的区间范围。系统测试系统硬件测试对无线感控小车系统的硬件测试检测项目一般包含检查所有模块的电气连接是否连接正确,是否存在松动易松的问题。而为了保证无线感控小车能长时间稳定的正常工作,所以此次的整体系统硬件测试项目工作中,包括了电机驱动测试、WiFi模块通信测试、超声波模块测距功能测试、以及实测锂电池电量功能测试的项目工作。电机驱动测试在电机驱动测试项目的工作中,是通过在STM32的程序中,单独编写对电机进行连续正反转变换的控制的代码,观察电机是否能够响应且正常转动;之后再单独编写改变输出的PWM信号的占空比,对电机进行调速控制,观察电机的转动速度是否随着占空比的增加而变快。经过测试,小车的电机在能长时间正常工作的情况下,能实现正常的正反转以及调速的功能,STM32也能通过控制L298N电机驱动模块来正常驱动电机。WiFi模块通信测试在WiFi模块通信测试项目的工作中,是通过C#上位机与WiFi模块进行通信连接后,C#上位机发送控制信息给WiFi模块,WiFi模块接收到这些控制信息后再通过串口将这些控制信息发送给STM32,STM32接收到这些信息的同时会返回信息说明已接收到这些信息,在C#上位机中的消息对话框中就能看到这双方收发的通信过程。因此可以通过这一通信过程来测试WiFi模块是否能与上位机进行正常通信。上位机与WiFi模块的通信过程如图6.1。图STYLEREF1\s6.SEQ图\*ARABIC\s11上位机与WiFi模块的通信过程经过测试,在C#上位机与WiFi模块进行通信连接后,WiFi模块的通信功能能够正常实现。超声波模块测距功能测试在超声波模块测距功能测试项目的工作中,只需将无线感控小车放到某个物体的前面,用卷尺测量出无线感控小车与物体之间的距离,将这个距离值与上位机显示的进行比较。上位机显示的距离值如图6.2,实际测量的距离值如图6.3。图STYLEREF1\s6.SEQ图\*ARABIC\s12上位机显示的距离值图STYLEREF1\s6.SEQ图\*ARABIC\s13实际测量的距离值经过测试,在无线感控小车的工作过程中,超声波模块的测距功能能够正常实现,且与实际值误差较小。实测锂电池电量功能测试在实测锂电池剩余电量的测试项目工作中,是通过测量锂电池的输出电压值与无线感控小车上的串口屏和C#上位机中显示的电量值进行对比,而在STM32测量锂电池电量程序中是以锂电池电压大于或大于12V时视为满电量,当锂电池电压小于12V时则通过计算锂电池剩余电量的算法将电压值转换成对应的百分比值。锂电池输出电压与电量显示如图6.4。图STYLEREF1\s6.SEQ图\*ARABIC\s14锂电池输出电压与电量显示经过测试,在无线感控小车系统工作中,实时测量锂电池剩余电量的功能能够正常实现。系统软件测试在对无线感控小车整体系统的软件测试工作中,主要是针对远程控制端的C#上位机进行的。通过对C#上位机进行功能性的测试,测试其是否能够稳定的实现预期的通信功能,其中包括有开启一个TCP服务器、对小车实时发送远程控制的信息、显示树莓派网络摄像头采集的画面,以及接收小车发来的数据进行相应的显示处理。上位机与小车成功进行通信连接如图6.5。图STYLEREF1\s6.SEQ图\*ARABIC\s15上位机与小车成功进行通信连接上位机与小车成功进行双向通信如图6.6。图STYLEREF1\s6.SEQ图\*ARABIC\s16上位机与小车成功进行双向通信上位机成功显示摄像头画面如图6.7。图STYLEREF1\s6.SEQ图\*ARABIC\s17上位机成功显示摄像头画面经过测试,在控制端的C#上位机整个工作过程中,能够长时间的稳定实现所有预期的通信功能,其中这些功能包括有在一个局域网内开启一个TCP服务器让小车通过WiFi模块进行连接,通过WiFi信号给小车发送控制信息的同时接收小车返回的数据,以及显示树莓派网络摄像头采集的画面,让用户有更好的操作体验。通信时延的测试为了能通过控制端的C#上位机能够对小车进行实时远程的控制,其中的通信时延就会有所要求,要将通信时延限制在一定范围内才能对小车进行灵敏的运动控制。而现如今对机器人或是机器小车的时延一般会要求在100毫秒以内,才能实现较为灵敏的实时控制。而C#上位机与小车是在同一个局域网内进行WiFi通信的,因此通信距离较为有限,且通信时延会受到通信距离的影响。在对无线感控小车系统的通信时延测试项目中,是通过上位机发送任意控制信号给小车端的同时小车端会返回信息,而上位机界面在的消息框会显示收发消息的时间戳,时间精确到毫秒级,这样就可以通过这两个收发消息的时间进行相减后再除于2即可得到上位机与小车的通信时延。上位机界面的消息框如图6.8。图STYLEREF1\s6.SEQ图\*ARABIC\s18上位机界面的消息框经过随机测试得到在不同通信距离下的通信时延如表6.1。表STYLEREF1\s6.SEQ表\*ARABIC\s11不同通信距离下的通信时延通信距离通信时延1米12毫秒5米23毫秒10米43毫秒15米65毫秒20米88.5毫秒25米108毫秒测试数据结果表明,当控制端的上位机与无线感控小车之间的通信距离大于25左右之后,通信时延就会超过100毫秒,此时对小车的控制就会变得不太灵敏,这里也体现出了局域网通信在这里的局限性。实时遥控小车运动功能测试通过在控制端按下键盘按键来实时遥控无线

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论