风火轮机器人の组装及上手介绍~
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
请教:将程序上传时,提示上传项目出错,信息如下:
可能是什么原因呀?
项目使用了 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
这是极简平衡车么
算是吧XD,加上电池后重心保持在轮轴下,但是启动会有加速度会导致小车前进不稳,所以后面会考虑线性增速启动。 套件有销售了吗? 本帖最后由 FBI-C 于 2016-7-18 16:28 编辑
drink 发表于 2016-7-15 17:52
套件有销售了吗?
套件有的,现正在筹备官网上线,线下已经开始销售了,有购买需求的,请联系我们。 极简设计,确实很吊 这不属于平衡车吧~~ 好玩儿,就喜欢这种,小巧的 不错,不错,可以试试!多谢楼主 学习学习,谢谢分享。
厉害厉害 6666666666
页:
[1]