“(RB-13K079)AS-4WD超聲波手勢操控機器人”的版本間的差異

來自ALSROBOT WiKi
跳轉(zhuǎn)至: 導航搜索
?產(chǎn)品相關(guān)推薦
?演示視頻
第353行: 第353行:
 
==演示視頻==
 
==演示視頻==
 
[[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 shou shi cao kong 01.png|400px|左|link=http://v.youku.com/v_show/id_XMzUyMTc4MDAw.html?from=y1.7-2]]
?
<br/>
+
[[File:4wd ding ju 01.png|400px|左|link=http://v.youku.com/v_show/id_XMzQyNzkwNzQw.html?from=y1.7-2]]
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
?
<br/>
+
 
<br/>
 
<br/>
  

2015年10月22日 (四) 13:55的版本

RB-13K07901.png

目錄

產(chǎn)品概述

超聲波作為智能車避障的一種重要手段,以其避障實現(xiàn)便,計算簡單,易于做時控制,測量精度也能達到實用的要求,在未來汽車智能化進程中必將得到廣泛。AS-4WD 超聲波手勢操控機器人采用4個RB-URF02 超聲波傳感器,對小車的方向進行控制,并使用藍牙模塊進行無線通信,實現(xiàn)無線控制4WD平臺,本產(chǎn)品使用Carduino UNO控制器,此平臺設計可以配合各個版本Arduino,例如:Arduino Due、Arduino Mega2560等,同樣適合于樹莓派控制器,為開發(fā)帶來便利。產(chǎn)品為全鋁合金車體,結(jié)實耐用,四個馬達7.2V電壓獨立驅(qū)動,動力強勁,結(jié)構(gòu)合理,便于擴展;獨立散件包裝,讓您完全體驗DIY的樂趣。

產(chǎn)品清單

RB-13K07902.png

技術(shù)參數(shù)

平臺參數(shù)

  1. 車輪直徑:65mm
  2. 車輪寬度:26mm
  3. 平臺長度:206mm
  4. 平臺寬度:200mm
  5. 平臺高度:65mm
  6. 平臺重量:620g
  7. 底盤距地面距離:13mm

平臺尺寸圖

RB13K00610.png

直流減速電機(1:48)

  1. 驅(qū)動電機齒輪箱減速比:1:48
  2. 無負載轉(zhuǎn)速(3V):168RPM
  3. 無負載轉(zhuǎn)速(6V):300RPM
  4. 無負載時電流(3V):90mA
  5. 無負載時電流(6V):100mA
  6. 扭矩大小 (3V): 0.04N.m
  7. 扭矩大小 (6V): 0.08N.m
  8. 尺寸大小:70.50 mm×27.00 mm×23.00 mm(長×寬×高)
  9. 重量大小: 約30g

電控部分資料

Carduino UNO控制器

Carduino UNO相關(guān)資料及使用方法

雙H橋電機驅(qū)動板

雙H橋電機驅(qū)動板相關(guān)資料及使用方法

傳感器擴展板

V5.0傳感器擴展板相關(guān)資料及使用方法

大按鈕模塊

按壓式大按鈕模塊相關(guān)資料及使用方法

藍牙模塊

RB無線藍牙模塊相關(guān)資料及使用方法

超聲波傳感器

超聲波傳感器相關(guān)資料及使用方法

安裝步驟

步驟1:充電接口撥動開關(guān)連接線制作

充電接口撥動開關(guān)連接線制作步驟詳解

平臺安裝步驟

步驟1:平臺側(cè)板電機安裝

兩側(cè)電機安裝相同,注意安裝前將電機接線用電烙鐵焊接好,套上熱縮管加熱塑封。
使用零件:平臺側(cè)板*2個、直流減速電機*4個、M3*25螺絲*8個、M3六角螺母*8個

RB13K07403.png

步驟2:平臺底板安裝

使用零件:步驟1中安裝好電機的側(cè)板*2套、平臺底板*1個、M3*6螺絲*4個

RB13K07404.png

步驟3:雙H橋電機驅(qū)動板安裝

驅(qū)動板安裝方向隨意,注意同側(cè)電機接線方向順序,保證同側(cè)電機轉(zhuǎn)向是相同的。
使用零件:步驟2中的組合體、雙H橋直流電機驅(qū)動板*1個、M3*10尼龍柱*4個、M3六角螺母*4個、M3*6螺絲*4個

RB13K07405.png

步驟4:電池盒安裝

電池盒可用雙面膠固定,后輪電機接線需插入杜邦線帽,接入步進電機接口
使用零件:電池盒*1個或鋰電池*1塊

電池盒固定位置
鋰電池固定位置

步驟5:4WD端板安裝

使用零件:4WD端板*2個、步驟4中的組合體、M3*6螺絲*4個、M3六角螺母*4個

RB13K07407.png

步驟6:充電接口、撥動開關(guān)安裝

使用零件:步驟1中制作好的充電開關(guān)接口連接線、4WD上板

RB13K07408.png

步驟7:Carduino UNO控制器安裝

使用零件:步驟6中的組合體、Carduino UNO控制器*1個、M3*10尼龍柱*3個、M3*6螺絲*3個、M3六角螺母*3個

RB13K07409.png

步驟8:4WD上板安裝

使用零件:4WD平臺上板*1個、步驟5中的組合體*1套、M3*6螺絲*4個

RB13K07412.png

步驟9:4WD輪子安裝

使用零件:步驟8中的組合體*1套、4WD輪子*4個

RB13K07413.png

步驟10:V5.0傳感器擴展板插入

使用零件:V5.0傳感器擴展板*1個、步驟9中安裝好的平臺*1套

RB13K07415.png

步驟11:藍牙模塊插入

注意:藍牙模塊插入前要對控制器進行程序上傳,若插上藍牙模塊進行程序上傳操作,會造成程序上傳不成功問題。
使用零件:步驟10中的組合體*1套、藍牙模塊*1個

RB-13K07903.png

整機測試

接線說明

  • 數(shù)字口2→接超聲波
  • 數(shù)字口10→接RB-421舵機
  • 數(shù)字口5→接雙H橋驅(qū)動板的EB
  • 數(shù)字口6→接雙H橋驅(qū)動板的I4
  • 數(shù)字口7→接雙H橋驅(qū)動板的I3
  • 數(shù)字口8→接雙H橋驅(qū)動板的I1
  • 數(shù)字口9→接雙H橋驅(qū)動板的I2
  • 數(shù)字口11→接雙H橋驅(qū)動板的EA

方向盤端制作

使用零件

  • Carduino UNO 控制器*1個
  • Arduino傳感器擴展板 V5.0*1個
  • 超聲波傳感器*4
  • 大按鈕模塊*1
  • 藍牙模塊*1
  • 3P杜邦線*5

制作步驟

1.盤體制作:首先我們截取一塊邊長為20cm左右的正方形雪弗板(材料可自行選取)。
2.大按鈕模塊固定:用螺絲將大按鈕模塊固定在雪弗板的中間位置用來啟動方向盤。
3.超聲波傳感器固定:分別用螺絲將4個超聲波傳感器固定在雪弗板的4個直角上,用來識別手勢,超聲波與大按鈕模塊擺放如下圖所示,也可根據(jù)實際情況去擺放,一定要標明方向。

RB-13K07904.png

方向盤接線

超聲波傳感器采用單線模式

  • UP超聲波傳感器接數(shù)字口2,用于識別前進的手勢。
  • Down超聲波傳感器接數(shù)字口3,用于識別后退的手勢。
  • Left超聲波傳感器接數(shù)字口4,用于識別左轉(zhuǎn)手勢。
  • Right超聲波傳感器接數(shù)字口5,用于識別右轉(zhuǎn)手勢。
  • 大按鈕模塊接數(shù)字口6,用于啟動方向盤。

測試程序

方向盤端程序

int Button=6;               //定義Button為數(shù)字口6
int z;                      //定義變量z
int b;
int duration_1;             //定義變量duration_1用來存儲脈沖
int distance_1;             //定義變量distance_1用來存儲距離值
int srfPin_1 = 2;           //定義srfPin_1為數(shù)字口2
int val1;
int duration_2;             //定義變量duration_2用來存儲脈沖
int distance_2;             //定義變量distance_2用來存儲距離值
int srfPin_2 = 3;           //定義srfPin_2為數(shù)字口3
int val2;
int duration_3;             //定義變量duration_3用來存儲脈沖
int distance_3;             //定義變量distance_3用來存儲距離值
int srfPin_3 = 4;           //定義srfPin_3為數(shù)字口4
int val3;
int duration_4;             //定義變量duration_4用來存儲脈沖
int distance_4;             //定義變量distance_4用來存儲距離值
int srfPin_4 = 5;           //定義srfPin_4為數(shù)字口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);            //高電平觸發(fā)前發(fā)送2微秒的低電平
  		delayMicroseconds(2);                   //確保在發(fā)送高電平
  		digitalWrite(srfPin_1, HIGH);           //發(fā)送10微秒的高電平開始檢測
  		delayMicroseconds(10);
  		digitalWrite(srfPin_1, LOW);            //等待脈沖返回前發(fā)送一個低電平
  		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);            //高電平觸發(fā)前發(fā)送2微秒的低電平
  		delayMicroseconds(2);
  		digitalWrite(srfPin_2, HIGH);           // 發(fā)送10微秒的高電平開始檢測
  		delayMicroseconds(10);
  		digitalWrite(srfPin_2, LOW);            //等待脈沖返回前發(fā)送一個低電平
  		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);            //高電平觸發(fā)前發(fā)送2微秒的低電平
  		delayMicroseconds(2);
 		digitalWrite(srfPin_3, HIGH);           //發(fā)送10微秒的高電平開始檢測
  		delayMicroseconds(10);
  		digitalWrite(srfPin_3, LOW);            //等待脈沖返回前發(fā)送一個低電平
  		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);            //高電平觸發(fā)前發(fā)送2微秒的低電平
  		delayMicroseconds(2);
  		digitalWrite(srfPin_4, HIGH);           //發(fā)送10微秒的高電平開始檢測
  		delayMicroseconds(10);
  		digitalWrite(srfPin_4, LOW);            //等待脈沖返回前發(fā)送一個低電平
  		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調(diào)速)接口
  		pinMode(5,OUTPUT);     //定義EA(PWM調(diào)速)接口
  		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);    //使直流電機(左)逆時針轉(zhuǎn)
     digitalWrite(7,HIGH);
     analogWrite(10,105);    //輸入模擬值進行設定速度
     digitalWrite(8,LOW);    //使直流電機(右)順時針轉(zhuǎn)
     digitalWrite(9,HIGH);
}
void Back1()//  
{  
     analogWrite(5,80);    //輸入模擬值進行設定速度
     digitalWrite(6,LOW);   //使直流電機(左)逆時針轉(zhuǎn)
     digitalWrite(7,HIGH);
     analogWrite(10,50);   //輸入模擬值進行設定速度
     digitalWrite(8,LOW);   //使直流電機(右)順時針轉(zhuǎn)
     digitalWrite(9,HIGH);
}

void Back2()//  
{  
     analogWrite(5,50);    //輸入模擬值進行設定速度
     digitalWrite(6,LOW);   //使直流電機(左)逆時針轉(zhuǎn)
     digitalWrite(7,HIGH);
     analogWrite(10,105);   //輸入模擬值進行設定速度
     digitalWrite(8,LOW);   //使直流電機(右)順時針轉(zhuǎn)
     digitalWrite(9,HIGH);
}

void Goahead()//前進
{
     analogWrite(5,90);    //輸入模擬值進行設定速度
     digitalWrite(6,HIGH);  //使直流電機(左)順時針轉(zhuǎn)
     digitalWrite(7,LOW);  
     analogWrite(10,105);   //輸入模擬值進行設定速度
     digitalWrite(8,HIGH);  //使直流電機(右)逆時針轉(zhuǎn)
     digitalWrite(9,LOW);   
}

void Stop()//停止
{
     digitalWrite(6,HIGH);  //使直流電機(左)制動
     digitalWrite(7,HIGH);
     digitalWrite(8,HIGH);  //使直流電機(右)制動
     digitalWrite(9,HIGH);   
}

void Turn_right()           //右轉(zhuǎn)    
{
     analogWrite(5,155);    //輸入模擬值進行設定速度
     digitalWrite(6,LOW);   //使直流電機(左)逆時針轉(zhuǎn)
digitalWrite(7,HIGH);  
     analogWrite(10,140);   //輸入模擬值進行設定速度
     digitalWrite(8,HIGH);  //使直流電機(右)逆時針轉(zhuǎn)
     digitalWrite(9,LOW);   
}

void Turn_left()//左轉(zhuǎn)
{
     analogWrite(5,140);    //輸入模擬值進行設定速度
     digitalWrite(6,HIGH);   //使直流電機(左)逆時針轉(zhuǎn)
     digitalWrite(7,LOW);  
     analogWrite(10,155);   //輸入模擬值進行設定速度
     digitalWrite(8,LOW);   //使直流電機(右)順時針轉(zhuǎn)
     digitalWrite(9,HIGH);  
}
void Goahead1()//前進
{
     analogWrite(5,130);    //輸入模擬值進行設定速度
     digitalWrite(6,HIGH);  //使直流電機(左)順時針轉(zhuǎn)
     digitalWrite(7,LOW);  
     analogWrite(10,60);   //輸入模擬值進行設定速度
     digitalWrite(8,HIGH);  //使直流電機(右)逆時針轉(zhuǎn)
     digitalWrite(9,LOW);   
}
void Goahead2()//前進
{
     analogWrite(5,60);    //輸入模擬值進行設定速度
     digitalWrite(6,HIGH);  //使直流電機(左)順時針轉(zhuǎn)
     digitalWrite(7,LOW);  
     analogWrite(10,130);   //輸入模擬值進行設定速度
     digitalWrite(8,HIGH);  //使直流電機(右)逆時針轉(zhuǎn)
     digitalWrite(9,LOW);   
}

演示視頻

4wd shou shi cao kong 01.png
4wd ding ju 01.png


產(chǎn)品相關(guān)推薦

Erweima.png

產(chǎn)品購買地址

AS-4WD超聲波手勢操控機器人

周邊產(chǎn)品推薦

Arduino 4WD鋁合金移動平臺車燈套件
Arduino 光電碼盤 光電測速傳感器

相關(guān)問題解答

AS-4WD 碰撞機器人如何安裝
4wd 紅外線巡線壁障車調(diào)試助手沒有反應

相關(guān)學習資料

視頻:機器人調(diào)試助手無線操控AS-4WD輪式機器人
視頻:Arduino-4WD移動機器人尋線功能演示
視頻:Arduino-4WD移動機器人碰撞功能演示
視頻:Arduino-4WD移動機器人追光功能演示
視頻:Arduino-4WD移動機器人尋線與避障功能演示
視頻:Arduino-4WD移動機器人偵測避障功能演示
視頻:直流減速電機驅(qū)動實例
奧松機器人技術(shù)論壇