电路

如何构建机器人 - 第3课:构建线跟踪机器人:16个步骤

Å-lydene /ɔ:/ og /ɒ/ | Fonetikk

Å-lydene /ɔ:/ og /ɒ/ | Fonetikk

目录:

Anonim

完成基本功能后,我们现在准备为Arduino机器人提供升级功能 - 线路跟踪!

在本教程中,您将逐步学习如何跟踪Arduino机器人。为了使本教程易于理解,此处使用Arduino机器人套件(Pirate:带蓝牙4.0的4WD Arduino移动机器人套件)作为示例。

课程菜单:

第1课:简介

第2课:构建一个基本的Arduino机器人

第3课:构建线跟踪Arduino机器人

第4课:构建一个可以避免障碍的Arduino机器人

第5课:构建具有光和声效果的Arduino机器人

第6课:构建一个可以监控环境的Arduino机器人

第7课:构建蓝牙控制的Arduino机器人

您可能需要的硬件零件:

Arduino的线跟踪(跟随)传感器×3

供应:

步骤1:

宽2.5CM黑色电工胶带×1

第2步:

1M * 1M白板×1

第3步:

M3 * 30MM尼龙支架(螺钉,螺母)×3

第4步:

装配说明

组装Arduino机器人并不困难。请按照以下说明操作。

步骤1:

首先,您需要3个尼龙支架及其随附的螺丝和螺母。

第5步:

步骤2:连接尼龙支撑

使用螺母,将尼龙支架连接到Mini传感器的顶部。安装支架时,请注意其方向:螺母和探头应朝向一个方向。

第6步:

第3步:组装传感器板

从机器人平台上卸下上板。然后,将传感器板连接到平台的前部。

第7步:

步骤4:组装线跟踪传感器

首先,将传感器与指定用于数据传输的电线连接。然后,使用M3螺钉将传感器固定到从平台前部突出的扩展板上。

第8步:

连接硬件

组装完传感器后,不要急于将平台的上板重新放上 - 在此之前,我们需要先将传感器与Romeo BLE连接起来。

左侧的图片显示传感器在传感器板上的正确ABC位置,对应于Romeo BLE上的引脚10,9和8。连接传感器时,请务必检查是否按正确顺序连接了传感器。连接传感器后,将平台的上板重新安装在底座顶部。

第9步:

调整传感器

在下载代码之前,我们需要调整传感器。首先,将USB电缆插入Romeo BLE(带蓝牙4.0的Arduino机器人控制板)以给它供电。如下图所示,下面的传感器有一个飞利浦螺丝头;这个螺钉头可用于调整传感器的距离检测。取一张白纸并将其放在传感器探头下方(纸张的颜色用于校准目的)。拿一把螺丝刀用它来拧紧飞利浦螺丝头。根据拧紧螺钉头的紧密程度,您会感觉传感器的探头在物理上上下移动。一旦开始拧紧,您还会看到传感器的LED亮起。拧紧螺丝头,直到探针点位于纸张上方约2厘米处。

第10步:

编码

插上你的USB。从GitHub下载名为“HuntingLineBlack.ino”的Arduino代码。单击Arduino IDE中的Upload按钮将代码上传到BLE控制板。

第11步:

配置Arduino Robot的路径

取出你的白板。使用2.5厘米宽的电气胶带在白板上布置路径,如下图所示。

第12步:

电线的宽度约为2.5厘米,传感器A和C之间的近似距离。我们选择了上面的路径,原因与代码有关;后面的部分将更彻底地解释这种推理。

第13步:

传输:它是如何工作的

我们如何让机器人保持在轨道上?我们需要确保机器人始终位于轨道中间。机器人使用其3个传输传感器来校准其相对于轨道的位置 - 一旦它转向侧面,机器人将自我调整回中间。

当我们的机器人移动时,会发生三种情况。

第14步:

(a)当机器人首次开始沿轨道移动时,只有中间传感器(B)检测到黑线 - 左右传感器尚未进入游戏状态。汽车将沿轨道保持居中并向前移动。

第15步:

(b)继续沿着轨道行进后,机器人可能会开始偏离中心。在这些情况下,左右传感器将尝试检测黑线并将机器人自引导回轨道。例如,如果机器人转向轨道的右侧,则车辆需要通过向左转动来重新定中心 - 左侧传感器将启动并自动转动机器人直至其重新居中。

第16步:

(c)相反,如果机器人转向轨道的左侧,则右侧传感器将启动并调整机器人的路径,直到它重新居中。

代码提要

没有必要讨论基本代码 - 让我们来看看涉及传输的部分。

int RightValue; //针8上的右侧拖拉机传感器

int MiddleValue; //针9上的中线拖拉机传感器

int LeftValue; //引脚10上的左线拖拉机传感器

//读取线跟踪传感器的3个引脚值

RightValue = digitalRead(8);

MiddleValue = digitalRead(9);

LeftValue = digitalRead(10);

使用三个变量 - RightValue,MiddleValue,LeftValue - 来记录3个传感器的读取值。

digitalRead(引脚)功能用于读取数字输入/输出端口值。如果此部分仍不清楚,请查看我们的术语手册或Arduino网站。

当中间传输传感器检测到黑线(轨道)时,它将产生低能量输出。当他们检测到白色空间时,他们将产生高能量输出。

下面的示例A说明了传输代码的工作原理。当中间传感器检测到黑线(轨道)时,它将产生低能量输出。当左/右传感器检测到空白区域时,它们将产生高输出。

if(MiddleValue == LOW){//在Robot.Speed(100,100)中间的行;延迟(10);}

否则if((LeftValue == HIGH)&&(RightValue == HIGH)){Robot.Speed(100,100);延迟(10);}

如果传感器检测到左侧的黑线/轨道,同时还检测到右侧的空白区域,则机器人将向左转。见下面的例B:

否则if((LeftValue == LOW)&&(RightValue == HIGH)){Robot.Speed(-100,100); //左转延迟(10);}

相反,如果传感器检测到右侧的黑线/轨道,同时还检测到左侧的空白区域,则机器人将向右转。见下面的例C:

else if((LeftValue == HIGH)&&(RightValue == LOW)){Robot.Speed(100,-100); //右转延迟(10);}