基于Arduino的智能小车设计与实现
2022-11-11李志强康钦清肖玉亮李本高王东滔
李志强,康钦清,肖玉亮,李本高,黄 明,王东滔
(湖南涉外经济学院 信息与机电工程学院,湖南 长沙 410205)
0 引言
随着人工智能技术的迅猛发展,众多人工智能控制产品应用到了各行各业中[1]。无人驾驶汽车综合了计算机、模式识别、智能控制、智能传感器等多种技术,旨在减少人为因素引起的交通意外,或代替人类进入危险场景完成工作[2-4],从而提升人们的生活质量。智能小车是无人驾驶汽车的研究基础,自动避障技术一直是智能小车研究的核心方向之一。避障系统中的传感器负责采集障碍物信息,通过智能小车的避障系统识别并判断出障碍物的位置、形状、大小等信息,小车做出对应的避让动作。付晓云等[5]设计了一款基于红外传感器与超声波传感器结合的智能避障小车,曾颖琳等[6]将超声波传感器与舵机结合,不断检测左、前、右3个方向的障碍物。本项目组为进一步提升智能小车的避障性能,设计了一种基于Arduino平台的智能避障小车。小车的避障系统由超声波传感器、红外传感器、激光传感器组成。多种传感器协同工作,提升小车的避障性能。
1 智能避障小车的总设计
本系统整体设计如图1所示。系统的整体模块包括:Arduino开发板、电源模块、电机模块以及由红外传感器、激光传感器和超声波传感器组成的测距避障模块等。
图1 系统整体设计
本设计以Arduino平台为核心,组成红外双点避障、激光单点避障和超声波180°扫描避障相结合的多传感器自动避障系统,采集并识别障碍物信息后,通过I/O口输出信号控制电机驱动模块,完成小车的前进、左转、右转、后退等运行动作,从而实现多方位、广角障碍物的躲避[7]。
2 硬件模块设计
2.1 Arduino开发板
Arduino开发平台是一款使用简单、功能多样的开源电子平台。本设计选取Arduino Uno R3作为主控模块。Arduino Uno R3是一款基于ATmega328的微控制器板,编程灵活,支持C语言编程。它有14个数字I/O口(其中6个可用作PWM输出),6个模拟输入,16 MHz晶振时钟,USB接口,电源插孔,ICSP接头和复位按钮。所有传感器与主板连接,借助USB接口实现序下载和数据通信。
2.2 电机模块
电机模块包括直流电机和电机驱动控制模块。智能小车由电机提供动力,完成行走和避障两项任务。本设计使用4个直流电机,分左、右两侧串联连接。Arduino Uno无法驱动4个直流电机,需借助电机驱动模块完成电机驱动。
本设计采用L298N模块作为电机控制模块。L298N是一种高压、大电流电机驱动芯片,其工作电压最大可达到46 V,电流峰值可达3 A,内部的全桥式驱动器可用来驱动直流电机、步进电机和继电器线圈,最高可同时驱动两个直流电机实现正反转和调速功能,L298N内置过热保护电路,非常适合在电池供电的智能小车、机器人上使用。小车方向控制与逻辑输入引脚高低点对应关系表如表1所示。
如表1所示,EN为使能端,高电平有效;A,B为电机驱动模块的输入端,X表示任意电平;Y表示小车电机的输出状态。
表1 驱动控制电机真值
本设计中,L298N的输入端与Arduino开发板的I/O口相连,驱动两组电机,通过Arduino开发板I/O口电平的变化,控制左右两侧电机的正、反转及停止,实现小车前进、后退、左转、右转和停止等方向控制功能。两组电机转动状态与小车运动状态对应如表2所示。
表2 两组电机状态与小车运动状态对应
2.3 测距避障模块
2.3.1 常用避障传感器
常见的避障传感器有红外避障传感器、激光传感器、超声波传感器等。
红外避障传感器是根据反射红外光探测前方障碍物,确定有无障碍物的存在,同时使用不同颜色指示灯指示状态。在信号输出没有检测到障碍物时,输出高电平,LED指示灯变绿色;检测到障碍物时,输出低电平,LED指示灯变红色。红外避障传感器可根据电位器调节探测距离约为3~30 cm。
激光传感器是目前较为流行的传感器,相较于红外传感器、激光传感器,其测距结果可精确到毫米级,且测量结果不受前方障碍物的颜色和反射光影响。激光传感器通过I2C通信总线与单片机相连接,具有高精度、高准确度、高性能等特点,激光传感器感器探测距离约为30~200 cm。
超声波传感器是利用超声波特性研制而成的传感器,采用IO触发测距,借助超声波传播的时间来判断自身与障碍物的距离。超声波传感器发送端发出超声波,当超声波碰到障碍物时,声波会产生反射。当超声波传感器的接收端收到返回的超声波信号,就会自动计算超声波的往返时间。探测距离约为2~450 cm。
D=T×V/2
(1)
公式(1)中,D为障碍物与小车之间的距离;T为高电平的持续时间,单位为s;V为超声波传播速度,在常温15℃空气中传播的超声波速度为340 m/s。
2.3.2 多传感器自动避障系统
3种传感器的探测距离与探测原理各有不同,如:超声波具有扇形发散特性,而激光传感器所发送的激光则是一束很细的激光束,可适用于不同类型的障碍物测距。由此,本设计采用红外线、超声波和激光3种器件相结合的多传感器自动避障系统。
如表3所示给出了不同传感器各自的特点。结合小车的功能需求,小车车架设计为两层。车架的第一层(底层)左、右各安装了一个红外测距避障传感器,用于检测小车前方近距离的障碍物;在车架第二层的下方前端中部安装激光测距避障传感器,用于探测小车前方较远距离的障碍物;第二层顶部采用舵机加超声波传感器形式。在小车行驶过程中,超声波传感器在舵机的协助下,左右旋转180°,完成小车在左、前、右3个方向上障碍物的距离测量。控制中心将所收集到的数据进行掐头去尾取平均值处理,从而得到障碍物距离测试位置的距离。借助多传感器自动避障系统,实现近、远距离障碍物探测的全部覆盖。
表3 不同传感器的特点及安装方案
2.3.3 WiFi控制模块
WiFi模块通过指定信道号的方式来进行快速联网。在无线联网过程中,本模块首先会对当前的所有信道自动进行一次扫描,搜索准备连接的目的AP创建的(或Adhoc)网络。串口WiFi模块提供了设置工作信道的参数,在已知目的网络所在信道的条件下,可以直接指定模块的工作信道,从而达到加快联网速度的目的。
WiFi模块的型号是UNO R3 ESP8266。该模块功能强大,支持手机端控制,可以更轻松的构建物联网项目。本设计中利用智能手机的WiFi模块与Arduino小车连接,设计并实现智能手机和智能小车的通信。手机终端发出3种不同的控制信号,通过WiFi模块将控制信号传递给摄像头模块。摄像头模块对控制信号所要求的目标颜色进行追踪并将相应的坐标值发送给Arduino开发板。借助WiFi模块,智能小车控制更加便捷。
2.3.4 电源模块
可调稳压电源模块的型号是LM2596S。LM2596S是电流输出降压开关型集成稳压芯片,它内含固定频率振荡器(150 kHz)和基准稳压器(1.23 V),具有完善的保护电路、电流限制、热关断电路等。LM2596S只需极少的外围器件便可构成高效稳压电路。输入电压范围为2.5~35 V,调节电位器可输出1.25~35 V的电压,转换效率高达92%。采用LM2596S稳压并提供稳定的5 V电压给Arduino Uno R3供电。
3 软件模块设计
3.1 系统总流程设计
智能小车运行的总流程如图2所示。Arduino智能避障小车在行驶的过程中,需要不断判断是否有障碍物的存在。规定Arduino依据传感器优先级红外避障传感器>激光传感器>超声波传感器进行障碍物判定。起步时,借助红外探测传感器,确定小车周围是否有障碍物。若有障碍物,小车后退;若无障碍物,小车前进。小车行驶过程中,借助激光传感器进行较远距离障碍物的判定。若激光传感器检测到有障碍物,则小车进入超声波检测区。位于顶部的超声波测距避障模块需要不间断收集左、前、右3个方位的障碍物信息,计算出与障碍物间的距离,并上传至Arduino开发板。小车的执行单元结合所收集到的障碍物信息,进行相应的规避动作。若激光传感器未检测到障碍物,则小车继续直行。
图2 智能小车运行的总流程
3.2 多传感器自动避障系统实现的关键代码
小车第一层设置位于小车两端的红外传感器,优先级最高,首先判定前方是否有障碍物;无障碍,小车直行;存在障碍物,小车后退;正常行驶时,利用激光传感器判定是否存在障碍物,走的过程中利用超声波测量,确定当前距离,从而实现系统的避障功能。
void loop()
{
intSensor_L=A0;
intSensor_R=A1;
if (digitalRead(Sensor_L) ∣∣ digitalRead(Sensor_R))
{
if(sensor.readRangeSingleMillimeters()/10>40)
{
Go();
Serial.println(sensor.readRangeSingleMillimeters()/10);
}
else
{
stadiometry ();
Stop();
delay(50);
Jud();
L_R();
}
}
else
{
Qui_back();
delay(50);
Stop();
}
}
4 测试
4.1 测试流程
连接好智能小车各模块,检查是否有疏漏;通电源、启动小车。
4.2 避障功能测试
小车启动后,分别在前方、左侧、右侧以及左右侧同时放置障碍物挡板,设计不同障碍物模式。智能小车遇各种障碍后避障情况,如表4所示。小车启动,前方有障碍物且左右离障碍物的距离均小于10 cm时,小车会向后倒退,远离障碍物;若与障碍物的距离左侧小于30 cm,右侧比左侧大,此时小车完成掉头右转;左侧距离大于30 cm,右侧距离比左侧更大,此时小车完成90°右转。同理,小车左转。其他情况,小车直行。
表4 小车遇障行驶情况
5 结语
本文对智能小车的自动检测避障和控制进行了研究和设计,主要设计了一种红外双点避障、激光单点避障和超声波180°扫描避障相结合的测距避障智能小车,研究了智能小车的测距避障等功能。通过测试验证,所设计的智能小车能实现近、远距离障碍物探测的全部覆盖,完全符合设计要求。经实验证明,本智能小车能够完成复杂障碍的自动避障。