最简单的Arduino循迹小车制作教程
最简单的Arduino循迹小车制作教程
Arduino循迹小车是一种常见的DIY项目,通过红外传感器检测地面黑线,控制小车自动沿着黑线行驶。本文将详细介绍如何制作一个简单的Arduino循迹小车,包括所需材料、制作步骤和Arduino代码。
所需材料
- Arduino Uno
- L298N电机驱动器
- 4个齿轮电机
- 红外传感器模块
- 13CM x 10CM胶合板
- 2节18650电池
- 2s 18650电池座
- 开关
- 双面胶带
- 胶枪
- 跳线
- 电位计
制作步骤
步骤1:准备底盘
首先,我们需要一块木头作为汽车底盘。在这里,我使用13CM x 10CM的胶合板作为汽车底盘。这些尺寸非常适合制造循迹小车。您也可以使用亚克力板或预制底盘。
步骤2:安装电机
现在用胶枪或任何其他胶水将电机连接到胶合板的4个角上。确保在连接电机时,电机对准应该是正确的。否则,汽车将无法直行。
步骤3:连接齿轮电机
现在连接齿轮电机,如下所示。我们将以十字交叉模式连接电机。这是因为我们必须使汽车以两个侧面电机沿同一方向旋转的方式进行,以便向前、向后和其他已知方向前进。
步骤4:检查电机连接
在连接好电机之后,连接应如下所示。在这里,我提供了两张侧面图片,以便您清楚地了解。
步骤5:安装L298N电机驱动器
这里我们使用的是L298N电机驱动器。我使用双面胶带将L298N电机驱动器连接到胶合板上。
步骤6:连接电机线
现在将电机线与L298N电机驱动器连接。然后拧紧电机驱动器线。并避免任何类型的松散连接。
连接后,所有电线将如下所示。
注意:上传代码后,如果汽车没有朝着正确的方向行驶或向错误的方向旋转,那么只需更换电机线即可。而且它会正常工作。
步骤7:安装电池
对于电池,我使用了2节18650电池。这对于制造这种类型的汽车非常有用。为了连接电池,我使用的是2s 18650电池座。我还添加了一个用于打开/关闭汽车的开关。
电池线将与电机驱动器的输入线连接。您还可以清楚地看到电池线的连接位置。
步骤8:连接Arduino Uno
在这个项目中,我使用Arduino Uno作为微控制器。您也可以根据需要使用任何其他微控制器。但在这种情况下,布线原理图会有所不同。
接下来,您必须从电机驱动器上移除跳线短路连接器,以进行下一步连接。
步骤9:连接L298N电机驱动器
在图片中,我提到了电机驱动器的必要连接。
Arduino Uno L298N电机驱动器
引脚10 ENA
引脚9 IN1系列
引脚8 IN2
引脚7 IN3
引脚6 IN4系列
引脚5 环境局
步骤10:连接红外传感器
连接IR传感器,如我在照片中所示。然后将必要的电线与Arduino UNO连接。只需按照原理图中的接线图进行操作即可。
现在将代码上传到Arduino。现在我们必须为运行汽车进行校准。
步骤11:连接电池
将电池连接到汽车并打开开关。
步骤12:传感器校准(关键步骤)
在校准之前,您必须将车轮连接到汽车上。您无需打开串行监视器进行校准。这只是手动校准。在这里,我使用了digitalRead函数来区分Light和Dark。因此,IR传感器只会给出High/Low作为Output。
将汽车放在一些高表面上。在这里,我使用了喷漆的顶盖将汽车放在上面进行校准。在这里,我使用带有T形线的白色表面对进行校准。(那些正在考虑我用于T形的人。答案是这样的,这是简单的黑色电工胶带 :)
按照我在图片中展示的方式放置汽车。现在,您已准备好进行校准。首先将2个电位计(左侧和右侧传感器均为)逆时针旋转。
- 现在顺时针缓慢地逐个旋转电位计,直到红外传感器的LED亮起。
- 接下来,慢慢地将汽车向左和向右移动,使汽车的Left和Right传感器位于黑线上。然后车轮向不同的方向旋转。
- 更具体地说,如果您将Left Sensor放在黑线上,汽车将尝试向正确的方向移动。同样,如果右侧传感器处于黑暗中,则汽车向右移动。
- 这是因为将汽车始终放在Blackline上。这种配置的一个主要问题是,在这种配置中你不能走得太快。
因此,在这种情况下,校准过程要容易一些。现在您可以打开汽车并放置在您想要跟随的地方,汽车将沿着这条线行驶。
Arduino代码
#define in1 9
#define in2 8
#define in3 7
#define in4 6
#define enA 10
#define enB 5
int M1_Speed = 80; // 电机1速度
int M2_Speed = 80; // 电机2速度
int LeftRotationSpeed = 250; // 左转速度
int RightRotationSpeed = 250; // 右转速度
void setup() {
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
pinMode(enA,OUTPUT);
pinMode(enB,OUTPUT);
pinMode(A0, INPUT); // 设置左边传感器引脚
pinMode(A1, INPUT); // 设置右边传感器引脚
}
void loop() {
int LEFT_SENSOR = digitalRead(A0);
int RIGHT_SENSOR = digitalRead(A1);
if(RIGHT_SENSOR==0 && LEFT_SENSOR==0) {
forward(); //前进
}
else if(RIGHT_SENSOR==0 && LEFT_SENSOR==1) {
right(); //右转
}
else if(RIGHT_SENSOR==1 && LEFT_SENSOR==0) {
left(); //左转
}
else if(RIGHT_SENSOR==1 && LEFT_SENSOR==1) {
Stop(); //停止
}
}
void forward()//小车前进函数
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, M1_Speed);
analogWrite(enB, M2_Speed);
}
void backward()//小车后退函数
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, M1_Speed);
analogWrite(enB, M2_Speed);
}
void right()//小车右转函数
{
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(enA, LeftRotationSpeed);
analogWrite(enB, RightRotationSpeed);
}
void left()//小车左转函数
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(enA, LeftRotationSpeed);
analogWrite(enB, RightRotationSpeed);
}
void Stop()//小车停止函数
{
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
通过以上步骤和代码,您就可以制作出一个简单的Arduino循迹小车。这个项目不仅能够帮助您了解Arduino的基本应用,还能让您掌握循迹小车的工作原理。希望这个教程对您有所帮助!