基于Arduino的蓝牙智能避障小车设计

2022-10-19 04:51任玲玲李浪闫庚龙莫仁浪
电子制作 2022年19期
关键词:循迹障碍物红外

任玲玲,李浪,闫庚龙,莫仁浪

(茅台学院,贵州遵义, 563000)

0 引言

物联网是指将互联的概念扩展到人与物以及物物之间信息的交换和通信。物联网在智能家居、现代交通、军事科技、环境监测等领域都有广泛应用[1],智能小车作为机器人的分支,可以在预设的路线上行驶,也可以自动躲避障碍物前进,实现循迹与避障功能。智能小车也是物联网的一部分。智能小车可以利用传感器监测周围的环境信息,利用蓝牙、WiFi、红外等进行无线通信,实现对智能小车的无线控制功能[2]。它不需要人工管理,只要将编写的程序提前上传至单片机,就可以完成相应任务,可以节省人力物力。与遥控小车有所不同,遥控小车需要通过人工遥控来控制小车方向,本文设计的智能循迹避障小车是通过计算机程序来控制小车的运行状态和方向,而且可以通过蓝牙实现手机端对智能小车的控制以及实现循迹与避障模式的切换。可以广泛应用于无人驾驶汽车、自动运输机器人、自动清洁机器人等方面[3]。

1 系统整体设计

本文设计一款可以对周围环境作出智能判断及反应的智能小车。智能小车可以实现以下三个功能:第一,通过循迹模块检测路面黑线,并跟随预设的黑线前进,实现自动导航功能;第二,通过避障模块检测障碍物,并绕开障碍物行驶,实现自动避障功能;第三,手机遥控,通过蓝牙模块接收手机端发送过来的数据,进而控制小车进入循迹模式或避障模式。

根据智能小车的功能需求,对小车的各个模块进行设计,硬件部分主要包括Arduino单片机、循迹模块、避障模块、蓝牙、电源、驱动模块等,总体设计框图如图1所示。

图1 系统总体设计框图

各个模块的主要功能:Arduino模块:作为智能小车的核心部分,对驱动模块、循迹模块、避障模块起着控制作用,传感器检测路面上的黑线和障碍物,并将收集到的信息反馈给主控芯片,主控芯片对信息进行处理,然后将处理结果发送给驱动模块,从而控制小车的运动状态。循迹模块:检测路面上的黑线,使小车能够跟随路面预设的黑线前进,实现循迹功能。避障模块:检测周围障碍物,使小车能够路面地避开障碍物前进,实现避障功能。电源模块:电源要为单片机、传感器、驱动部分提供电能,使智能小车能够正常运行。驱动及电机模块:执行Arduino对信息的处理结果,控制电机的运动状态,进而实现智能小车的转向。蓝牙模块:接收手机端发送过来的数据,进而控制小车不同的运动状态和进入不同的模式,智能小车根据接收的信息进入循迹或避障模式。

2 硬件设计与实现

■2.1 智能小车原理图

根据智能小车的总体设计,需要为智能小车设计和选择合适的硬件设备。智能小车的硬件设计主要包括小车的车体的设计、主控器的选择、循迹模块的选择、避障的模块的选择、驱动模块的选择、电机的选择、电源模块的选择、通信模块的选择。循迹模块和避障模块检测小车周围的环境信息,并将信息反馈给主控芯片,主控芯片对信息进行处理,然后将处理结果发送给驱动模块,进而实现对电机的控制。通过蓝牙模块接收手机端发送过来的信息,并对信息进行处理和判断,然后控制小车进入不同的模式,实现手机遥控功能。其智能小车的整体接线图如图2所示。

图2 智能小车连线图

■2.2 主控器的选择

Arduino有许多版本,每个版本有不同发特点。本项目选择Arduino UNO R3版本,其实物图如图3所示。这个版本UNO的处理器核心是ATmega328,这是目前使用最多的版本,具有十分稳定和满足智能小车功能实现的需要[4]。

图3 Arduino UNO R3开发板

■2.3 循迹模块的选择

智能小车使用两路红外循迹传感器,其实物图如图4所示。工作原理:不同颜色的路面对红外光线的反射能力不同,黑线会吸收传感器发射出的红外光,而其他颜色的路面有反射光线返回,传感器会接收到不同强度的信号,进而转换为高低电平,然后通过端口控制驱动模块改变两个电机的运动状态,从而达到循迹的目的。

图4 两路红外循迹传感器

■2.4 避障模块的选择

常见的避障方式有红外避障和超声波避障。

红外避障模块,其工作原理为:传感器发射红外线,遇到障碍物后会反射红光线,传感器根据是否收到信号来判断是否有障碍物,进而转换为高低电平,然后通过控制驱动模块改变电机运动状态,从而达到避障的目的。其价格便宜且抗干扰能力强。

超声波避障模块,其工作原理为:发射超声波,遇到障碍物后返回,从而测出两者的距离,当距离小于一定值后,判断前方有障碍物,进而转换为高低电平,然后通过控制驱动模块改变电机运动状态,从而达到避障的目的。这种方式易出现检测盲区,从而检测不到障碍物。

考虑各种因素,避免实验单一性同时选择使用红外避障传感器和超声波避障。红外避障模块如图5所示。

图5 红外避障传感器

红外避障模块有VCC、GND、OUT三个引脚,其中VCC为电源正极接入口,接电源正极;GND为电源负极接入口,接电源负极;OUT接Arduino主板的一个I/O口,由于本项目只需要使用一个避障模块,选择5引脚。超声波避障模块与舵机搭载配合,超声波模块有VCC、GND、Echo、Trig四个引脚,其中Echo、Trig为回声(输出)和触发(输入)。实物如图6所示。

图6 HC-SR04传感器

舵机SG90有红、棕、橙三根接线,分别为VCC、GND、信号线。其工作原理是通过控制脉冲信号来控制它角度的转动,一般一个基脉冲里高电平为0.5~2.5ms,其角度对应为0~180°,实物如7所示。

图7 SG90 舵机

■2.5 驱动模块的选择

智能小车采用L239D电机驱动芯片,其实物图如8所示。L239D采用双H桥直流电机驱动芯片,可以实现电机正反转及调速,适用于智能小车的设计。

图8 L293D 驱动芯片

该驱动模块可以驱动两路直流电机,当使能端为高电平时,该模块可以正常工作。驱动模块可以通过设置INI,IN2确定电机的转动方式,进而控制电机的状态。智能小车采用三轮模型,前面两个轮子各使用一个电机驱动,并通过控制电机的转动方式改变小车的运动状态,小车的主要运动状态有直行、左转、右转、后退、停止。后轮使用一个万向轮,万向轮不需要通过电机控制就可以在水平方向旋转,有利于控制小车的平衡,对小车起支撑作用。

■2.6 电机的选择

智能小车使用的电机主要有直流减速电机、步进电机。直流减速电机价格比较便宜,使用方便,电机转速较慢,可以实现减速功能。步进电机通过脉冲信号调节电机转速,但电机转速较小,价格昂贵,不适合智能小车。考虑各种因素,选择使用直流减速电机。主要通过两个引脚进行接线,分别接驱动模块的两个输出引脚,从而控制电机的转动。

■2.7 电源模块的选择

智能小车采用7.4V锂电池给单片机和驱动部分供电,这种供电方案简单,锂电池价格也比较便宜。7.4V锂电池是通过Arduino转接板的电源接口给主板和驱动部分供电。

■2.8 通信模块的选择

要实现小程序与小车之间的通信,需要选择合适的无线通信模块,目前主要的通信方式有蓝牙通信、WiFi通信、红外通信。由于蓝牙模块的通信范围较大,速度较快,价格也比较便宜,广泛应用于智能手机、笔记本电脑、无线耳机、汽车等设备,并通过手机蓝牙调试器实现与小车的通信,蓝牙调试器给蓝牙模块提供了一系列需要的API,如打开蓝牙适配器、搜索蓝牙、连接蓝牙等。所以选择HC-05蓝牙串口通信模块作为通信模块,蓝牙模块通过VCC、GND、TXD、RXD四个引脚进行接线,其中VCC接电源正极;GND接电源负极;TXD接主板的RXD口;RXD接主板的TXD口,其实物图如图9所示。

图9 HC-05蓝牙

3 软件设计

智能小车主要实现自动循迹、自动避障、蓝牙模块接收数据三个功能,通过编写主程序、循迹子程序、避障子程序、接收数据等程序,实现智能小车正常运行。

智能小车要正常平稳工作,编写高效无误的程序是必不可少的。首先需要建立一个项目并编写程序,要定义IO引脚并对其初始化,定义智能小车的一系列动作,包括直行、左转、右转、停止和后退,然后通过蓝牙模块接收手机端发送过来的信息,主控芯片对信息进行处理,然后控制智能小车进入循迹模式或避障模式,主程序框图如图10所示。

图10 主程序框图

对硬件模块定义引脚、对引脚设置输入输出模式、设置波特率等。其中两个循迹传感器分别选择3和4引脚,并设置为输入模式;红外避障传感器选择5引脚,并设置为输入模式;超声波传感器选择A0和A1引脚,并设置输入和输出模式;两个电机分别选择8和9、10和11引脚,并设置为输出模式;用于串口通信的波特率设为9600。其中循迹模式和避障模式中小车的运动状态有直行、左转、右转、停止和后退,不同的运动状态,电机引脚参数不同。

■3.1 循迹子程序

循迹子程序用于实现智能小车的自动循迹功能。小车进入循迹模式,两路红外循迹模块开始检测路面上的黑线,根据是否检测到黑线,读出引脚的电平,控制小车进入不同状态,根据传感器检测黑线的不同情况,智能小车可以进入直行、左转、右转、停止四种状态。循迹子程序框图如图11所示。

图11 循迹子程序框图

■3.2 避障子程序

避障子程序用于实现智能小车的自动避障功能。小车进入避障模式,左右红外避障模块开始检测小车周围是否有障碍物,根据是否检测到障碍物,读出引脚的电平,控制小车进入不同状态,根据周围障碍物类型的不同,智能小车可以进入直行、左转、右转、后退四种状态,避障子程序框图如图12所示。

图12 避障子程序框图

■3.3 蓝牙工作流程

手机蓝牙传送数据过程与平时使用两部手机互传数据一样,不同的是在本设计中,手机为主机,蓝牙模块为从机。其工作流程如图13所示。

图13 蓝牙工作流程图

4 调试与结果

打开手机蓝牙调试器,点击搜索蓝牙设备,点击所要连接的蓝牙名称进行连接,然后发送数据指令。连接成功后,通过控制界面发送控制指令,从而控制小车的运行状态。控制界面如图14所示。

图14 控制界面

经过实验调试,小车能够达到设计的预期效果,小车的基本运行和循迹功能、避障功能都得以实现。运行结果如图15所示。

图15 小车运行实物图

5 总结

本文设计的循迹避障智能小车以Arduino为控制核心,将循迹模块、避障模块、蓝牙模块、驱动模块等硬件设备组装在一起,实现智能小车的自动循迹避障功能。小车在预设路线上行驶时,通过循迹模块小车可以自动检测路线,若小车偏离路线,可以自动左转或右转,然后按照指定路线前进;通过避障模块小车可以检测障碍物,并自动躲避障碍物前进。另外本设计也实现了手机端与蓝牙模块之间的通信,手机端可以向蓝牙发送指令,实现对小车的无线控制。循迹避障小车等智能机器人可以代替人类去完成一些危险的任务或者很难完成的事情,可以广泛应用于医疗、交通、军事、探测等领域。因此,智能小车等智能设备具有巨大的研究价值。

猜你喜欢
循迹障碍物红外
网红外卖
基于离散傅里叶变换的多旋翼无人机循迹检测系统设计
闪亮的中国红外『芯』
高低翻越
赶飞机
浅谈基于机器视觉和姿态检测的循迹智能车
8路红外遥控电路
TS系列红外传感器在嵌入式控制系统中的应用
月亮为什么会有圆缺
基于单片机的自动循迹小车的设计与制作