Jane 发表于 2016-6-9 09:04:57

DIY海盗船系列 第3话 --- 黑白巡线功能

DIY海盗船系列 第3话 --- 黑白巡线功能
在完成基础功能后,我们对机器人来个升级,给它增加黑白巡线功能。巡线功能,是机器人最基础的功能之一。小车能够跟着事先设定好的轨道,进行自主移动。用到的是Mini巡线传感器,可帮助机器人进行黑线与白线的识别,从而实现黑白巡线。
硬件材料:
[*] Mini巡线传感器V3.0 × 3


[*]宽2.5cm黑胶带 × 1


[*] 1m*1m白板 × 1


[*] M3*30MM尼龙柱(螺丝、螺母) × 3
组装步骤:找到硬件材料后,就开始组装了,组装不难,更着操作就行。STEP1: 摆放材料找到需要安装传感器的元件,3个M3*60MM的尼龙柱,配套的螺丝及螺母。
STEP 2: 固定尼龙柱将尼龙柱用螺母先固定到传感器上。固定时,注意方向。螺母和探头是一个方向。
STEP3: 安装传感器板拆下小车的上层板,并将传感器板固定于小车车头。

STEP 4: 安装巡线传感器先给传感器接上数据线,然后将其用M3螺丝固定到传感器的扩展板上。

硬件连接:传感器安装完成后,先不要急着把上层板接上去,需要将传感器与Romeo BLE控制器连接。左边这张图显示的是三个传感器ABC在小车上对应的位置,分别对应数字口的10,9,8。,连接时只需留意线序是否正确即可。安装完成后,固定上层板。
传感器调试:下载代码前,需要对三个传感器的做调整,先插上USB线,给板子供电。下图可见有个十字螺丝,可用来调整检测距离。拿一张白色纸,放在传感器探头下,找到传感器的探测点,一旦找到传感器上的指示灯会亮起。拿出一把螺丝刀,拧转螺丝,感受检测距离的变化,同时找到传感器检测地面黑线的最佳探测距离,推荐在2cm左右。
输入代码:插上USB线,下载代码。由于代码较长,所以这里就不全部显示出来,你可在软件包中找到 HuntingLineBlack.ino的代码,下载进去后即可。
制作轨道:用2.5cm宽的黑胶带在白板上搭出如下图所示的轨道。

线的宽度大约在2.5cm左右,大致在左边和右边的传感器之间。之所以这样布线的原因是由代码决定的,我们在后面一小节会介绍到。
巡线原理:怎么让小车一直跟着线走呢?我们需要让小车一直处于轨道的中间位置,一旦偏离轨道后,就进行自我调整。通过这3个巡线传感器就是来确定线的位置的。小车在巡线的过程中,会出现以下三种情况:

(a)小车刚一开始放入轨道的时候,只有中间的传感器检测到黑线了,左右两侧的传感器均没有检测到黑线,此时小车处于轨道的中间位置,所以小车执行前进。
(b)走着走着,发现小车走偏了,中间传感器不在轨道上,左测传感器检测到黑线了。说明此时,小车处于黑线的右侧,所以需要让小车执行左转,进行自我调整。直到恢复中间传感器检测到黑线位置,小车才停止左转,恢复前进的状态。
(c)相反,一旦右边传感器检测黑线了,说明小车偏离到黑线的左侧,此时需要让小车执右转了。和b情况一样,直到中间传感器检测再次检测到黑线时,才停止执行右转。
代码回顾:基础功能重复部分就不说了,只说下巡线部分的。int RightValue;    //Right line tractor sensor on Pin 8
int MiddleValue;   //Middle line tractor sensor on Pin 9
int LeftValue;   //Left line tractor sensor on Pin 10

//reading 3 pins values of Line Tracking Sensor
RightValue=digitalRead(8);
MiddleValue=digitalRead(9);
LeftValue=digitalRead(10);
用三个变量RightValue,MiddleValue,LeftValue分别记录3个传感器读到的值,digitalRead(pin)函数就是用来读取数字口的值,不明白的可以查看下语法手册 。巡线传感器检测到黑线后,输出一个低电平,检测到白线,输出一个高电平。下面这段代码描述的是巡线原理中的情况a。如果中间传感器检测到黑线,也就是输出为LOW。或者左右两侧传感器检测到白,也就是输出为HIGH时。小车执行前进。if (MiddleValue==LOW) {   //line in the middle
    Robot.Speed (100,100);
    delay(10);
}
else if ((LeftValue==HIGH) && (RightValue==HIGH)) {   
    Robot.Speed (100,100);
    delay(10);
}
如果一旦左边检测黑线,同时右侧检测到白线的时候,小车左转,也就是情况b:else if ((LeftValue==LOW)&&(RightValue==HIGH)){
    Robot.Speed (-100,100);//turn left
    delay(10);
}
相反,右边检测黑线,同时左侧检测到白线的时候,小车右转,也就是情况c:else if ((LeftValue==HIGH)&&(RightValue==LOW)){
    Robot.Speed (100,-100);//turn right
    delay(10);
}
大改造:其实看上去很复杂的机器人是不是也不是很难?巡线传感器改造一下可以用来做防跌落小车,如果你家是上下两层的,那就可以做个这样的防跌落小车,一旦走到楼梯口,就自动避开,不会摔个“四脚朝天”了。

hnyzcj 发表于 2016-6-9 14:15:18

很有爱,螺丝都排成人形。JANE是修炼出关了?

dsweiliang 发表于 2016-6-10 08:19:31

学习学习

Jane 发表于 2016-6-13 17:09:54

hnyzcj 发表于 2016-6-9 14:15
很有爱,螺丝都排成人形。JANE是修炼出关了?

哈哈哈 还需要在DF继续修炼修炼~

alieqiulijun 发表于 2016-6-23 16:32:17

感谢分享

yangxiaoshu 发表于 2016-6-30 21:10:09

谢谢分享

wgggggggggy 发表于 2018-4-10 19:17:22

我们上信息课要做循迹小车,可是只有一个巡线传感器诶

hmily0814 发表于 2018-5-16 10:41:04

谢谢分享

DFHk-0ykaN8 发表于 2020-3-5 10:26:44

已经学习了楼主,感谢发帖。

温柔的投降 发表于 2021-1-4 09:26:52

wgggggggggy 发表于 2018-4-10 19:17
我们上信息课要做循迹小车,可是只有一个巡线传感器诶

找你们老师要
页: [1]
查看完整版本: DIY海盗船系列 第3话 --- 黑白巡线功能