“(RB-13K079)AS-4WD超聲波手勢操控機器人”的版本間的差異
(→?產(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]] | ||
? | + | [[File:4wd ding ju 01.png|400px|左|link=http://v.youku.com/v_show/id_XMzQyNzkwNzQw.html?from=y1.7-2]] | |
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
? | + | ||
<br/> | <br/> | ||
2015年10月22日 (四) 13:55的版本
目錄 |
產(chǎn)品概述
超聲波作為智能車避障的一種重要手段,以其避障實現(xiàn)便,計算簡單,易于做時控制,測量精度也能達到實用的要求,在未來汽車智能化進程中必將得到廣泛。AS-4WD 超聲波手勢操控機器人采用4個RB-URF02 超聲波傳感器,對小車的方向進行控制,并使用藍牙模塊進行無線通信,實現(xiàn)無線控制4WD平臺,本產(chǎn)品使用Carduino UNO控制器,此平臺設(shè)計可以配合各個版本Arduino,例如:Arduino Due、Arduino Mega2560等,同樣適合于樹莓派控制器,為開發(fā)帶來便利。產(chǎn)品為全鋁合金車體,結(jié)實耐用,四個馬達7.2V電壓獨立驅(qū)動,動力強勁,結(jié)構(gòu)合理,便于擴展;獨立散件包裝,讓您完全體驗DIY的樂趣。
產(chǎn)品清單
技術(shù)參數(shù)
平臺參數(shù)
- 車輪直徑:65mm
- 車輪寬度:26mm
- 平臺長度:206mm
- 平臺寬度:200mm
- 平臺高度:65mm
- 平臺重量:620g
- 底盤距地面距離:13mm
平臺尺寸圖
直流減速電機(1:48)
- 驅(qū)動電機齒輪箱減速比:1:48
- 無負(fù)載轉(zhuǎn)速(3V):168RPM
- 無負(fù)載轉(zhuǎn)速(6V):300RPM
- 無負(fù)載時電流(3V):90mA
- 無負(fù)載時電流(6V):100mA
- 扭矩大小 (3V): 0.04N.m
- 扭矩大小 (6V): 0.08N.m
- 尺寸大?。?0.50 mm×27.00 mm×23.00 mm(長×寬×高)
- 重量大小: 約30g
電控部分資料
Carduino UNO控制器
雙H橋電機驅(qū)動板
傳感器擴展板
大按鈕模塊
藍牙模塊
超聲波傳感器
安裝步驟
步驟1:充電接口撥動開關(guān)連接線制作
平臺安裝步驟
步驟1:平臺側(cè)板電機安裝
兩側(cè)電機安裝相同,注意安裝前將電機接線用電烙鐵焊接好,套上熱縮管加熱塑封。
使用零件:平臺側(cè)板*2個、直流減速電機*4個、M3*25螺絲*8個、M3六角螺母*8個
步驟2:平臺底板安裝
使用零件:步驟1中安裝好電機的側(cè)板*2套、平臺底板*1個、M3*6螺絲*4個
步驟3:雙H橋電機驅(qū)動板安裝
驅(qū)動板安裝方向隨意,注意同側(cè)電機接線方向順序,保證同側(cè)電機轉(zhuǎn)向是相同的。
使用零件:步驟2中的組合體、雙H橋直流電機驅(qū)動板*1個、M3*10尼龍柱*4個、M3六角螺母*4個、M3*6螺絲*4個
步驟4:電池盒安裝
電池盒可用雙面膠固定,后輪電機接線需插入杜邦線帽,接入步進電機接口
使用零件:電池盒*1個或鋰電池*1塊
步驟5:4WD端板安裝
使用零件:4WD端板*2個、步驟4中的組合體、M3*6螺絲*4個、M3六角螺母*4個
步驟6:充電接口、撥動開關(guān)安裝
使用零件:步驟1中制作好的充電開關(guān)接口連接線、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個
整機測試
接線說明
- 數(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ù)實際情況去擺放,一定要標(biāo)明方向。
方向盤接線
超聲波傳感器采用單線模式
- 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); //設(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微秒的高電平開始檢測 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); //設(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); //輸入模擬值進行設(shè)定速度 digitalWrite(6,LOW); //使直流電機(左)逆時針轉(zhuǎn) digitalWrite(7,HIGH); analogWrite(10,105); //輸入模擬值進行設(shè)定速度 digitalWrite(8,LOW); //使直流電機(右)順時針轉(zhuǎn) digitalWrite(9,HIGH); } void Back1()// { analogWrite(5,80); //輸入模擬值進行設(shè)定速度 digitalWrite(6,LOW); //使直流電機(左)逆時針轉(zhuǎn) digitalWrite(7,HIGH); analogWrite(10,50); //輸入模擬值進行設(shè)定速度 digitalWrite(8,LOW); //使直流電機(右)順時針轉(zhuǎn) digitalWrite(9,HIGH); } void Back2()// { analogWrite(5,50); //輸入模擬值進行設(shè)定速度 digitalWrite(6,LOW); //使直流電機(左)逆時針轉(zhuǎn) digitalWrite(7,HIGH); analogWrite(10,105); //輸入模擬值進行設(shè)定速度 digitalWrite(8,LOW); //使直流電機(右)順時針轉(zhuǎn) digitalWrite(9,HIGH); } void Goahead()//前進 { analogWrite(5,90); //輸入模擬值進行設(shè)定速度 digitalWrite(6,HIGH); //使直流電機(左)順時針轉(zhuǎn) digitalWrite(7,LOW); analogWrite(10,105); //輸入模擬值進行設(shè)定速度 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); //輸入模擬值進行設(shè)定速度 digitalWrite(6,LOW); //使直流電機(左)逆時針轉(zhuǎn) digitalWrite(7,HIGH); analogWrite(10,140); //輸入模擬值進行設(shè)定速度 digitalWrite(8,HIGH); //使直流電機(右)逆時針轉(zhuǎn) digitalWrite(9,LOW); } void Turn_left()//左轉(zhuǎn) { analogWrite(5,140); //輸入模擬值進行設(shè)定速度 digitalWrite(6,HIGH); //使直流電機(左)逆時針轉(zhuǎn) digitalWrite(7,LOW); analogWrite(10,155); //輸入模擬值進行設(shè)定速度 digitalWrite(8,LOW); //使直流電機(右)順時針轉(zhuǎn) digitalWrite(9,HIGH); } void Goahead1()//前進 { analogWrite(5,130); //輸入模擬值進行設(shè)定速度 digitalWrite(6,HIGH); //使直流電機(左)順時針轉(zhuǎn) digitalWrite(7,LOW); analogWrite(10,60); //輸入模擬值進行設(shè)定速度 digitalWrite(8,HIGH); //使直流電機(右)逆時針轉(zhuǎn) digitalWrite(9,LOW); } void Goahead2()//前進 { analogWrite(5,60); //輸入模擬值進行設(shè)定速度 digitalWrite(6,HIGH); //使直流電機(左)順時針轉(zhuǎn) digitalWrite(7,LOW); analogWrite(10,130); //輸入模擬值進行設(shè)定速度 digitalWrite(8,HIGH); //使直流電機(右)逆時針轉(zhuǎn) digitalWrite(9,LOW); }
演示視頻
產(chǎn)品相關(guān)推薦
產(chǎn)品購買地址
周邊產(chǎn)品推薦
Arduino 4WD鋁合金移動平臺車燈套件
Arduino 光電碼盤 光電測速傳感器
相關(guān)問題解答
AS-4WD 碰撞機器人如何安裝
4wd 紅外線巡線壁障車調(diào)試助手沒有反應(yīng)
相關(guān)學(xué)習(xí)資料
視頻:機器人調(diào)試助手無線操控AS-4WD輪式機器人
視頻:Arduino-4WD移動機器人尋線功能演示
視頻:Arduino-4WD移動機器人碰撞功能演示
視頻:Arduino-4WD移動機器人追光功能演示
視頻:Arduino-4WD移動機器人尋線與避障功能演示
視頻:Arduino-4WD移動機器人偵測避障功能演示
視頻:直流減速電機驅(qū)動實例
奧松機器人技術(shù)論壇