MiniQ智能小车 探索套件
MiniQ智能小车 探索套件(SKU:KIT0071)
目录
1 简介
2 性能参数
3 使用教程
3.1 组装教程
3.2 连线图
3.3 电机调试
3.4 舵机调试
3.5 小车玩法
简介
该套件是一款专门为教育,竞赛,娱乐设计的具有极强扩展性的小车套件。主要由miniQ桌面机器人底盘,Romeo V2多合一控制器,GP2Y0A21距离传感器等组成。套件配套的顶板直接兼容9克舵机,并带有超声波传感器,电池等固定孔,方便安装各类传感器。
小车采用DFRobot独家的RomeoV2控制器集成Arduino Leonardo、IO扩展板和电机驱动,具备强大的扩展和驱动能力,而且体积更小,是智能小车的绝配。
顶板自带洞洞板,可直接焊接直插或贴片的元器件,随时随地扩展你需要的功能,让你的机器人项目快速成型。装配好并下载好我们的样例代码即可实现避障功能。你可以把它作为教学用的套件,也可以自己玩,根据你能力往上加东西,组装一个独一无二的的机器小车!
另外告诉大家一个好消息:我们已经给电机焊好了线,打好了胶,大家再也不必为焊线烦恼了,到手即可组装哦。
性能参数
GP2Y0A21距离传感器技术规格
信号类型:模拟输出
探测距离:10-80cm
工作电压:4.5-5.5V
标准电流消耗:30 mA
接口类型:PH2.0-3P
最大尺寸:40x20x13.5 mm
电机技术规格
空载负载:13000 rpm
齿轮箱减速比:50:16V
转速:260 rpm6V
电流:40mA6V
堵转电流:360mA6V
力矩:0.111kg/cm
使用教程
本教程将引导你如果组装和使用mini q小车。(注意:板子上S1-S5 switch开关要拨到OFF档位)
组装教程
硬件
miniQ智能小车 探索套件
软件
Arduino IDE 1.0.6 点击下载 Arduino IDE
组装步骤请参考:[小车组装步骤链接]
连线图
MiniQ智能小车 探索套件连线图
电机调试
将小车通过microUSB线接到电脑上,打开Arduino IDE界面,选择正确的板型(Arduino Leonardo)和串口,烧录附件中的test_motor的代码。
#include <math.h>
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,0);
digitalWrite(M1,LOW);
digitalWrite(E2,0);
digitalWrite(M2,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()
{
int i;
for(i=4;i<=7;i++)
pinMode(i, OUTPUT);
pinMode(2,OUTPUT);
digitalWrite(E1,LOW);
digitalWrite(E2,LOW);
}
void loop()
{
advance(80,80);delay(3000);
back_off(80,80);delay(3000);
turn_L(80,80);delay(3000);
turn_R(80,80);delay(3000);
stop();delay(3000);
}
void advance(char a,char b) //Move forward
{
analogWrite (E1,a); //PWM Speed Control
digitalWrite(M1,LOW);
analogWrite (E2,b);
digitalWrite(M2,LOW);
}
而下面的analogWrite (E2,b)和digitalWrite(M2,LOW)就是控制另一个电机同时正转。
舵机调试
将小车通过microUSB线接到电脑上,打开Arduino IDE界面,选择正确的板型(Arduino Leonardo)和串口,烧录附件中的test_servo的代码。
#include <Servo.h>
Servo irservo;
byte Angle = 90;
// Setup function
void setup(){
irservo.attach(9);
// move servos to center position -> 90°
irservo.write(Angle);
delay(2000);
} // The loop remains empty
void loop(){
}
小车玩法
/*
This Sample code is for testing the MiniQ Discovery Kit.
Editor : Phoebe
Date : 2014.6.19
Ver : 0.1
Product: MiniQ Discovery Kit
SKU : KIT0071
Description:
Obstacle avoidance function of MiniQ Discovery Kit
*/
#include <math.h>
#include <Servo.h> //Include Servo library
Servo irservo; // create servo object to control a servo
#define Svo_Pin 9
int posnow;
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,0);
digitalWrite(M1,LOW);
digitalWrite(E2,0);
digitalWrite(M2,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,LOW);
analogWrite (E2,b);
digitalWrite(M2,HIGH);
}
void turn_R (char a,char b) //Turn Right
{
analogWrite (E1,a);
digitalWrite(M1,HIGH);
analogWrite (E2,b);
digitalWrite(M2,LOW);
}
void setup()
{
int i;
for(i=4;i<=7;i++)
pinMode(i, OUTPUT);
// pinMode(2,OUTPUT);
// Serial.println("Run keyboard control");
digitalWrite(E1,LOW);
digitalWrite(E2,LOW);
irservo.attach(Svo_Pin); //attaches the servo on pin 9 to the servo object
Serial.begin(19200); //Set Baud Rate
advance(80,80);
}
int pos=0; // variable to store the servo position
float distance;
void loop()
{
// digitalWrite(2,HIGH);
for (int i=0;i<180;i++)
{
irservo.write(i);
int x=analogRead(0); // connect the GP2Y0A21 distance sensor to Analog 0
Serial.println(x); // print distance
if(x>350)
{
// digitalWrite(2,LOW);delay(100); digitalWrite(2,HIGH); delay(100);
if(i<135)
{
back_off(80,80);delay(300);
turn_L(80,80);delay(300);
}
else
{
back_off(80,80);delay(300);
turn_R(80,80);delay(300);
}
advance(80,80);
}
delay(4);
}
for(int i=180;i>0;i--)
{
irservo.write(i);
int x=analogRead(0);
Serial.println(x); // print distance
if(x>350)
{
// digitalWrite(2,LOW);delay(100); digitalWrite(2,HIGH); delay(100);
if(i<135)
{
back_off(80,80);delay(300);
turn_L(80,80);delay(300);
}
else
{
back_off(80,80);delay(300);
turn_R(80,80);delay(300);
}
advance(80,80);
}
delay(4);
}
}
for (int i=0;i<180;i++)
for(int i=180;i>0;i--)
if(x>350)
这行代码,变量x读取的是红外传感器的值,x值的变化范围是0~1024,x>350转化成国际长度单位就是距离小于大概6厘米,也就是说设置6cm以内前方有障碍物。 如果想要了解红外传感器读取的值与实际距离的换算,请单击下面链接: SHARP GP2Y0A41SKOF 红外距离传感器 (4-30cm) 这个时候就通过舵机的角度控制:if(i<135)
如果舵机角度小于135,那么小车后退并且向左转,否则向右转。Go Shopping MiniQ智能小车 探索套件