(SKU: ROB0139) 风火轮V2.0

来自DFRobot Product Wiki
2018年1月24日 (三) 10:49Dfrobot-bj讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索
ROB0139 风火轮.jpg

目录

简介

本产品为风火轮机器人,以椴木板为原材料,由激光切割而成。结构上充分利用鲁班的智慧,实现少用螺丝,为用户简化装配过程。
具备敏捷的轮式机动性,运动机制独特新颖,呈现的运动形态也诙谐、有趣、逗比。并且生产的材料环保清洁。配合可扩展的多个电子模块,可实现多种有趣的教育案例。用户通过自行组装来复活风火轮机器人的过程中,对机器人移动平台有更深入认识和学习,本产品可通过DFRobot出品的GO BLE软件实现控制。
注意:风火轮V2.0使用升级版Romeo BLE Mini V2.0作为主控,操作更加方便,代码兼容性更广。

技术规格

  • Romeo BLE mini V2.0主控板
    • 传输距离:空旷地带30m以内
    • 支持蓝牙远程更新Arduino程序
    • 微处理器:ATmega328P
    • 引导装载程序:Arduino UNO
    • PWM通道:4 (D3 D9 D10 D11)
    • 模拟管脚:4
    • 输出电流:1.2A 单通道连续驱动电流
    • 启动/峰值电流:2A(连续脉冲)/ 3.2A(单脉冲)
    • 电机驱动管脚:D4 D5 D6 D7
  • 产品尺寸:120*120*85mm
  • 工作电压:6 - 10V
  • 工作温度:0 - 60°C
  • 驱动方式:两轮差速驱动
  • 电机空载转速:230±10% rpm
  • 小车行驶速度:1m/s


使用教程


准备

  • 硬件
    • Romeo mini控制板V2.0 x1
    • 电机 x2
    • 4节7号电池盒 x1
    • 7号电池 x4
    • 小车车架木板套件
    • 硅胶圈 X1
    • 螺丝若干
    • 十字小螺丝刀 x1
  • 软件


组装小车


参照安装说明。风火轮说明书下载

注意事项:
1.在安装说明中没有说明电机电源线走线路径,建议如下图方式走线,便于电机线的约束和小车的整洁。

2.安装完车架后,按下图连接电机线和电源线。
Connection

程序代码

我们会在控制器中预装初始代码,也会提供代码下载,方便大家学习研究,代码如下:


关于如何安装Arduino库? 请点击Arduino library 安装教程

/* -----蓝牙风火轮小车控制程序v2.0 
*/ 
#include "GoBLE.h"

//GoBLE Goble(Serial);
int joystickX, joystickY;   
int buttonState[7];
unsigned int led_count;
#define LED 13

//Motor Driver Pin
int E1 = 5;     //M1 Speed Control
int E2 = 6;     //M2 Speed Control
int M1 = 4;    //M1 Direction Control
int M2 = 7;    //M1 Direction Control

void stop(void)                    //Stop
{
  digitalWrite(E1,LOW);   
  digitalWrite(E2,LOW);      
}   
void advance(char a,char b)          //Move forward
{
  analogWrite (E1,a);      //PWM Speed Control
  digitalWrite(M1,LOW);    
  analogWrite (E2,b);    
  digitalWrite(M2,LOW);
}  
void back_off (char a,char b)          //Move backward
{
  analogWrite (E1,a);
  digitalWrite(M1,HIGH);   
  analogWrite (E2,b);    
  digitalWrite(M2,HIGH);
}
void turn_L (char a,char b)             //Turn Left
{
  analogWrite (E1,a);
  digitalWrite(M1,HIGH);    
  analogWrite (E2,b);    
  digitalWrite(M2,LOW);
}
void turn_R (char a,char b)             //Turn Right
{
  analogWrite (E1,a);
  digitalWrite(M1,LOW);    
  analogWrite (E2,b);    
  digitalWrite(M2,HIGH);
}

void setup() {
  Goble.begin();
  Serial.begin(115200);
  int i;
  for(i=4;i<=7;i++)
    pinMode(i, OUTPUT);  
  stop();
  pinMode(LED,OUTPUT);
}
void loop() {
  
  if (Goble.available()) 
  {
    readGoBle();
    motorContrl();
  }
  delayLedBlink();//delay 10ms and led blink
}
//读取GoBle所有按键摇杆值
void readGoBle()
{
  // read joystick value when there's valid command from bluetooth
  joystickX = Goble.readJoystickX();
  joystickY = Goble.readJoystickY();
  // read button state when there's valid command from bluetooth
  buttonState[SWITCH_UP]     = Goble.readSwitchUp();
  buttonState[SWITCH_DOWN]   = Goble.readSwitchDown();
  buttonState[SWITCH_LEFT]   = Goble.readSwitchLeft();
  buttonState[SWITCH_RIGHT]  = Goble.readSwitchRight();
  buttonState[SWITCH_SELECT] = Goble.readSwitchSelect();
  buttonState[SWITCH_START]  = Goble.readSwitchStart();
  /*Serial.println("========================");
   Serial.print("Joystick Value: ");
   Serial.print(joystickX);
   Serial.print("  ");
   Serial.println(joystickY);
   for (int i = 1; i <= 6; i++) {
   if (buttonState[i] == PRESSED) {
   Serial.print(" ID: ");
   Serial.print(i);
   Serial.print("\t ");
   Serial.println("Pressed!");
   }
   if (buttonState[i] == RELEASED){
   Serial.print("ID: ");
   Serial.print(i);
   Serial.print("\t ");
   Serial.println("Released!");
   }
   }*/
}
//根据GoBle按键值进行小车运动控制
//摇杆左右为转大弯,按键左右为原地转弯
void motorContrl()
{
  if ((buttonState[SWITCH_UP] == PRESSED)||((joystickX>128)&&(joystickY>=64)&&(joystickY<=192)))
  {
    advance (200,200);   //move forward in max speed
    return;//结束子函数
  }
  if ((buttonState[SWITCH_DOWN] == PRESSED)||((joystickX<128)&&(joystickY>=64)&&(joystickY<=192)))
  {
    back_off (200,200);   //move back in max speed
    return;//结束子函数
  }
  if(buttonState[SWITCH_LEFT] == PRESSED)
  {
    turn_L (100,100);
    return;//结束子函数
  }
  if((joystickY<128 )&&(joystickX>=64 )&&( joystickX<=192) )
  {
    advance (100,200);   //左转大弯
    return;//结束子函数
  }
  if( buttonState[SWITCH_RIGHT] == PRESSED)
  {
    turn_R (100,100);
    return;//结束子函数
  }
  if((joystickY>128)&&(joystickX>=64)&&(joystickX<=192))
  {
    advance (200,100);   //move forward in max speed
    return;//结束子函数
  }
  stop();//没有按键按下则停止
}
//led blink函数,每次执行延时10ms,100次时执行一次电平反向
void delayLedBlink()
{
  delay(10);
  led_count++;
  if(led_count>100) 
  {    
    digitalWrite(LED,!digitalRead(LED)); 
    led_count=0;
  }
} 


安装手机控制APP

扫描说明书或如下二维码下载安装GO BLE(暂只支持ios系统)

ROB0139 4.png




















安装GO BLE后,打开手机蓝牙,打开手机app GO BLE,按上小车电池,靠近小车点击手机上对应的小车蓝牙名称即可链接。如下操作控制小车。


ROB0139 5.png




















常见问题

如果安装完成后,操控小车前进或后退,小车一直打转,说明电机接线接反,对调更换即可。


安卓版控制软件goBle

此产品有任何问题,欢迎通过qq或者论坛联系我们!


更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。


更多


DFshopping car1.png DFRobot商城购买链接

个人工具
名字空间

变换
操作
导航
工具箱