“(RB-13K079)AS-4WD超声波手势操控机器人”的版本间的差异
(→演示视频) |
|||
(未显示1个用户的3个中间版本) | |||
第113行: | 第113行: | ||
* 大按钮模块接数字口6,用于启动方向盘。 | * 大按钮模块接数字口6,用于启动方向盘。 | ||
===测试程序=== | ===测试程序=== | ||
− | ====方向盘端程序=== | + | ====方向盘端程序==== |
<pre style="color:blue"> | <pre style="color:blue"> | ||
int Button=6; //定义Button为数字口6 | int Button=6; //定义Button为数字口6 | ||
第236行: | 第236行: | ||
</pre> | </pre> | ||
− | ===平台端程序=== | + | ====平台端程序==== |
<pre style="color:blue"> | <pre style="color:blue"> | ||
void setup() | void setup() | ||
第351行: | 第351行: | ||
} | } | ||
</pre> | </pre> | ||
+ | ==演示视频== | ||
+ | [[File:4wd shou shi cao kong 01.png|400px|左|link=http://v.youku.com/v_show/id_XMzUyMTc4MDAw.html?from=y1.7-2]] | ||
+ | [[File:4wd ding ju 01.png|400px|居中|link=http://v.youku.com/v_show/id_XMzQyNzkwNzQw.html?from=y1.7-2]] | ||
+ | <br/> | ||
+ | |||
==产品相关推荐== | ==产品相关推荐== | ||
[[文件:erweima.png|230px|无框|右]] | [[文件:erweima.png|230px|无框|右]] |
2015年10月22日 (四) 13:55的最后版本
目录 |
产品概述
超声波作为智能车避障的一种重要手段,以其避障实现便,计算简单,易于做时控制,测量精度也能达到实用的要求,在未来汽车智能化进程中必将得到广泛。AS-4WD 超声波手势操控机器人采用4个RB-URF02 超声波传感器,对小车的方向进行控制,并使用蓝牙模块进行无线通信,实现无线控制4WD平台,本产品使用Carduino UNO控制器,此平台设计可以配合各个版本Arduino,例如:Arduino Due、Arduino Mega2560等,同样适合于树莓派控制器,为开发带来便利。产品为全铝合金车体,结实耐用,四个马达7.2V电压独立驱动,动力强劲,结构合理,便于扩展;独立散件包装,让您完全体验DIY的乐趣。
产品清单
技术参数
平台参数
- 车轮直径:65mm
- 车轮宽度:26mm
- 平台长度:206mm
- 平台宽度:200mm
- 平台高度:65mm
- 平台重量:620g
- 底盘距地面距离:13mm
平台尺寸图
直流减速电机(1:48)
- 驱动电机齿轮箱减速比:1:48
- 无负载转速(3V):168RPM
- 无负载转速(6V):300RPM
- 无负载时电流(3V):90mA
- 无负载时电流(6V):100mA
- 扭矩大小 (3V): 0.04N.m
- 扭矩大小 (6V): 0.08N.m
- 尺寸大小:70.50 mm×27.00 mm×23.00 mm(长×宽×高)
- 重量大小: 约30g
电控部分资料
Carduino UNO控制器
双H桥电机驱动板
传感器扩展板
大按钮模块
蓝牙模块
超声波传感器
安装步骤
步骤1:充电接口拨动开关连接线制作
平台安装步骤
步骤1:平台侧板电机安装
两侧电机安装相同,注意安装前将电机接线用电烙铁焊接好,套上热缩管加热塑封。
使用零件:平台侧板*2个、直流减速电机*4个、M3*25螺丝*8个、M3六角螺母*8个
步骤2:平台底板安装
使用零件:步骤1中安装好电机的侧板*2套、平台底板*1个、M3*6螺丝*4个
步骤3:双H桥电机驱动板安装
驱动板安装方向随意,注意同侧电机接线方向顺序,保证同侧电机转向是相同的。
使用零件:步骤2中的组合体、双H桥直流电机驱动板*1个、M3*10尼龙柱*4个、M3六角螺母*4个、M3*6螺丝*4个
步骤4:电池盒安装
电池盒可用双面胶固定,后轮电机接线需插入杜邦线帽,接入步进电机接口
使用零件:电池盒*1个或锂电池*1块
步骤5:4WD端板安装
使用零件:4WD端板*2个、步骤4中的组合体、M3*6螺丝*4个、M3六角螺母*4个
步骤6:充电接口、拨动开关安装
使用零件:步骤1中制作好的充电开关接口连接线、4WD上板
步骤7:Carduino UNO控制器安装
使用零件:步骤6中的组合体、Carduino UNO控制器*1个、M3*10尼龙柱*3个、M3*6螺丝*3个、M3六角螺母*3个
步骤8:4WD上板安装
使用零件:4WD平台上板*1个、步骤5中的组合体*1套、M3*6螺丝*4个
步骤9:4WD轮子安装
使用零件:步骤8中的组合体*1套、4WD轮子*4个
步骤10:V5.0传感器扩展板插入
使用零件:V5.0传感器扩展板*1个、步骤9中安装好的平台*1套
步骤11:蓝牙模块插入
注意:蓝牙模块插入前要对控制器进行程序上传,若插上蓝牙模块进行程序上传操作,会造成程序上传不成功问题。
使用零件:步骤10中的组合体*1套、蓝牙模块*1个
整机测试
接线说明
- 数字口2→接超声波
- 数字口10→接RB-421舵机
- 数字口5→接双H桥驱动板的EB
- 数字口6→接双H桥驱动板的I4
- 数字口7→接双H桥驱动板的I3
- 数字口8→接双H桥驱动板的I1
- 数字口9→接双H桥驱动板的I2
- 数字口11→接双H桥驱动板的EA
方向盘端制作
使用零件
- Carduino UNO 控制器*1个
- Arduino传感器扩展板 V5.0*1个
- 超声波传感器*4
- 大按钮模块*1
- 蓝牙模块*1
- 3P杜邦线*5
制作步骤
1.盘体制作:首先我们截取一块边长为20cm左右的正方形雪弗板(材料可自行选取)。
2.大按钮模块固定:用螺丝将大按钮模块固定在雪弗板的中间位置用来启动方向盘。
3.超声波传感器固定:分别用螺丝将4个超声波传感器固定在雪弗板的4个直角上,用来识别手势,超声波与大按钮模块摆放如下图所示,也可根据实际情况去摆放,一定要标明方向。
方向盘接线
超声波传感器采用单线模式
- UP超声波传感器接数字口2,用于识别前进的手势。
- Down超声波传感器接数字口3,用于识别后退的手势。
- Left超声波传感器接数字口4,用于识别左转手势。
- Right超声波传感器接数字口5,用于识别右转手势。
- 大按钮模块接数字口6,用于启动方向盘。
测试程序
方向盘端程序
int Button=6; //定义Button为数字口6 int z; //定义变量z int b; int duration_1; //定义变量duration_1用来存储脉冲 int distance_1; //定义变量distance_1用来存储距离值 int srfPin_1 = 2; //定义srfPin_1为数字口2 int val1; int duration_2; //定义变量duration_2用来存储脉冲 int distance_2; //定义变量distance_2用来存储距离值 int srfPin_2 = 3; //定义srfPin_2为数字口3 int val2; int duration_3; //定义变量duration_3用来存储脉冲 int distance_3; //定义变量distance_3用来存储距离值 int srfPin_3 = 4; //定义srfPin_3为数字口4 int val3; int duration_4; //定义变量duration_4用来存储脉冲 int distance_4; //定义变量distance_4用来存储距离值 int srfPin_4 = 5; //定义srfPin_4为数字口5 int val4; void setup() { Serial.begin(115200); //设定波特率为115200 pinMode(srfPin_1,OUTPUT); //定义srfPin1为输出模式 pinMode(srfPin_2,OUTPUT); //定义srfPin1为输出模式 pinMode(srfPin_3,OUTPUT); //定义srfPin1为输出模式 pinMode(srfPin_4,OUTPUT); //定义srfPin1为输出模式 pinMode(Button,INPUT); //定义Button为输入模式 } void loop() { if(LOW == digitalRead(Button)) b=1; else b=0; while(b) { val1=Ultrasonic_1(z); //前超声波返回距离值赋值给val1 val2=Ultrasonic_2(z); //后超声波返回距离值赋值给val2 val3=Ultrasonic_3(z); //左超声波返回距离值赋值给val3 val4=Ultrasonic_4(z); //右超声波返回距离值赋值给val4 if((val1>15)&&(val2>15)&&(val3>15)&&(val4>15)) Serial.print('T'); if((val1<15)&&(val3<15)) Serial.print('x'); else if((val1<15)&&(val1<val3)&&(val3<val4)) Serial.print('q'); if((val3<15)&&(val4>15)&&(val3<val1)&&(val3<val2)) Serial.print('l'); if((val1<15)&&(val4<15)) Serial.print('y'); else if((val1<15)&&(val1<val4)&&(val4<val3)) Serial.print('q'); if((val4<15)&&(val3>15)&&(val4<val1)&&(val4<val2)) Serial.print('r'); if((val2<15)&&(val3<15)) Serial.print('m'); else if((val2<15)&&(val2<val3)&&(val3<val4)) Serial.print('h'); if((val2<15)&&(val4<15)) Serial.print('n'); else if((val2<15)&&(val2<val4)&&(val4<val3)) Serial.print('h'); if((val3<15)&&(val4<15)) Serial.print('T'); if((val1<15)&&(val2<15)) Serial.print('T'); } } int Ultrasonic_1(int distance_1) { digitalWrite(srfPin_1, LOW); //高电平触发前发送2微秒的低电平 delayMicroseconds(2); //确保在发送高电平 digitalWrite(srfPin_1, HIGH); //发送10微秒的高电平开始检测 delayMicroseconds(10); digitalWrite(srfPin_1, LOW); //等待脉冲返回前发送一个低电平 pinMode(srfPin_1, INPUT); duration_1 = pulseIn(srfPin_1, HIGH); //从URF02读取脉冲 distance_1 = duration_1/58; //除以58得到距离值 return distance_1; } int Ultrasonic_2(int distance_2) { digitalWrite(srfPin_2, LOW); //高电平触发前发送2微秒的低电平 delayMicroseconds(2); digitalWrite(srfPin_2, HIGH); // 发送10微秒的高电平开始检测 delayMicroseconds(10); digitalWrite(srfPin_2, LOW); //等待脉冲返回前发送一个低电平 pinMode(srfPin_2, INPUT); duration_2 = pulseIn(srfPin_2, HIGH); //从URF02读取脉冲 distance_2 = duration_2/58; //除以58得到距离值 return distance_2; } int Ultrasonic_3(int distance_3) { digitalWrite(srfPin_3, LOW); //高电平触发前发送2微秒的低电平 delayMicroseconds(2); digitalWrite(srfPin_3, HIGH); //发送10微秒的高电平开始检测 delayMicroseconds(10); digitalWrite(srfPin_3, LOW); //等待脉冲返回前发送一个低电平 pinMode(srfPin_3, INPUT); duration_3 = pulseIn(srfPin_3, HIGH); //从URF02读取脉冲 distance_3 = duration_3/58; //除以58得到距离值 return distance_3; } int Ultrasonic_4(int distance_4) { digitalWrite(srfPin_4, LOW); //高电平触发前发送2微秒的低电平 delayMicroseconds(2); digitalWrite(srfPin_4, HIGH); //发送10微秒的高电平开始检测 delayMicroseconds(10); digitalWrite(srfPin_4, LOW); //等待脉冲返回前发送一个低电平 pinMode(srfPin_4, INPUT); duration_4 = pulseIn(srfPin_4, HIGH); //从URF02读取脉冲 distance_4 = duration_4/58; //除以58得到距离值 return distance_4; }
平台端程序
void setup() { Serial.print('a'); Serial.begin(115200); //设定波特率为115200 pinMode(8,OUTPUT); //定义I3接口 pinMode(9,OUTPUT); //定义I4接口 pinMode(10,OUTPUT); //定义EB(PWM调速)接口 pinMode(5,OUTPUT); //定义EA(PWM调速)接口 pinMode(6,OUTPUT); //定义I2接口 pinMode(7,OUTPUT); //定义I1接口 } void loop() { switch(Serial.read()) { case 'h': Back(); break; case 'q': Goahead(); break; case 'l': Turn_left(); break; case 'r': Turn_right(); break; case 'T': Stop(); break; case 'x': Goahead1(); break; case 'y': Goahead2(); break; case 'm': Back1(); break; case 'n': Back2(); break; } } void Back()// { analogWrite(5,90); //输入模拟值进行设定速度 digitalWrite(6,LOW); //使直流电机(左)逆时针转 digitalWrite(7,HIGH); analogWrite(10,105); //输入模拟值进行设定速度 digitalWrite(8,LOW); //使直流电机(右)顺时针转 digitalWrite(9,HIGH); } void Back1()// { analogWrite(5,80); //输入模拟值进行设定速度 digitalWrite(6,LOW); //使直流电机(左)逆时针转 digitalWrite(7,HIGH); analogWrite(10,50); //输入模拟值进行设定速度 digitalWrite(8,LOW); //使直流电机(右)顺时针转 digitalWrite(9,HIGH); } void Back2()// { analogWrite(5,50); //输入模拟值进行设定速度 digitalWrite(6,LOW); //使直流电机(左)逆时针转 digitalWrite(7,HIGH); analogWrite(10,105); //输入模拟值进行设定速度 digitalWrite(8,LOW); //使直流电机(右)顺时针转 digitalWrite(9,HIGH); } void Goahead()//前进 { analogWrite(5,90); //输入模拟值进行设定速度 digitalWrite(6,HIGH); //使直流电机(左)顺时针转 digitalWrite(7,LOW); analogWrite(10,105); //输入模拟值进行设定速度 digitalWrite(8,HIGH); //使直流电机(右)逆时针转 digitalWrite(9,LOW); } void Stop()//停止 { digitalWrite(6,HIGH); //使直流电机(左)制动 digitalWrite(7,HIGH); digitalWrite(8,HIGH); //使直流电机(右)制动 digitalWrite(9,HIGH); } void Turn_right() //右转 { analogWrite(5,155); //输入模拟值进行设定速度 digitalWrite(6,LOW); //使直流电机(左)逆时针转 digitalWrite(7,HIGH); analogWrite(10,140); //输入模拟值进行设定速度 digitalWrite(8,HIGH); //使直流电机(右)逆时针转 digitalWrite(9,LOW); } void Turn_left()//左转 { analogWrite(5,140); //输入模拟值进行设定速度 digitalWrite(6,HIGH); //使直流电机(左)逆时针转 digitalWrite(7,LOW); analogWrite(10,155); //输入模拟值进行设定速度 digitalWrite(8,LOW); //使直流电机(右)顺时针转 digitalWrite(9,HIGH); } void Goahead1()//前进 { analogWrite(5,130); //输入模拟值进行设定速度 digitalWrite(6,HIGH); //使直流电机(左)顺时针转 digitalWrite(7,LOW); analogWrite(10,60); //输入模拟值进行设定速度 digitalWrite(8,HIGH); //使直流电机(右)逆时针转 digitalWrite(9,LOW); } void Goahead2()//前进 { analogWrite(5,60); //输入模拟值进行设定速度 digitalWrite(6,HIGH); //使直流电机(左)顺时针转 digitalWrite(7,LOW); analogWrite(10,130); //输入模拟值进行设定速度 digitalWrite(8,HIGH); //使直流电机(右)逆时针转 digitalWrite(9,LOW); }
演示视频
产品相关推荐
产品购买地址
周边产品推荐
Arduino 4WD铝合金移动平台车灯套件
Arduino 光电码盘 光电测速传感器
相关问题解答
AS-4WD 碰撞机器人如何安装
4wd 红外线巡线壁障车调试助手没有反应
相关学习资料
视频:机器人调试助手无线操控AS-4WD轮式机器人
视频:Arduino-4WD移动机器人寻线功能演示
视频:Arduino-4WD移动机器人碰撞功能演示
视频:Arduino-4WD移动机器人追光功能演示
视频:Arduino-4WD移动机器人寻线与避障功能演示
视频:Arduino-4WD移动机器人侦测避障功能演示
视频:直流减速电机驱动实例
奥松机器人技术论坛