履带机器人金属电机移动平台
目录
1 简介
2 参考的电源连接方式
2.1 电池盒供电方案
2.2 可充电锂电池供电方案
3 马达接线的调试
3.1 调整电机正负极与电机接线柱接线位置
3.2 修改程序中电机方向的参数
4 实现蓝牙控制(以GoBLE App为例)
4.1 GoBLE简介
4.2 GoBle库文件中的函数说明
4.2.1 判断是否接受蓝牙数据
4.2.2 定义变量
4.2.3 读取参数
4.2.4 处理读取的摇杆参数
4.2.5 建立摇杆和小车运动的联系
简介
Devastator Tank Mobile Platform 履带机器人是DFRobot 研制的机器人实验平台,该平台不但可以使用当前流行的Arduino控制器,也可以使用Raspberry pi等其他控制器控制。
机身采用高强度铝合金材料,高速电机加优质塑料履带,运动灵活快速,性能卓越的悬挂系统能让机器人轻松的翻越障碍物,适应大部分不规则场地。
履带机器人平台机身设计多种安装孔,兼容各种传感器、舵机、云台和主控板控制器安装(例如Romeo控制器、Raspberry Pi控制器),非常适合机器人比赛以及其相关研究项目。
参考的电源连接方式
电池盒供电方案
<img alt="ROB0128 ConnectA.png" src="http://images.ncnynl.com/arduino/2016/ROB0128_ConnectA.png" width="823" height="800" />
本供电方式的优点是电路连接方式较为简单。但考虑到经济性,推荐使用可充电的AA电池。
可充电锂电池供电方案
电池购买链接:
7.4V锂电池的连接
<img alt="ROB0128 ConnectB.png" src="http://images.ncnynl.com/arduino/2016/ROB0128_ConnectB.png" width="889" height="800" />
本供电方式在搭建电路上相较于电池盒供电方案较为复杂。优点是一劳永逸,搭建后,锂电池可不用拆卸,履带车平台接上适配器后即可充电。
马达接线的调试
因为左右侧马达是反向安装的,所以当两个马达朝着同一方向转动时(如均顺时针转动),履带车必然是执行转弯的动作。这里可以通过两种方法纠正这个问题。
调整电机正负极与电机接线柱接线位置
<img alt="ROB0112 Bluno connection.jpg" src="http://images.ncnynl.com/arduino/2016/1000px-ROB0112_Bluno_connection.jpg" width="1000" height="563" />
修改程序中电机方向的参数
DFRobot专门为Romeo系列的控制板编写了控制电机的库“DFMobile”。只需要在程序中调用并修改相关语句即可。
函数:DFMobile Robot (4,5,7,6)
作用:用于初始化控制小车两侧直流电机的引脚。
说明:DFMobile Robot(EnLeftPin,LeftPWMSpeedPin,EnRightPin,RightPWMSpeedPin);
在Romeo系列的控制板上,默认数字引脚D4.D5.D6.D7用于控制左右电机的速度与方向。
<img alt="" src="http://images.ncnynl.com/arduino/2016/Romeo_BLE.png" width="1000" height="645" />
Romeo BLE电路原理图
函数:Robot.Direction(bool left, bool right)); //注,Robot为定义的对象名,用户可自行在程序开头声明
作用:用于改变两侧马达的控制方向
说明:只需要简单的修改"left","right"两个布尔变量的值,就可以方便地改变马达的转向。
例:如DFMobilr.Direction(LOW,HIGH);可以用来修正马达相对反装而造成的编程逻辑上的麻烦。并且用户如果不小心将马达的接线接错,也可以用这个 函数进行快速的改正这个错误。
实现蓝牙控制(以GoBLE App为例)
GoBLE简介
GoBle是一款通用的蓝牙遥控器! 让你可以与机器人、移动平台或无人机等任何你想要控制的设备进行通信。
遥控器具有一个模拟量的摇杆,六个数字按键,采用传统游戏手柄布局,符合DFRobot标准通讯协议,让用户能快速上手完成理想的作品。
<img alt="GoBLE.png" src="http://images.ncnynl.com/arduino/2016/466px-GoBLE.png" width="466" height="246" />
GoBle库文件中的函数说明
判断是否接受蓝牙数据
代码:
Goble.available()
作用:当接收到蓝牙发过来的数值时它的值为TURE,否则返回False.
说明:用于判断是否接收到“走你”App发来的蓝牙数据。下面是用法:
if(Goble.available()){
do.something;
}
定义变量
代码:
int joystickX,joystickY,buttonState[6];
说明:这三个变量是针对GoBLE库定义的。分别用来存储摇杆X轴,Y轴以及6个按键的状态值的。
读取参数
代码:
joystickX = Goble.readJoystickX();
joystickX = Goble.readJoystickX();
说明:读取摇杆参数。
处理读取的摇杆参数
代码:
int SpeedX=2joystickX-256;
int SpeedY=2joystickY-256;
说明:需要将手柄读到的数据映射到我们小车的轮子转速上,所以就有了下面这两句。将读到的原始数据0~255映射为小车速度-255~255。
建立摇杆和小车运动的联系
程序代码
效果
if (SpeedX>200 || SpeedX<-200){
LeftWheelSpeed=SpeedX;
RightWheelSpeed=SpeedX;
Robot.Speed (LeftWheelSpeed,RightWheelSpeed);
}
else if (SpeedY>200 || SpeedY<-200){
LeftWheelSpeed=SpeedY-80;
RightWheelSpeed=-SpeedY-80;
Robot.Speed(LeftWheelSpeed,RightWheelSpeed);
}
else if (SpeedX==0 && SpeedY==0){
Robot.Speed(0,0);
}
如果 ( 摇杆向上 或者(||) 摇杆向下 ){
小车前进或者后退;
}
如果 ( 摇杆向右 或者(||) 摇杆向左){
小车右转或者左转;
}
如果 (摇杆X轴没变化 并且(&&) 摇杆Y轴没变化){
小车停止;
}