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

來(lái)自ALSROBOT WiKi
跳轉(zhuǎn)至: 導(dǎo)航、 搜索
?測(cè)試程序
第351行: 第351行:
 
}
 
}
 
</pre>
 
</pre>
 +
==產(chǎn)品相關(guān)推薦==
 +
[[文件:erweima.png|230px|無(wú)框|右]]
 +
===產(chǎn)品購(gòu)買地址===
 +
[https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-3667083713.35.qLHgXg&id=37406674173 AS-4WD超聲波手勢(shì)操控機(jī)器人]<br/>
 +
===周邊產(chǎn)品推薦===
 +
[http://lifestyle201.com/goods-407.html Arduino 4WD鋁合金移動(dòng)平臺(tái)車燈套件]<br/>
 +
[http://lifestyle201.com/goods-185.html Arduino 光電碼盤 光電測(cè)速傳感器]<br/>
 +
===相關(guān)問(wèn)題解答===
 +
[http://www.makerspace.cn/forum.php?mod=viewthread&tid=4875&highlight=4WD AS-4WD 碰撞機(jī)器人如何安裝]<br/>
 +
[http://www.makerspace.cn/forum.php?mod=viewthread&tid=5473&fromuid=10780 4wd 紅外線巡線壁障車調(diào)試助手沒(méi)有反應(yīng)]<br/>
 +
===相關(guān)學(xué)習(xí)資料===
 +
[http://www.makerspace.cn/forum.php?mod=viewthread&tid=3953&fromuid=10780 視頻:機(jī)器人調(diào)試助手無(wú)線操控AS-4WD輪式機(jī)器人]<br/>
 +
[http://v.youku.com/v_show/id_XMjgwMjk0NDE2.html 視頻:Arduino-4WD移動(dòng)機(jī)器人尋線功能演示]<br/>
 +
[http://v.youku.com/v_show/id_XMjgwMjkyNDM2.html 視頻:Arduino-4WD移動(dòng)機(jī)器人碰撞功能演示]<br/>
 +
[http://v.youku.com/v_show/id_XMjgwMjk4MjU2.html 視頻:Arduino-4WD移動(dòng)機(jī)器人追光功能演示]<br/>
 +
[http://v.youku.com/v_show/id_XMjgwNTg5NTI4.html 視頻:Arduino-4WD移動(dòng)機(jī)器人尋線與避障功能演示]<br/>
 +
[http://v.youku.com/v_show/id_XMzQyNzk2MzM2.html 視頻:Arduino-4WD移動(dòng)機(jī)器人偵測(cè)避障功能演示]<br/>
 +
[http://v.youku.com/v_show/id_XNjQ2MDY0MDg=.html?from=y1.7-2 視頻:直流減速電機(jī)驅(qū)動(dòng)實(shí)例]<br/>
 +
[http://www.makerspace.cn/portal.php 奧松機(jī)器人技術(shù)論壇]<br/>

2015年9月28日 (一) 10:21的版本

RB-13K07901.png

目錄

產(chǎn)品概述

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

產(chǎn)品清單

RB-13K07902.png

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

平臺(tái)參數(shù)

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

平臺(tái)尺寸圖

RB13K00610.png

直流減速電機(jī)(1:48)

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

電控部分資料

Carduino UNO控制器

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

雙H橋電機(jī)驅(qū)動(dòng)板

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

傳感器擴(kuò)展板

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

大按鈕模塊

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

藍(lán)牙模塊

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

超聲波傳感器

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

安裝步驟

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

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

平臺(tái)安裝步驟

步驟1:平臺(tái)側(cè)板電機(jī)安裝

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

RB13K07403.png

步驟2:平臺(tái)底板安裝

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

RB13K07404.png

步驟3:雙H橋電機(jī)驅(qū)動(dòng)板安裝

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

RB13K07405.png

步驟4:電池盒安裝

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

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

步驟5:4WD端板安裝

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

RB13K07407.png

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

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

RB13K07408.png

步驟7:Carduino UNO控制器安裝

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

RB13K07409.png

步驟8:4WD上板安裝

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

RB13K07412.png

步驟9:4WD輪子安裝

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

RB13K07413.png

步驟10:V5.0傳感器擴(kuò)展板插入

使用零件:V5.0傳感器擴(kuò)展板*1個(gè)、步驟9中安裝好的平臺(tái)*1套

RB13K07415.png

步驟11:藍(lán)牙模塊插入

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

RB-13K07903.png

整機(jī)測(cè)試

接線說(shuō)明

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

方向盤端制作

使用零件

  • Carduino UNO 控制器*1個(gè)
  • Arduino傳感器擴(kuò)展板 V5.0*1個(gè)
  • 超聲波傳感器*4
  • 大按鈕模塊*1
  • 藍(lán)牙模塊*1
  • 3P杜邦線*5

制作步驟

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

RB-13K07904.png

方向盤接線

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

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

測(cè)試程序

=方向盤端程序

int Button=6;               //定義Button為數(shù)字口6
int z;                      //定義變量z
int b;
int duration_1;             //定義變量duration_1用來(lái)存儲(chǔ)脈沖
int distance_1;             //定義變量distance_1用來(lái)存儲(chǔ)距離值
int srfPin_1 = 2;           //定義srfPin_1為數(shù)字口2
int val1;
int duration_2;             //定義變量duration_2用來(lái)存儲(chǔ)脈沖
int distance_2;             //定義變量distance_2用來(lái)存儲(chǔ)距離值
int srfPin_2 = 3;           //定義srfPin_2為數(shù)字口3
int val2;
int duration_3;             //定義變量duration_3用來(lái)存儲(chǔ)脈沖
int distance_3;             //定義變量distance_3用來(lái)存儲(chǔ)距離值
int srfPin_3 = 4;           //定義srfPin_3為數(shù)字口4
int val3;
int duration_4;             //定義變量duration_4用來(lái)存儲(chǔ)脈沖
int distance_4;             //定義變量distance_4用來(lái)存儲(chǔ)距離值
int srfPin_4 = 5;           //定義srfPin_4為數(shù)字口5
int val4;
void setup()
{
  		Serial.begin(115200);     //設(shè)定波特率為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微秒的高電平開始檢測(cè)
  		delayMicroseconds(10);
  		digitalWrite(srfPin_1, LOW);            //等待脈沖返回前發(fā)送一個(gè)低電平
  		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微秒的高電平開始檢測(cè)
  		delayMicroseconds(10);
  		digitalWrite(srfPin_2, LOW);            //等待脈沖返回前發(fā)送一個(gè)低電平
  		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微秒的高電平開始檢測(cè)
  		delayMicroseconds(10);
  		digitalWrite(srfPin_3, LOW);            //等待脈沖返回前發(fā)送一個(gè)低電平
  		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微秒的高電平開始檢測(cè)
  		delayMicroseconds(10);
  		digitalWrite(srfPin_4, LOW);            //等待脈沖返回前發(fā)送一個(gè)低電平
  		pinMode(srfPin_4, INPUT);
  		duration_4 = pulseIn(srfPin_4, HIGH);   //從URF02讀取脈沖
  		distance_4 = duration_4/58;             //除以58得到距離值
  		return distance_4;     
}

平臺(tái)端程序

void setup()
{
  		Serial.print('a');
  		Serial.begin(115200); //設(shè)定波特率為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);      //輸入模擬值進(jìn)行設(shè)定速度
     digitalWrite(6,LOW);    //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn)
     digitalWrite(7,HIGH);
     analogWrite(10,105);    //輸入模擬值進(jìn)行設(shè)定速度
     digitalWrite(8,LOW);    //使直流電機(jī)(右)順時(shí)針轉(zhuǎn)
     digitalWrite(9,HIGH);
}
void Back1()//  
{  
     analogWrite(5,80);    //輸入模擬值進(jìn)行設(shè)定速度
     digitalWrite(6,LOW);   //使直流電機(jī)(左)逆時(shí)針轉(zhuǎn)
     digitalWrite(7,HIGH);
     analogWrite(10,50);   //輸入模擬值進(jìn)行設(shè)定速度
     digitalWrite(8,LOW);   //使直流電機(jī)(右)順時(shí)針轉(zhuǎn)
     digitalWrite(9,HIGH);
}

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

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

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

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

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

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

Erweima.png

產(chǎn)品購(gòu)買地址

AS-4WD超聲波手勢(shì)操控機(jī)器人

周邊產(chǎn)品推薦

Arduino 4WD鋁合金移動(dòng)平臺(tái)車燈套件
Arduino 光電碼盤 光電測(cè)速傳感器

相關(guān)問(wèn)題解答

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

相關(guān)學(xué)習(xí)資料

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