Jane 发表于 2015-9-1 11:12:58

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

## **DIY海盗船系列 第1话——基础功能**

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

**必备工具**

- [螺丝刀](https://www.dfrobot.com.cn/goods-797.html)

螺丝刀,是机器人制作非常必要的工具。不用多说,用来拧螺丝的。建议你可以买一套完整的螺丝刀套件。面对不同型号的螺丝,使用起来就得心应手了。



- [电烙铁](https://www.dfrobot.com.cn/goods-977.html)

电烙铁是常用来焊接电子元器件的工具,也是我们做一些电子制作的必备工具。我们这里需要用来焊接电机线的。

> 注意:因为电烙铁加热后,烙铁头温度相当高!如果你从未使用烙铁,建议先对烙铁使用有个简单认识之后再使用。使用时,请注意安全!



- 尖嘴钳

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


- 剥线钳

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


### **硬件材料**

- 海盗船移动平台 × 1


- Romeo BLE 控制器 × 1


- Micro USB数据线 × 1

### **组装步骤**

工具准备就绪后,我们就要开始开工了!海盗船的底盘组装非常容易,只需要按照以下步骤一步步安装就行了。


#### **STEP1: 安装电机**

拿出零件包,有找到8个长螺丝吗?那就是用来固定电机的。按下图位置摆放电机,找到对应的8个固定孔,拧上螺丝就行了。

这里可能需要注意的一点是,零件包里面还有配有垫圈和锁紧垫片。垫圈可以用于增加摩擦力,是电机固定更牢固。锁紧片用来防止螺母由于震动可能导致的松脱。





#### **STEP2:焊接电机线**

取出套件里自带的红黑导线,每个电机红、黑各一根,长度大约在15cm左右。用剥线钳在线两头剥去外皮,留下导线用于焊接在电机引脚上。将四个电机线全部焊好。

>注意:焊接的时候,注意线序正确,可参照下图的红黑线的位置。





#### **STEP3:安装Romeo BLE 控制器**

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


#### **STEP4:安装电池盒**

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


#### **STEP5:制作电源开关**

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


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


我们一步步来:

a) 连接开关和充电接头。注意找准位置。


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


来张大图,看的清楚点!


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


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

#### **STEP6:组装底盘**

用8个M3×6mm的螺丝将前后板固定到侧板上。按下图装配图安装。

注意:拧螺丝的时候,不要一开始就将螺丝全拧紧,导致下一步安装上层板的时候。螺丝孔对应不上。


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


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

**#### STEP7:连接电机**

这一步我们需要将电机和我们的控制器连接起来,按下图连线图将电机线一一接到电机驱动的接线柱上,并用螺丝刀拧紧固定。

注意:同一侧的两个电机需要固定在同一个电机驱动接口上。



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


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


**#### STEP8:安装上层板**

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


装上轮子,大功告成!



输入代码

组装完成后,机器人已经有了它的身体了。但还没有思想,所以,我们需要通过给她下载代码来赋予它“生命”,让它具有思想。

先下载编程软件——[教程](https://wiki.dfrobot.com.cn/index.php?title=Arduino入门教程)

接下来下载帖子最后面的附件,将其中的库文件导入——[如何加载库文件](https://mc.dfrobot.com.cn/thread-1854-1-1.html)

然后就可以直接在从样例代码包中找到MotorTest.ino代码打开。

样例代码MotorTest:



```
#include <DFMobile.h>

DFMobile Robot (4,5,7,6);   // initiate the Motor pin

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

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

Robot.Speed (-255,-255);   //Back
delay (2000);
}
```

下载完成后,电机是否有动静呢?如果没有动静的话,检查电池是否安装正确。如果电机转动了,那恭喜你,完成第一步了,下载成功!

再仔细观察下,小车是不是按照我们特定的前进1s,后退1s呢?如果连这个都一样,那你太幸运了,你的电机连接方式和小编一模一样,你不需要做任何的调整了,只需轻松的将下面部分内容大致浏览下就行。不过,相信大部分人,还是需要做电机调试的。调试之前,我们首先需要先简单了解下机器人的移动方式。

如何让机器人前进?

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


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

代码回顾

代码的第一行如下所示:

```
#include <DFMobile.h> // call library
```

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

接着往下,

> 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,给右轮一个向前的速度,小车即可实现前左转。



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

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

丄帝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 发表于 2017-12-8 21:24:26

板子可不可以替换成 DFRduino Uno R3 ???

Jane 发表于 2017-12-28 15:00:20

Garben 发表于 2017-12-8 21:24
板子可不可以替换成 DFRduino Uno R3 ???

可以换,不过需要加个电机驱动才行。

TODAYSMILE 发表于 2018-4-30 21:30:48

学习了

X 发表于 2018-5-21 21:18:53

我是新手,请问向您这样的控制器,可以只连一个其他的电机吗

Jane 发表于 2018-6-12 15:21:25

X 发表于 2018-5-21 21:18
我是新手,请问向您这样的控制器,可以只连一个其他的电机吗

可以只连一个电机的

gada888 发表于 2018-9-30 11:55:24

记录下,好好拜读下

niefubao 发表于 2018-10-7 20:15:23

谢谢楼主分享

Austin 发表于 2019-2-28 22:19:24

谢谢楼主分享,很详细。

破风而来 发表于 2019-3-8 11:49:48

很好的设计很好的设计

jzzgb 发表于 2019-10-31 21:11:01

谢谢分享!

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

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

20060606 发表于 2020-6-21 05:32:03

这个底盘极限承重多少kg

4818 发表于 2024-3-15 22:25:01

这板子感觉好复杂,新手先找简单小板的教程
页: [1]
查看完整版本: DIY海盗船机器人系列教程 第1话--- 基础功能