Eric_X 发表于 2016-7-12 17:29:49

风火轮机器人の组装及上手介绍~

https://mc.dfrobot.com.cn/static/image/hrline/4.gif
号外!号外!风火轮机器人套件正式上线啦,可猛戳下面的链接:
https://www.dfrobot.com.cn/goods-1344.html
https://mc.dfrobot.com.cn/static/image/hrline/4.gif


今天带来的是风火轮机器人的组装及上手教程哦!在没有指导的情况下组装这个机器人还是比较困难的,大家可以参考我今天的介绍~
一、组装
首先我们需要准备的材料有:
1.用于组装本体的模型~


2.两个直流电机~


3.Romeo BLE mini控制器和一组螺丝~

4.十字型螺丝刀一枚~


5.电池盒一枚和4节7号电池~


接下来就动手组装:
第一步:组装内壳;
从模板上取下如下四块板子并组装,如下所示:


完成图:


第二步:组装控制板支撑板;
如下图所示:


第三步:组装电池盒支撑板;
如下图所示:


注意不要与插销搞混:


第四步:组装电机并固定;
将两个电机装进内壳并把电机轴固定在合适位置,插入插销,如下:


旋转插销夹紧两个电机至完全固定:


第五步:组装控制板并与电机连线;
使用螺丝固定控制板在支撑板上并连接电机的电源线:


控制板的电源线接口如图:



第六步:组装电池盒并连至控制板;


第七步:组装轮子;
先组装两个垫片:


装上轮子并使用垫圈和螺丝拧紧:
注意:旋转轮子确保轮子转动不受阻挡!


两边轮子都装好就基本上完成啦:

https://mc.dfrobot.com.cn/static/image/hrline/4.gif
正式的组装说明书已经上线啦!可以戳帖子最后的链接下载~
static/image/hrline/4.gif


二、调试
在调试上我们需要使用以下材料:
1.手机端APP:“走你”/“GoBLE”(目前仅支持iOS系统,即iPhone/iPad,可在App Store中免费下载)
下载地址:https://itunes.apple.com/cn/app/ ... qi/id950937437?mt=8
2.Arduino IDE
官网下载地址:https://www.arduino.cc/en/Main/Software/
选择Windows installer下载安装


第一步:安装GoBLE和Romeo.m库文件
因为在示例程序中需要调用已有的库函数,所以我们需要首先在Arduino的库中添加GoBLE(手机蓝牙通信App)和Romeo BLE mini板子的库文件。
库文件下载地址:
GoBLE 库函数;
Remeo 库函数;
GoBLE库文件安装方法:
首先打开下载文件并解压,找到library文件夹并打开,复制其中三个文件夹:


找到Arduino安装目录,找到libraries文件夹,将上述三个文件夹复制到这个文件夹下:


Remeo库文件安装方法:
打开下载文件并解压,直接复制在Arduino安装目录下libraries文件夹下:

如此,两个库文件即安装完成。

第二步:下载示例程序,用Arduino IDE打开,如下:/* -----蓝牙两轮小车控制程序 //------2016.6.29 by LL
//------适用于Romeo BLE mini 控制器
//https://www.dfrobot.com.cn/goods-1182.html

#include "GoBLE.h"
#include <Romeo_m.h>
#define LED 13

int joystickX, joystickY;   
int buttonState;
unsigned int led_count;

void setup() {
Romeo_m.Initialise();
Goble.begin();
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   = Goble.readSwitchUp();
    buttonState   = Goble.readSwitchDown();
    buttonState   = Goble.readSwitchLeft();
    buttonState= Goble.readSwitchRight();
    buttonState = Goble.readSwitchSelect();
    buttonState= Goble.readSwitchStart();
}

//根据GoBle按键值进行小车运动控制
//摇杆左右为转大弯,按键左右为原地转弯
void motorContrl()
{
    if ((buttonState == PRESSED)||((joystickX>128)&&(joystickY>=64)&&(joystickY<=192)))
    {
      Romeo_m.motorControl(Reverse,200,Forward,200);//前进
      return;//结束子函数
    }

    if ((buttonState == PRESSED)||((joystickX<128)&&(joystickY>=64)&&(joystickY<=192)))
   {
   Romeo_m.motorControl(Forward,150,Reverse,150);//后退
   return;//结束子函数
   }
   
    if(buttonState == PRESSED)
    {
      Romeo_m.motorControl(Forward,100,Forward,100);//左转
      return;//结束子函数
    }
   
    if((joystickY<128 )&&(joystickX>=64 )&&( joystickX<=192) )
   {
   
       Romeo_m.motorControl_M1(Reverse,80);//左转大弯
       Romeo_m.motorControl_M2(Forward,200);
      
      return;//结束子函数
   }
   
    if( buttonState == PRESSED)
    {
      Romeo_m.motorControl(Reverse,100,Reverse,100);//右转
      return;//结束子函数
    }
   
    if((joystickY>128)&&(joystickX>=64)&&(joystickX<=192))
    {
      
      Romeo_m.motorControl_M2(Forward,80); //右转大弯
      Romeo_m.motorControl_M1(Reverse,200);

      return;//结束子函数
    }
   
    Romeo_m.motorStop();//没有按键按下则停止
}
//led blink函数,每次执行延时10ms,100次时执行一次电平反向
void delayLedBlink()
{
    delay(10);
    led_count++;
    if(led_count>100)
    {   
      digitalWrite(LED,!digitalRead(LED));
      led_count=0;
    }
}

程序简要解析:#include "GoBLE.h"
#include <Romeo_m.h>这段调用两个头文件,以便直接调用其中的库函数;定义LED灯引脚。
void setup() {
Romeo_m.Initialise();
Goble.begin();
pinMode(LED,OUTPUT);
}程序初始化;
void loop() {
if (Goble.available())
{
    readGoBle();
    motorContrl();
}
delayLedBlink();//delay 10ms and led blink
}程序主体分两个函数,一是主要用于读取GoBLE中按键摇杆值的函数readGoBle(),另一个是进行小车控制的函数motorContrl(),并且添加了一个控制Led灯延时闪烁的程序;
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 = Goble.readSwitchUp();
buttonState = Goble.readSwitchDown();
buttonState = Goble.readSwitchLeft();
buttonState = Goble.readSwitchRight();
buttonState = Goble.readSwitchSelect();
buttonState = Goble.readSwitchStart();
}
readGoBle()中库函数Goble.readJoystickX()和Goble.readJoystickY()分别读取摇杆的X轴和Y轴的值,Goble.readSwitchXXXX()则分别读取按键值。
void motorContrl()
{
if ((buttonState == PRESSED)||((joystickX>128)&&(joystickY>=64)&&(joystickY<=192)))
{
    Romeo_m.motorControl(Reverse,200,Forward,200);//前进
    return;//结束子函数
}

if ((buttonState == PRESSED)||((joystickX<128)&&(joystickY>=64)&&(joystickY<=192)))
{
    Romeo_m.motorControl(Forward,150,Reverse,150);//后退
    return;//结束子函数
}

if(buttonState == PRESSED)
{
    Romeo_m.motorControl(Forward,100,Forward,100);//左转
    return;//结束子函数
}

if((joystickY<128 )&&(joystickX>=64 )&&( joystickX<=192) )
{

    Romeo_m.motorControl_M1(Reverse,80);//左转大弯
    Romeo_m.motorControl_M2(Forward,200);

    return;//结束子函数
}

if( buttonState == PRESSED)
{
    Romeo_m.motorControl(Reverse,100,Reverse,100);//右转
    return;//结束子函数
}

if((joystickY>128)&&(joystickX>=64)&&(joystickX<=192))
{

    Romeo_m.motorControl_M2(Forward,80); //右转大弯
    Romeo_m.motorControl_M1(Reverse,200);

    return;//结束子函数
}
motorContrl()中主要是根据按键和摇杆的状态值控制小车进行相应的运动;


其中控制小车运动的库函数的格式如下:
Romeo_m.motorControl(a,b,c,d); 其中a和c为方向值,分别对应Forward和Reverse,亦即前进和后退,c和d分别为两个电机的速度大小,数值越高,转速越快;
Remeo_m.motorControl_Mx(a,b); 其中x为电机值,分别为1和2,a是方向值,对应Forward和Reverse,b是转速值。


注意:控制小车前进时两个电机的转动方向相反,为什么?答案就在于我们的电机安装方向相反,所以要让两个轮子转动方向相同,则两个电机的转动方向应该相反。

void delayLedBlink()
{
delay(10);
led_count++;
if(led_count>100)
{
    digitalWrite(LED,!digitalRead(LED));
    led_count=0;
}这个函数用于延时,并且控制LED闪烁。

第三步,打开Arduino下载程序。
在工具栏中选择开发板型号为Arduino/Genuino Uno,并选择正确的端口号,调试并下载程序。






第四步:打开手机App进行调试
首先打开手机App GoBLE(“中文版为‘走你’”),如下所示:


下载好程序并给小车通电后,打开手机蓝牙,点击红色搜索按钮,搜索单片机的蓝牙信号,如下所示:


点击正确型号的单片机蓝牙并连接,连接成功后搜索按钮会变成绿色,如下:


此时就可以通过虚拟按键和摇杆控制小车啦。分别试试各个按键和摇杆看看它们的作用吧~

v0.1版本功能特性
1、电机驱动
2、手机蓝牙控制
V0.2版本
1、优化运动控制(起步停止匀加速匀减速)
2、增加避障功能



https://mc.dfrobot.com.cn/static/image/hrline/4.gif
号外!号外!风火轮机器人套件正式上线啦,可猛戳下面的链接:
https://www.dfrobot.com.cn/goods-1344.html
https://mc.dfrobot.com.cn/static/image/hrline/4.gif





bonnie_loulou 发表于 2016-8-8 21:34:46

请教:将程序上传时,提示上传项目出错,信息如下:

可能是什么原因呀?

项目使用了 4,960 字节,占用了 (15%) 程序存储空间。最大为 32,256 字节。
全局变量使用了428字节,(20%)的动态内存,余留1,620字节局部变量。最大为2,048字节。
C:\Program Files\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:C:\Users\louhl\AppData\Local\Temp\build3329dcf4596b554ca79ebbd930833f56.tmp/car.ino.hex:i
上传项目出错

dsweiliang 发表于 2016-7-13 12:25:00

这是极简平衡车么

Eric_X 发表于 2016-7-14 11:46:49

dsweiliang 发表于 2016-7-13 12:25
这是极简平衡车么

算是吧XD,加上电池后重心保持在轮轴下,但是启动会有加速度会导致小车前进不稳,所以后面会考虑线性增速启动。

drink 发表于 2016-7-15 17:52:51

套件有销售了吗?

FBI-C 发表于 2016-7-18 16:27:29

本帖最后由 FBI-C 于 2016-7-18 16:28 编辑

drink 发表于 2016-7-15 17:52
套件有销售了吗?
套件有的,现正在筹备官网上线,线下已经开始销售了,有购买需求的,请联系我们。

lauren 发表于 2016-7-25 13:13:21

极简设计,确实很吊

凌风清羽 发表于 2016-7-26 08:08:05

这不属于平衡车吧~~

yoyojacky 发表于 2016-7-27 17:50:17

好玩儿,就喜欢这种,小巧的

hejie13250 发表于 2016-7-28 08:41:30

不错,不错,可以试试!多谢楼主

DFSkangKjBr 发表于 2019-9-4 08:54:59

学习学习,谢谢分享。

小企鹅 发表于 2022-3-17 18:19:12

厉害厉害

小企鹅 发表于 2022-3-17 18:20:16

6666666666
页: [1]
查看完整版本: 风火轮机器人の组装及上手介绍~