2016-6-9 09:04:57 [显示全部楼层]
527527浏览
查看: 527527|回复: 9

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

[复制链接]
DIY海盗船系列 第3话 --- 黑白巡线功能

在完成基础功能后,我们对机器人来个升级,给它增加黑白巡线功能。巡线功能,是机器人最基础的功能之一。小车能够跟着事先设定好的轨道,进行自主移动。用到的是Mini巡线传感器,可帮助机器人进行黑线与白线的识别,从而实现黑白巡线。

硬件材料:
  • Mini巡线传感器V3.0 × 3

DIY海盗船系列 第3话 --- 黑白巡线功能图1
  • 宽2.5cm黑胶带 × 1

DIY海盗船系列 第3话 --- 黑白巡线功能图2
  • 1m*1m白板 × 1

DIY海盗船系列 第3话 --- 黑白巡线功能图3
  • M3*30MM尼龙柱(螺丝、螺母) × 3
DIY海盗船系列 第3话 --- 黑白巡线功能图12
组装步骤:
找到硬件材料后,就开始组装了,组装不难,更着操作就行。
STEP1: 摆放材料
找到需要安装传感器的元件,3个M3*60MM的尼龙柱,配套的螺丝及螺母。

DIY海盗船系列 第3话 --- 黑白巡线功能图4
STEP 2: 固定尼龙柱
将尼龙柱用螺母先固定到传感器上。固定时,注意方向。螺母和探头是一个方向。

DIY海盗船系列 第3话 --- 黑白巡线功能图5
STEP3: 安装传感器板
拆下小车的上层板,并将传感器板固定于小车车头。

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

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

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

硬件连接:
传感器安装完成后,先不要急着把上层板接上去,需要将传感器与Romeo BLE控制器连接。左边这张图显示的是三个传感器ABC在小车上对应的位置,分别对应数字口的10,9,8。,连接时只需留意线序是否正确即可。安装完成后,固定上层板。

DIY海盗船系列 第3话 --- 黑白巡线功能图10DIY海盗船系列 第3话 --- 黑白巡线功能图11
传感器调试:
下载代码前,需要对三个传感器的做调整,先插上USB线,给板子供电。下图可见有个十字螺丝,可用来调整检测距离。拿一张白色纸,放在传感器探头下,找到传感器的探测点,一旦找到传感器上的指示灯会亮起。拿出一把螺丝刀,拧转螺丝,感受检测距离的变化,同时找到传感器检测地面黑线的最佳探测距离,推荐在2cm左右。

DIY海盗船系列 第3话 --- 黑白巡线功能图13
输入代码:
插上USB线,下载代码。由于代码较长,所以这里就不全部显示出来,你可在软件包中找到 HuntingLineBlack.ino的代码,下载进去后即可。

DIY海盗船系列 第3话 --- 黑白巡线功能图14
制作轨道:
用2.5cm宽的黑胶带在白板上搭出如下图所示的轨道。

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

线的宽度大约在2.5cm左右,大致在左边和右边的传感器之间。之所以这样布线的原因是由代码决定的,我们在后面一小节会介绍到。

DIY海盗船系列 第3话 --- 黑白巡线功能图16
巡线原理:
怎么让小车一直跟着线走呢?我们需要让小车一直处于轨道的中间位置,一旦偏离轨道后,就进行自我调整。通过这3个巡线传感器就是来确定线的位置的。
小车在巡线的过程中,会出现以下三种情况:

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

(a)小车刚一开始放入轨道的时候,只有中间的传感器检测到黑线了,左右两侧的传感器均没有检测到黑线,此时小车处于轨道的中间位置,所以小车执行前进。

DIY海盗船系列 第3话 --- 黑白巡线功能图19DIY海盗船系列 第3话 --- 黑白巡线功能图20
(b)走着走着,发现小车走偏了,中间传感器不在轨道上,左测传感器检测到黑线了。说明此时,小车处于黑线的右侧,所以需要让小车执行左转,进行自我调整。直到恢复中间传感器检测到黑线位置,小车才停止左转,恢复前进的状态。

DIY海盗船系列 第3话 --- 黑白巡线功能图21DIY海盗船系列 第3话 --- 黑白巡线功能图22  
(c)相反,一旦右边传感器检测黑线了,说明小车偏离到黑线的左侧,此时需要让小车执右转了。和b情况一样,直到中间传感器检测再次检测到黑线时,才停止执行右转。

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

Code.zip

2.58 KB, 下载次数: 300

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
我们上信息课要做循迹小车,可是只有一个巡线传感器诶

找你们老师要
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail