单片机智能循迹避障小车设计与实现详解
摘 要
智能小车在交通运输、工业制造、空间探测等领域具有广泛应用,减少人为失误并为生产生活带来极大便利。
但多数可遥控的智能小车,因没有兼容通用的遥控器,导致其工作状态多受限于遥控设备。为此,以手机Android为
平台,Arduino单片机为控制核心,制作一款可通过蓝牙技术实现手机遥控的智能小车。该小车借助TCRT5000红外反
射式传感器以及HC-SR04超声波传感器完成循迹和障碍检测功能。在工作模式方面,设置循迹避障、自动避障、自由
行驶三种模式,并通过搭建多组路况环境对模式切换功能进行测试。测试结果表明在循迹避障模式下,小车具备循
迹、行驶和检测障碍的功能;在自动避障模式下,小车具备检测多个障碍物以及避障功能;在自由行驶模式下,小
车可实现速度和方向的智能可控。故该智能小车运行灵活稳定,能满足设计需求。
关键词:Arduino单片机;蓝牙遥控;红外循迹;超声波避障
1 引 言
1.1 研究背景以及意义
随着经济全球化深入发展,国际竞争正在加剧。2013年德国首次提出“工业4.0”概念,在2015年我国正式印发
《中国制造2025》的强国战略,将信息物理系统与通信技术相结合是“工业4.0”的核心,通过两者相互反馈与联系
的关系,从而有效提高工业生产效率。当下,世界各国都非常重视智能小车技术的研究,智能小车的关键技术不仅
反映了一个国家的综合技术水平,也是《中国制造2025》的重要一环,我国在这一领域上已经做了大量的研究和应
用,取得了不错成果。现如今智能小车技术正逐渐渗入到各行各业和我们的日常生活中,有助于提高生产力,改善
生活质量,减少人为失误[1]。目前,智能小车的发展前景仍然非常广阔,因此我们应该抓住这一机遇,积极研究智
能小车技术。其中,智能循迹避障技术一直被认为是智能小车研究的核心问题之一,智能循迹避障技术可以确保智
能小车按照指定路线行驶,自动调整行驶方向,避免与障碍物发生碰撞,体现了智能小车的自动化和智能化。小车
的通信控制功能也是衡量智能小车科技水平的另一重要指标,智能小车的通信控制功能可以将智能小车从有线网络
中解放出来,不受有线网络束缚,大大提高小车的便捷性和灵活性。
当下道路交通状况复杂多变,事故发生率持续上升,基于智能小车技术为基础的智能汽车可以实现自主避障等
自动驾驶功能,可有效地减少各种因素导致的交通事故,在汽车中具有自动避障及通信设备控制功能,可提高驾驶
员安全系数,有效缓解驾驶压力,缓解交通压力。基于智能小车为基础的货运车在物流仓储行业中使用,可极大地
提高这一产业的生产效率,降低搬运工的劳动强度[2]。基于智能小车为基础的智能报警的医疗机器人,可自动到达
指定的病房里,并实时对病患的生理数据进行监测,进而提高医生工作效率[3]。而在疫情当下,智能小车也在为大
家提供全方位的服务,智能小车可以根据预先设定的路线,将物品送到指定的地点,实现定向、非接触式传递货
物,减轻医务人员、社区工作者的工作负担。
上述只是智能小车的部分应用案例,智能小车的发展并不局限于这些。因此,设计和开发一款能够手机遥控的
智能循迹避障小车,不仅具有非常重要的实际应用价值,而且还具有重要的理论研究意义,为将来小车智能化提供
了一个可行的方法。
1.2 国内外研究现状
1.2.1 智能小车研究现状
目前全球许多国家都对机器人进行了大量研究,早在20世纪50年代,美国就开始了智能小车技术的研究,1972
年由Charlie Rosen带领的美国斯坦福研究所研发出第一台可感知和分析周围环境,并自行规划前进路径的移动机器
人Shakey,是当时将AI应用于机器人中最为成功的案例[4]。1997年登上火星的索杰纳号火星车是一辆自主式的机器
人车,它不仅可以从地面对它进行遥控,还可以探测周围环境的信息,在第一时间发现障碍物,并找到无障碍的路
线前进。日本在2006年推出的ASIMO的最新版,可以在行走时避开行人和障碍物。2011年,NSK公司推出了导盲犬机
器人,可以为盲人引路,为他们指明方向。该机器人使用轮子在平坦的道路上滑动,遇到台阶时换用四脚行走[5]。
纵观国外对智能小车的研究,已存有大量技术和经验的积累,特别是最早开始对机器人技术的研究的美国,现
已呈现出极高的水平,进入系统化、规模化研究阶段,目前的研究成果代表着国外智能车的主要发展方向。智能小
车的研究和开发涉及计算机技术、传感器技术等多个学科,与国外相比,我国对智能小车的研究始于20世纪70年代
末,虽然我国对智能小车技术的研究总体上与发达国家有较大的差距,但我们也取得了不少成果,如2013年我国自
主研制的“中华牌”月球车、阿里仓储机器人“曹操”、2020年发射的“祝融号”火星车、智能防疫无人车等。随
着我国计算机技术的迅速发展,我国人工智能化发展契机日益增强,经过多年的不断努力,我国在智能小车技术与
世界领先水平的差距已逐步缩小。
1.2.2 循迹避障技术研究现状
在循迹避障技术研究方面,目前已有许多优秀的研究成果。如Ramdane Hedjar等人提出一种在动态环境中利用
本地信息的群体移动机器人计算轨迹生成算法。该算法基于约束凸非线性优化规划参考路径,避免了静态和动态障
碍物[6]。方啸、郑德忠提出了一种控制策略,可通过持续的惩罚和奖励信号来自主循迹、避障[7]。顾志华,徐晓
慧等人设计了一种在车前安装多个测距传感器的避障方法,提出了测距超声波单点与红外双路交叉避障相结合的方
法[8]。刘志娴等人采用漫反射式光电开关,同时通过控制高低电平来识别黑白物体,进行循迹以及避白色障碍物
上述研究基本上可以满足循迹避障的需要,使用超声波发射器、接收器和漫反射式光电开关来作为避障传感
器,只可检测到小车的前方是否有障碍物,而无法获取小车与障碍物之间的距离,无法很好的保障智能小车能够灵
敏地完成避障动作。同时,上述研究中在车前部安装多个超声波传感器可能会导致传感器之间相互干扰;使用高低
电平来识别黑白物体,会使循迹不那么精准。而且,目前在通过无线传输到远端主机,主机向小车发送命令,执行
相应的操作上也有着研究的价值[10]。论文针对存在的这些问题,结合循迹避障、传感器、单片机、蓝牙技术对其
进行深入、细致地研究,设计和开发一款能够手机遥控的,在环境感知、循迹识别、障碍识别上有所改进,且成本
较低的智能循迹避障小车,力求得到一个实用的智能循迹避障系统。为将来智能小车的开发和应用提供了一个可行
的方案,希望我国在智能小车技术上能够尽快赶上行业巨头,为未来提供更加便捷的生活。
1.3 文章研究思路与结构
根据智能小车的研究现状及发展趋势,针对目前智能小车中存在的一些技术问题,论文以手机Android为平台、
Arduino单片机为控制核心,着重对循迹避障及蓝牙技术进行研究,设计一款可手机智能遥控的循迹避障小车。文章
主要分为五个部分,具体安排如下:
第一部分为引言。简单阐述智能小车的研究背景和意义,并分析国内外研究现状,对智能小车计方向做出了说
明,最后描述论文的组织结构。
第二部分为开发环境与关键技术的介绍。对智能循迹避障系统的开发环境进行了分析,考虑各模块之间的需求
并对Arduino平台、Android平台、无线通信技术和传感器技术进行了介绍。
第三部分为智能循迹避障小车的总体设计。详细分析智能循迹避障小车的各功能模块,通过硬件、软件的设计
使循迹、避障、遥控功能实现。
第四部分为智能循迹避障小车测试。对智能循迹避障小车的成品进行自动避障、循迹避障、自由行驶功能的测
试及说明。
第五部分为总结。总结全文的工作和成果,介绍所设计智能小车的功能,指出设计中存在的不足之处,并对智
能循迹避障小车的实际应用进行了展望,提出了今后的研究计划。
2 开发环境与关键技术
2.1 开发环境
2.1.1 Arduino集成开发环境
(1)Arduino简介
Arduino是由一欧洲团队在2005冬开发的一款灵活方便且易于使用的开源电子原型平台[11],本质上,它就是一
台微型计算机,可以把电子元件比作键盘鼠标,就像键盘鼠标连接到计算机那样,将电子元器件连接到Arduino的接
口上,即可控制这些元件。此外,Arduino还可以使用红外、超声波传感器等一系列先进的传感器来感知周边环境,
从而实现自主控制的功能,使设计的产品更加智能化[12]。Arduino由硬件、软件两部分组成,硬件部分是可用于连
接电路的Arduino电路板,称为微控制器;软件部分则是Arduino IDE,即计算机中的程序开发环境,在IDE中编写程
序代码,可将编写好的代码上传到Arduino电路板上,与以前的大多数可编程电路板不同,Arduino不需要额外的硬
件将编写的代码上传到电路板上,只要用USB线连接电脑即可[13]。此外,Arduino IDE可使用C语言进行编程,因此
编写更加简单。
智能循迹避障小车的设计选用Arduino Uno R3开发板,其实物图如图2-1所示,具体引脚标注如图2-2所示,它
的核心处理器是ATMega328P单片机,共有14个从0到13的数字I/O引脚和6个从A0到A5的模拟I/O引脚。其中,6个数字
I/O引脚3、5、6、9、10和11可以作为PWM输出;A0到A5的6个I/O模拟引脚不仅可以输入数字信号,还可以输入模拟
信号,分别对应于数字I/O端口14到19。一个复位键以及电源插座、一个16MHz的晶体振荡器、一个可供电及烧录程
序的USB接口,具有成本低、功耗低、接口丰富、性价比较高的特点,完全能够满足设计需求[14]。
图2-1 Arduino实物图
图2-2 Arduino UNO R3 开发板引脚标注图
(2)Arduino集成开发环境搭建
Arduino IDE可以在电脑三大主流操作系统Windows、 Linux、MacOS上运行,而其他的大部分只能在Windows系
统开发运行,且Arduino IDE自带串口监视器,可方便观看串口数据的传输情况。Arduino IDE安装包在Arduino官方
网站上可以免费下载。根据电脑版本信息下载相对应的Arduino IDE软件包,打开Arduino IDE可执行文件后就能直
接进行开发环境的搭建,IDE界面如图2-3所示。
图2-3 Arduino IDE界面
2.1.2 Android开发环境
如今,智能手机已经成为日常生活中的一部分,目前市场上常见的智能手机系统有Harmony OS、Android、
iOS、WindowsPhone。其中Android平台最大的优势在于其广泛的开源功能,使得大量用户及开发人员相继加入到
Android平台的开发和运用中来。经过十多年,广大的用户以及开发人员对Android平台不断升级和调整后,运行性
能和流畅度都得到了极大提升。
2.2 系统关键技术选择
2.2.1 智能遥控技术的选择
设计的智能循迹避障系统可通过手机对智能循迹避障小车进行遥控并做出相应的操作。智能手机使用量的日益
增长促使了无线通信技术的高速发展,并对高速及无所不在的无线网络技术提出了新的要求。目前,Arduino电路开
发板支持WiFi、蓝牙、NFC三种方式的无线通信,其中WiFi、蓝牙属于非接触式的控制,而NFC属于接触式的控制,
并且有些手机并无NFC功能,因此并不适用于本设计[15]。现只对两种无接触式控制的WiFi、蓝牙无线通信方式进行
比较。
(1)WiFi
WiFi技术允许设备访问WLAN,本质上是把有线信号转换为无线信号,使特定区域的WiFi设备不需要有线装置便
能使用网络,如手机通过WiFi连接路由器就可以进行无线上网;WiFi具有传输速率快,数据稳定,无资费的特性,
广泛应用于家庭、商场、办公室、餐厅等场所,现在甚至涵盖到高铁动车、小汽车上面,是目前无线技术中应用最
广的。由于WiFi接入不需要物理连接,因此其安全性较低。
(2)蓝牙
蓝牙是应用最广泛的无线通信协议,是短距离无线通信的标准。它广泛应用于蓝牙耳机、蓝牙鼠标、音箱、智
能手环等小型设备,具有成本低、功耗低、小型化等优点。由于蓝牙需要匹配特定对象的特性,与WiFi相比,蓝牙
属于安全性更高的个人局域网。
表2-1为两种无线通信方式性能等方面的比较。综合来看,WiFi和蓝牙实际上有着各自的特点和优势,蓝牙在数
据上的稳定性、安全性、组网上的便捷性都要优于WiFi,在功耗、成本方面蓝牙也有独特优势。结合智能循迹小车
设计的特点:应用于户外的场景,同时开始、结束时需要与手机进行实时双工通信,因此,蓝牙成为设计的最佳选
择。
表2-1 WiFi和蓝牙性能对比
WIFI 蓝牙
标准 IEEE 802.11(a,b,g,n) IEEE 802.15.1
频段 2.4/5GHz 2.4GHz
范围 35-200m 0.1-100m
传输速率 11(b),54(g),600(n)Mbps 1-3Mbps
成本 高 中
功耗 中 低
通信方式 点对点,单对多 点对点,单对多
性质 无线局域网 个人局域网
适用性 有线网络的替代 便携设备的应用
2.2.2 传感器的选择
传感器在国防建设、企业等领域发挥着非常重要的作用。它们是现代工业发展的重要支柱。目前,各种各样传
感器已融入我们生活的方方面面。它们可以每秒收集大量数据,已成为了智慧物联网的一个重要组成部分。传感器
作为市面上各种智能设备的感官,可以从环境中采集包括温度、测距、湿度、压力等各种物理信息[16]。传感器技
术在智能制造中的可靠应用可以更有效地保证所设计系统的稳定运行,因此智能循迹避障小车的循迹黑线的识别、
障碍物距离的测量将采用红外以及超声波传感器来实现。
所设计的智能避障功能是通过测距功能对障碍物的检测进而进行避障处理来实现的,因此对测距传感器的选择
至关重要。随着传感器技术的不断发展,测距技术得到了进一步的发展和完善,测距技术主要包括接触式和非接触
式两种。非接触式测距技术主要包括红外、激光、超声波雷达等。红外测距技术具有生产工艺简单、精度高、安全
可靠等特点,但在实际应用中,红外传感器的抗干扰源较多,且穿透能力弱;激光测距虽然精度较高,但其制造过
程较为复杂,因此成本较高;超声波在测距上具有良好的穿透能力,对周围环境也有着较强的适应能力,超声波传
感器几乎不受周围环境干扰,在具有挑战性的环境下,也可实时、准确地检测出障碍物信息。结合设计需求,最终
采用超声波传感器测距来实现对障碍物的检测。
目前市场上常见的两款超声波传感器HC-SR04、KS103超声波测距传感器,其实物图如图2-4、2-5所示。
图2-4 HC-SR04超声波传感器实物图
图2-5 KS103超声波传感器实物图
表2-2对两种超声波传感器的性能进行了对比。通过对比,HC-SR04、KS103超声波传感器的测量范围、精确度、
工作温度等均符合设计要求,但HC-SR04超声传感器有着成本低、性价比较高的优势,因此设计选用了HC-SR04超声
波传感器。
3 智能循迹避障小车总体设计
设计的智能循迹避障小车主要包括Arduino主控制模块、电机驱动模块、传感器模块、蓝牙遥控模块和蓝牙串口
APP这五个硬件模块,其总体设计如图3-1所示,智能循迹避障小车选用了四轮结构,能提高小车的平衡性。该智能
小车有三种模式,一是可以沿着给定的路径行驶,在前进途中遇到障碍物时,小车会停下,当障碍物移走时,小车
继续沿着线路前行;二是在道路上前进时,可以自动检测前方是否存在有障碍物,如果存在障碍物,小车将自动避
开障碍物,再继续前行;三是可以通过手机遥控该智能小车进行向左、向右、向前、向后等动作。
图3-1 智能循迹避障小车的总体设计图
3.1 智能循迹避障系统硬件组成
3.1.1 驱动模块设计
所设计的智能循迹避障小车为四驱动型的小车,四个轮子上都有驱动电机,因此有四个PWM输出端口是用来控制
电机,由于小车未使用方向舵机来进行转向,故在小车的左、右转向中,是以左、右两组电机差速及正反转来实
现。驱动模块的核心是电机驱动芯片,电机选择 直流电机,这样有利于控制。电机的驱动芯片选择L293D,它可以
一起控制两个 直流电机,Arduino单片机通过OUT1、OUT2接口控制一路直流电机,通过OUT3、OUT4接口控制另一路
直流电机;如图3-2为L293D电机驱动扩展板实物图,在L293D电机驱动扩展板中,内含两个l293D芯片,左右两侧的
电机,分别由L293D电机驱动扩展板中左边对应的芯片A和右边对应的芯片B控制,进而实现四个电机的精准控制,实
现设计要求[17]。L293D电机驱动电路连接图如图3-3所示。
图3-2 L293D电机驱动扩展板实物图
3.1.2 循迹模块设计
(1)工作原理
智能循迹避障小车的循迹模块采用TCRT5000 红外反射式传感器,具有体积小、灵敏度较高的特点。TCRT5000传
感器红外发射管会不断的发射出红外线,而红外接收管具有两种接收模式,其中D0引脚为数字量读取A0引脚为模拟
量读取,本次设计考虑到环境的适应性问题,采用了模拟量读取的方式。当发射出的红外线都没有被反射回来或被
反射回来了但强度比较弱时,由于TCRT5000传感器的红外接收管采用的是模拟量读取,因此Arduino读取的值较小。
由于在白色、黑色面上反射、吸收回来的红外线强度 差距很大,白色面吸收红外线能力弱,反射能力强,反之黑线
反射弱[18]。因此,当TCRT5000传感器距黑线越近时,其值将越大,当其大于给定阈值时,即可检测为黑线。
(2)安装位置
TCRT5000红外传感器安装在小车上实物图如图3-3所示,在小车主板下方安装左右两个对称的TCRT5000传感器,
两传感器间的距离应接近但要大于所设路线的横向距离。通过Arduino IDE中串口监视器,对TCRT5000红外传感器安
装的位置进行串口监视,当红外返回值大于给定阈值100时,表示识别到黑线,通过对TCRT5000红外传感器上的电位
器进行调节范围,确定好最佳的安装位置。在图3-4(a)中,TCRT5000传感器安装在合适位置时,此时小车放在循迹
黑线中央,左右两个红外值属于正常范围;在图3-4(b)中,将左侧传感器置于黑线上,此时左侧红外返回值大,右
侧值小;在图3-4©中,将右侧传感器置于黑线上,此时右侧红外值比较大,左侧值小。因此,在光滑地面上正常
行驶时,由于未检测到黑线,红外传感器所返回的值较小,大约在30~50之间,小于给定的阈值100,即表示未检测
到黑线。而当左侧或者右侧检测到黑线(即一侧检测到黑线)时,黑线一侧红外返回的值在200~400之间,大于给定
的阈值100,因此小车做出判断,就行相应的转向,实现小车沿着黑线循迹功能。
图3-3 TCRT5000红外反射传感器安装于小车上实物图
3.1.3 超声波避障设计
在避障方面采用HC-SR04超声波传感器,用来检测行驶道路上是否存在障碍物,主要利用超声波 测距原理。超
声波传感器的发送端向前方发出一束超声波,超声波在空气中传播,在检测到障碍物时会立即返回到超声波传感器
的接收端,根据发出超声波与接收到超声波的 时间差,可以计算出从发射点到障碍物之间的距离。智能小车车头实
物图如图3-5所示,设计中在智能小车的正前方安装一个HC-SR04超声波传感器,可以更好地监控大范围的角度,在
HC-SR04超声波传感器检测到前方距障碍物的距离小于预设值时,将重新选择前进路线,这时需再次判断智能小车左
右两侧到障碍物之间的距离。再次判断时,小车处于停止的状态。为了实现HC-SR04超声波传感器能够再次向左右两
边判断,设计中在HC-SR04超声波传感器位置下方增加了一个舵机。当检测到前方有障碍物时,舵机模块将左右旋转
带动HC-SR04传感器以便检测小车周围环境。
HC-SR04超声波传感器在电路中的连接图如图3-6,其拥有四个引脚分别是VCC、GND、TRIG(触发控制信号输入
端)、ECHO(回响信号输出端)。在实际的设计图中,将TRIG、ECHO引脚需分别与Arduino中的A5、A4相连接,其测
距精度较高,包括超声波发射器、超声波接收器和控制电路。
3.1.4 蓝牙遥控模块
智能循迹避障小车在蓝牙遥控模块上选用了主从一体化的HC-06蓝牙模块,其实物如图3-7所示,在设计中只用
到了VCC、GND、TXD(数据发送端)、RXD(数据接收端)四个引脚,其中TXD、RXD引脚需分别连接到Arduino中的1
(TX)、0(RX)引脚,该蓝牙模块既可以当主机又可以当从机,设计中使用HC-06蓝牙模块中的从机模块功能,手
机属于主机模块,因此可以通过手机上的蓝牙可以与小车上从机模块的HC-06进行配对连接。在手机端的蓝牙串口
APP上的键盘发送预设的控制指令,HC-06模块接收到指令后,将通过串口将其发送到Arduino主控板,Arduino根据
控制要求调用不同的子程序来驱动电机,进而可实现手机端发出的各控制指令来控制智能小车。
3.2 智能循迹避障系统软件组成
所设计的智能循迹避障小车,采用C语言进行编写,其中主程序流程如图3-8所示,主程序的功能是对各个功能
模块初始化,然后根据手机端发送的控制指令调用各个功能模块的函数,完成设计目的。
图3-8 主程序流程图
3.2.1 循迹功能的实现
循迹功能的软件流程图如图3-9所示,循迹模块是为了使小车可精确、灵敏地识别出地面上的黑线。小车行驶中
的道路若为白色,则接收端会收到红外线信号,接收端输出高返回值给Arduino,小车会继续前进;若道路为黑色,
接收端不会收到反馈的红外线信号,接收端输出低返回值给Arduino,对应电机转速会减小,小车的电机之间会产生
车轮的转速差,从而实现智能小车循迹。
图3-9 循迹功能的软件流程图
设计中小车主板下面安装了两个左右对称的红外传感器,这种做法可通过模拟量的读取,根据场地情况,合理
调整阈值,能够更好地适应不同的场地环境,增强算法的灵活性,区别于其他算法仅仅通过0和1二值判断的数字量
读取。总而言之,从循迹模块软件流程图中可以看出,当小车左侧的红外传感器检测到黑线时,右侧红外没有检测
到,则说明小车偏向黑线右侧,因此程序运行使小车左转;当小车左、右两侧的红外传感器都检测到黑线时,此时
小车可能处于“Y”字型这样的多路径情况,设置其优先向左侧的路径行驶;当小车左侧的红外没有检测到黑线时,
右侧红外检测到了黑线,则说明小车偏向黑线左侧,因此程序运行使小车右转;当小车左、右两侧的红外传感器都
没有检测到黑线时,则说明小车正在黑线中央运行,因此小车直行。设计中使用左右两个红外传感器可以使在小车
所处的环境中得到的值与给定的阈值100进行比较,大于阈值则判断为检测到黑线。因此循迹功能的实现其主要代码
如图3-10所示。
3.2.2 避障功能的实现
避障功能的软件流程图如图3-11所示,运行该程序时,变量先进行初始化,之后小车会向前行走,通过预设超
声波距离前方17cm内是否拥有障碍物,如果没有障碍物,小车继续向前;如果在前方预设范围内有障碍物,小车停
下,舵机将向左转45°,超声波再次判断有无障碍物,如果没有,小车将继续前行;如果有,舵机将向左转90°,
再次判断有无障碍物,如果还有的话,将舵机将向右转,重复向左转的判断算法。小车的避障距离、前进速度、旋
转角度等,都可以在避障程序中自行设置,其避障功能的实现其主要代码如图3-12所示
图3-11 避障模块的软件流程图
图3-10 循迹功能主要代码
/ 84表示正前方,168正左方,126向左45°,42向右45°,0正右方 int ang[5] = {126,168,84,42,0}; int
delay_t[5] = {360,720,0,360,720}; int idex = 1; forward(80, 1); int f_ds = front_ds(); if(f_ds < 17)
//前方距离小于预设值17cm { motorstop(0); for(int i = 0; i < 5; i++) { int my_ds = distance(ang[i]);
if(my_ds > 25) //前方距离大于25cm { idex = i; break; } } front_ds(); if(idex < 2) { leftward(120,
delay_t[idex]); } else if(idex > 2) { rightward(120, delay_t[idex]); } else { forward(80, 1); } }
3.2.3 蓝牙控制模块的实现
在蓝牙遥控方面,采用蓝牙串口控制,实现蓝牙 模块与手机之间构建 串口数据传输。设计中选用蓝牙串口APP
进行 开发Android手机端平台 ,蓝牙串口APP用于蓝牙通信测试,可以与Arduino上的蓝牙串口连接进行蓝牙串口通
信,还可以作为蓝牙软件通信工具。在进行手机端上进行蓝牙串口APP开发时,蓝牙串口APP具有丰富的操作及使用
提示系统,可以提高手机端蓝牙串口APP开发的效率。其中,通过蓝牙模块控制智能循迹避障小车的主要代码如图3-
13所示,包含接收蓝牙指令,三个模式的主要控制的设置。
在蓝牙串口APP上可以设计多个键盘,分别来实现自动避障、循迹避障、自由行驶的功能,每按下一个按键,就
向智能小车发送ASCII码形式的指令,智能小车会进入到相对应的模式,配置好的蓝牙串口APP的手机界面如图3-14
所示。
char get_key(char &c_mod); //接收蓝牙指令void Mode_1(char
c); //自由行驶模式void Mode_2(); //自动避障模式void Mode_3();
//循迹避障模式void auto_run(int ll, int rr); //自动循迹函数
void loop(){ if(mod == ‘1’) //自由行驶模式 { char cmd =
get_key(mod); Mode_1(cmd); } if(mod == ‘2’) //自动避障模式 {
get_key(mod); Mode_2(); } if(mod == ‘3’) //循迹避障模式 {
get_key(mod); Mode_3(); }}char get_key(char &c_mod){ char
key = ‘0’; if(Serial.available()>0) { key = Serial.read(); if
(key == ‘1’ || key == ‘2’ || key == ‘3’) { c_mod = key;
Serial.println(c_mod); } } return key;}
图3-13 蓝牙模块主要代码 图3-14 蓝牙串口APP手机界面
4 智能循迹避障小车测试
为进一步评估智能小车,需对小车的实际性能进行测试。为能更好地判断小车状态,在小车车头中处添加了一
个RGB三色LED,如图4-1所示,当小车运行时亮蓝灯,小车停下亮红灯。
图4-1 RGB三色LED实物图
4.1 循迹避障模式小车测试
智能循迹避障小车测试中,循迹轨道我们使用宽度为1cm的黑胶带,粘贴到白色地板上组成,本次调试,我们制
作了椭圆以及S型轨道,让小车在这两个轨道上运行,其运行原理图如图4-2所示,并进行观察分析。
图4-2 循迹避障模式运行原理图
4.1.1 循迹轨道无障碍物
当循迹黑线轨道上无障碍物时,智能循迹避障小车,在椭圆、“S”字型和“Y”字型轨道上能完整地通过、绕
一圈,如图4-3所示。
(a) 椭圆形轨道上行驶 (b) S字型轨道上行驶
© Y字型轨道上行驶
4.1.2 循迹轨道有障碍物
当循迹黑线轨道上有障碍物时,智能循迹避障小车在距离障碍物17cm时将立即停止,如图4-4表示在轨道上遇到
了障碍物,小车停下的状态,待障碍物移除后,小车将继续沿着黑线轨道继续循迹行驶。
4.2 自动避障模式小车测试
4.2.1 无障碍物情况下
当周围环境中没有障碍物时,智能小车在自动避障模式下将以初始状态下的自由行驶样,小车亮蓝灯,直线向前行
驶,如图4-5所示。
图4-5 周围环境中无障碍物实验过程图
4.2.2 单一障碍物情况
当智能小车的周围环境有唯一的障碍物时,如障碍物刚好在智能循迹避障小车的正前方时,小车在一定范围内
检测到障碍物,如图4-6(a)小车已检测到障碍物,智能小车停下,亮红灯,同时舵机带动超声波传感器旋转45°,
判断前方是否还有障碍物,如果没有,亮蓝灯小车将继续向前行驶。
(a) 前方有障碍物 (b) 确认无障碍物前行
图4-6 单一障碍物实验图
4.2.3 两个障碍物情况
当智能小车周围环境中正前方以及左边存在障碍物时,如图4-7(a)小车已发现前方与左边存在障碍物,图4-7
(b)表示小车已发现右边无障碍物,向右驶去的状态。
(a) 已发现前方与左边存在障碍物 (b) 无障碍向右驶去状态
图4-7 两个障碍物实验图
4.2.4 多个障碍物情况
当智能小车周围环境存在许多障碍物时,小车可以检测到周围存在障碍物,之后小车会进行判断哪边的距离障
碍物比较远,向前行走了一点点距离后,再次判断,直到找到无障碍的出口。
4.3 自由行驶模式小车测试
在手机端上的蓝牙串口APP,可通过点击之前所设置好的键盘按钮或者在APP终端发送相对应的代码,可以实现
智能小车在自由行驶模式下,进行向前、向后、向左、向右、加速、减速等操作,同时在行驶过程中,如果在前方
预设值20cm内存在障碍物,小车则会自动停下。其主要操作如表4-1所示。由于实际测试图片不好展示,故选用
Arduino IDE中的串口监视器(如图4-8)以及手机端上的蓝牙串口APP终端(如图4-9)来显示已运行的收发操作,
其中在自由行驶模式下,智能小车速度默认是120。通过一系列可靠测试结果表明,该小车的预期结果在实际测试中
均能实现。
图4-8 Arduino IDE串口监视器收发情况
图4-9 蓝牙串口APP终端收发情况
5 结论与展望
5.1 结论
基于Arduino的智能循迹避障小车的硬件及软件的设计分析,该设计通过模块化的方法,将设计分成不同功能模
块,各个模块都经过多次测试确保都能实现,最后将各个模块的功能组合在一起,完成智能循迹避障小车的设计。
该智能循迹避障小车在实际测试中取得了比较理想的效果,小车运行灵活,稳定可靠,能实现设计需求的功能,电
源启动后进入到初始化,等待手机端连接蓝牙后按下所需实现功能的按键。在循迹避障模式下小车通过TCRT5000红
外反射传感器的原理,来不断修正路线,实现小车的循迹功能,同时在黑线上遇到了障碍物小车能自动停止运行,
障碍物移除后,小车又能继续沿设定路线行驶;避障模式下小车通过HC-SR04超声波的测距原理进行避障,实现当前
方遇到障碍物,小车会自动一定给角度,从而避开障碍物继续前行;自由行驶模式下,可根据自己需求,在蓝牙串
口APP上,通过遥控控制,小车可做出相应的加速、减速、向左、停止等动作,且在行驶过程中如遇到障碍物,小车
可自动停下来,等待障碍物的移除。这些功能结合在一起,设计出了一辆能够手机蓝牙控制的智能循迹避障小车。
5.2 展望
通过多次测试结果表明,该智能循迹避障小车实时控制方便、工作状态稳定性能良好,具有模块化设计、功能
强大、通用性强、成本低、功率低、性能稳定的特点。随着智慧物联网的发展,该智能小车在当下可以用于为居家
隔离、方舱医院内病患的物资配送,减少人们的工作量以更加安全,同时也可用于消防灭火、物流仓、化工等多个
领域,必将给我们的生活带来诸多便利。
附录 小车实物图
作者:qq_1694456187