查看: 3368|回复: 5

[教程] DIY海盗船机器人系列教程 第1话--- 基础功能

[复制链接]
     DIY海盗船系列 第1话——基础功能
      在基础功能这个板块,可以让你的机器人实现最最简单的移动,比如前进,后退,左转,右转等等。有让你的机器人很快就活起来的简单代码,轻松上手。还等什么,那就开始吧!按照我们的步骤,一步一步来制作你的机器人。对了,做机器人工具可不能少。在做机器人之前,你还需要准备以下这些工具。

必备工具
螺丝刀,是机器人制作非常必要的工具。不用多说,用来拧螺丝的。建议你可以买一套完整的螺丝刀套件。面对不同型号的螺丝,使用起来就得心应手了。
01.png
电烙铁是常用来焊接电子元器件的工具,也是我们做一些电子制作的必备工具。我们这里需要用来焊接电机线的。
注意:因为电烙铁加热后,烙铁头温度相当高!如果你从未使用烙铁,建议先对烙铁使用有个简单认识之后再使用。使用时,请注意安全!
02.png
  • 尖嘴钳

我们常用尖嘴钳剪掉一些多余的线或者引脚。我们这里可能用到不多。不过,尖嘴钳也是电子制作必备工具之一。
03.png
  • 剥线钳

所谓剥线钳,就是用来剥线的。如果没有的话,也没关系,可以用剪刀替代。只需要减掉外面一层皮,露出里面的导线,便于焊接。
04.png

硬件材料
  • 海盗船移动平台 × 1
05.png
  • Romeo BLE 控制器 × 1
06.png
  • Micro USB数据线 × 1
07.png
组装步骤
工具准备就绪后,我们就要开始开工了!海盗船的底盘组装非常容易,只需要按照以下步骤一步步安装就行了。

STEP1: 安装电机
拿出零件包,有找到8个长螺丝吗?那就是用来固定电机的。按下图位置摆放电机,找到对应的8个固定孔,拧上螺丝就行了。
这里可能需要注意的一点是,零件包里面还有配有垫圈和锁紧垫片。垫圈可以用于增加摩擦力,是电机固定更牢固。锁紧片用来防止螺母由于震动可能导致的松脱。
08.png

09.png

STEP2:焊接电机线
取出套件里自带的红黑导线,每个电机红、黑各一根,长度大约在15cm左右。用剥线钳在线两头剥去外皮,留下导线用于焊接在电机引脚上。将四个电机线全部焊好。
注意:焊接的时候,注意线序正确,可参照下图的红黑线的位置。

10_副本.png

STEP3:安装Romeo BLE 控制器
找到零件包中的3个1cm长的铜柱,那是用于固定控制板的。首先,需要找到控制器的三个固定空位。并将铜柱拧上去。完成之后,再将控制器用螺丝固定上去。

13_副本.png

STEP4:安装电池盒
取出独立包装的两个沉头(顶部是平的)螺丝,按下图装配图,将电池盒固定到底盘上。

15_副本.png

STEP5:制作电源开关
我们都知道需要用电池来给机器人供电。平时不用的时候,需要断电来节约电量,那电源开关在这里就起到作用了。先按装配图将机器人的开关位置安装好。安装的时候注意垫片和螺母的顺序。


17.png

固定完成之后,就要开始焊线了,取出前面焊接电机连接线剩余的部分,可用于开关。同样,用剥线钳剥去线两头的外皮,留出导线部分用于焊接到开关的引脚上。焊接的时候注意看清楚开关的引脚位置。

18.png

我们一步步来:
a) 连接开关和充电接头。注意找准位置。

19.png

b) 按上图连线图,将电池盒的两根线焊接到充电接头上

20.png

来张大图,看的清楚点!

22.png

c) 最后,从充电接头和开关上引出正负极电源,用于接到后面的Romeo BLE主控器上。

23.png

同样来张放大图,清楚是怎么连接的吗?最后,检查一下焊接的线是否和一开始的连线图是吻合的。

STEP6:组装底盘
用8个M3×6mm的螺丝将前后板固定到侧板上。按下图装配图安装。
注意:拧螺丝的时候,不要一开始就将螺丝全拧紧,导致下一步安装上层板的时候。螺丝孔对应不上。

补.png

安装完后,将底板固定上去,见装配图。

25副.jpg

完成后的样子,记得装上电池!

STEP7:连接电机
这一步我们需要将电机和我们的控制器连接起来,按下图连线图将电机线一一接到电机驱动的接线柱上,并用螺丝刀拧紧固定。
注意:同一侧的两个电机需要固定在同一个电机驱动接口上。


27补.png


连接完成后,我们需要盖上顶板。盖顶板前,可以先装上传感器板。如果用不到的话,可以先不装。

28_副本.png

安装完成后,如下图所示。

30.png

STEP8:安装上层板
找到上层板的四个安装孔位,拧上螺丝。

30补.png

装上轮子,大功告成!


31补_副本.png

输入代码
组装完成后,机器人已经有了它的身体了。但还没有思想,所以,我们需要通过给她下载代码来赋予它“生命”,让它具有思想。
先下载编程软件——教程
接下来下载帖子最后面的附件,将其中的库文件导入——如何加载库文件
然后就可以直接在从样例代码包中找到MotorTest.ino代码打开。
样例代码MotorTest:
  1. #include <DFMobile.h>
  2. DFMobile Robot (4,5,7,6);     // initiate the Motor pin

  3. void setup () {
  4.   Robot.Direction (LOW,HIGH);  // initiate the positive direction  
  5. }

  6. void loop () {
  7.   Robot.Speed (255,255);      //Forward
  8.   delay (1000);

  9.   Robot.Speed (-255,-255);    //Back
  10.   delay (2000);
  11. }
复制代码

下载完成后,电机是否有动静呢?如果没有动静的话,检查电池是否安装正确。如果电机转动了,那恭喜你,完成第一步了,下载成功!
再仔细观察下,小车是不是按照我们特定的前进1s,后退1s呢?如果连这个都一样,那你太幸运了,你的电机连接方式和小编一模一样,你不需要做任何的调整了,只需轻松的将下面部分内容大致浏览下就行。不过,相信大部分人,还是需要做电机调试的。调试之前,我们首先需要先简单了解下机器人的移动方式。

如何让机器人前进?
多了不容易理解,我们就先拿前进来说吧,如何实现机器人的前进呢?通过下面这张图来说明小车机器人是如何前进的。

35补.png

箭头所指是轮子的方向,从图中可看到,只有当左右轮子都往前转的时候,小车是能够做到前进的。

代码回顾
代码的第一行如下所示:
  1. #include <DFMobile.h> // call library
复制代码

这一行,你不需要过多理解。调用了一个名为”DFMobile”的library,常被称为“库”。我们在代码里使用了DFMobile的库中的函数,所以,需要在代码的一开始指出所用的库。

接着往下,
  1. DFMobile Robot (4,5,7,6);     // initiate the Motor pin
复制代码

这个函数就是调用的DFMobile库中的。放在代码的一开始,用来初始化电机引脚的。我们在后面的代码中都会用到。

函数格式如下:

DFMobile Robot
(EnLeftPin,LeftSpeedPin,EnRightPin,RightSpeedPin);   
这个函数是用来初始化电机引脚的,分别有四个参数:
EnLeftPin: 左电机使能控制引脚
LeftSpeedPin:左电机速度控制引脚
EnRightPin: 右电机使能控制引脚
RightSpeedPin:右电机速度控制引脚
所以,之后的代码都需要在开始对电机的引脚进行设置,不可或缺的部分。注意,这个函数需要放在Setup函数中初始化。

在setup()函数中,我们对小车的正方向做了设置,这里特意对正方向重点说明。通过前面的测试代码后,我们发现电机的转向并不与我们代码相符,那是由于电机的线序顺序导致的,电机没有正负,上电后就能运转,把正负极对换则是相反的顺序。
所以,电机无非就两个顺序,正转和反转。我们在代码中通过LOW/HIGH来调整电机的正反转。我们这里并不制定LOW就是正转或者反转,因个人接线情况而定。
² 如何调整小车正方向?

调整电机的方向,我们需要用到下面这句语句是:
Robot.Direction (LOW,HIGH);
函数格式如下:
Robot.Direction (LeftDirection, RightDirection);
这个函数是用来设置电机的正方向的,函数分别有两个参数LeftDirection和RightDirection,可写入值为(LOW/HIGH)。

我们在前面简单介绍了一下小车前进的实现方法。这里,就通过这个函数来是初始化小车的正方向。
举个例子,在这段样例代码中,LeftDirection设置为LOW。可能你的小车左轮并不是向前转动,而是向后转动。那么,你只需将LeftDirection 的LOW改为HIGH。重新烧录代码,此时,左轮应该是向前转动了。如果调试成功后,按同样方法调试右轮。
一旦调试好小车的正方向,那么恭喜你!你已经基本可实现小车的基本功能了,再了解下样例代码最后一个函数Robot.Speed()。

函数格式如下:
Robot.Speed (LeftSpeed,RightSpeed);
该函数是用来设置电机转动速度的。分别有两个参数,LeftSpeed和RightSpeed。可写入的值为-255~255。255最大值并且通过负号来表示方向。
因为在初始化函数中,我们已经调试过小车的正方向了,所以这里可通过Speed()函数控制速度的同时,还可控制方向。

现在应该不难理解下面两句话了吧?
Robot.Speed (255,255);
Robot.Speed (-255,-255);   
上面一句表示全速前进,下面一句表示全速后退。代码就解释到这里,下面简单看下机器人的移动方式,也就是如何实现前进,后退,左转,右转等等。

机器人的移动方式
在下表中,罗列了几种常用的移动方式,同时也可以从表中看出其实现形式。举个例子,左轮方向速度为0,给右轮一个向前的速度,小车即可实现前左转。

36.png

可以思考下,如果想实现小车原地转圈该如何控制?

最后,还有一段测试代码可供测试,,可从代码包中找到MotorTest2.ino。这段代码不仅可测前进后退,还包含左转,右转。至此,你已经实现机器人的基础功能啦!












Code0.zip

1.96 KB, 下载次数: 35, 下载积分: 创造力 -1

丄帝De咗臂  版主

发表于 2015-9-1 19:11:01

不错哈
回复 支持 反对

使用道具 举报

孙毅  版主

发表于 2015-9-1 23:01:39

强悍!
回复 支持 反对

使用道具 举报

dsweiliang  版主

发表于 2015-9-5 08:18:54

很详细的教程啊,赞
回复 支持 反对

使用道具 举报

visionsl  高级技师

发表于 2015-9-15 18:33:51

真详细, 32个赞
回复 支持 反对

使用道具 举报

Garben  学徒

发表于 4 天前

板子可不可以替换成 DFRduino Uno R3 ???
回复 支持 反对

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

QQ