查看: 13650|回复: 5

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

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

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

mini.png
  • 宽2.5cm黑胶带 × 1

胶带.png
  • 1m*1m白板 × 1

白板.png
  • M3*30MM尼龙柱(螺丝、螺母) × 3
尼龙柱.png
组装步骤:
找到硬件材料后,就开始组装了,组装不难,更着操作就行。
STEP1: 摆放材料
找到需要安装传感器的元件,3个M3*60MM的尼龙柱,配套的螺丝及螺母。

摆放材料.png
STEP 2: 固定尼龙柱
将尼龙柱用螺母先固定到传感器上。固定时,注意方向。螺母和探头是一个方向。

固定尼龙柱.png
STEP3: 安装传感器板
拆下小车的上层板,并将传感器板固定于小车车头。

传感器板.jpg

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

11.png 2.png
3.png

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

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

mini调试.png
输入代码:
插上USB线,下载代码。由于代码较长,所以这里就不全部显示出来,你可在软件包中找到 HuntingLineBlack.ino的代码,下载进去后即可。

巡线ino.png
制作轨道:
用2.5cm宽的黑胶带在白板上搭出如下图所示的轨道。

轨道.png

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

线宽.png
巡线原理:
怎么让小车一直跟着线走呢?我们需要让小车一直处于轨道的中间位置,一旦偏离轨道后,就进行自我调整。通过这3个巡线传感器就是来确定线的位置的。
小车在巡线的过程中,会出现以下三种情况:

a.png a1.png

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

b.png b1.png
(b)走着走着,发现小车走偏了,中间传感器不在轨道上,左测传感器检测到黑线了。说明此时,小车处于黑线的右侧,所以需要让小车执行左转,进行自我调整。直到恢复中间传感器检测到黑线位置,小车才停止左转,恢复前进的状态。

c.png c1.png   
(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)函数就是用来读取数字口的值,不明白的可以查看下语法手册[J1]
巡线传感器检测到黑线后,输出一个低电平,检测到白线,输出一个高电平。
下面这段代码描述的是巡线原理中的情况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, 下载次数: 47, 下载积分: 创造力 -1

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

谢谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

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

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

mail