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。这段代码不仅可测前进后退,还包含左转,右转。至此,你已经实现机器人的基础功能啦!
不错哈 强悍! 很详细的教程啊,赞 真详细, 32个赞 板子可不可以替换成 DFRduino Uno R3 ??? Garben 发表于 2017-12-8 21:24
板子可不可以替换成 DFRduino Uno R3 ???
可以换,不过需要加个电机驱动才行。 学习了 我是新手,请问向您这样的控制器,可以只连一个其他的电机吗 X 发表于 2018-5-21 21:18
我是新手,请问向您这样的控制器,可以只连一个其他的电机吗
可以只连一个电机的 记录下,好好拜读下 谢谢楼主分享 谢谢楼主分享,很详细。 很好的设计很好的设计 谢谢分享! 已经学习了楼主,感谢发帖。 这个底盘极限承重多少kg 这板子感觉好复杂,新手先找简单小板的教程
页:
[1]