查看(RB-13K079)AS-4WD超聲波手勢操控機器人的源代碼
←
(RB-13K079)AS-4WD超聲波手勢操控機器人
跳轉至:
導航
、
搜索
因為以下原因,你沒有權限編輯本頁:
您剛才請求的操作只有這個用戶組中的用戶才能使用:
用戶
您可以查看并復制此頁面的源代碼:
[[文件:RB-13K07901.png|500px|縮略圖|右]] ==產品概述== 超聲波作為智能車避障的一種重要手段,以其避障實現(xiàn)便,計算簡單,易于做時控制,測量精度也能達到實用的要求,在未來汽車智能化進程中必將得到廣泛。AS-4WD 超聲波手勢操控機器人采用4個RB-URF02 超聲波傳感器,對小車的方向進行控制,并使用藍牙模塊進行無線通信,實現(xiàn)無線控制4WD平臺,本產品使用Carduino UNO控制器,此平臺設計可以配合各個版本Arduino,例如:Arduino Due、Arduino Mega2560等,同樣適合于樹莓派控制器,為開發(fā)帶來便利。產品為全鋁合金車體,結實耐用,四個馬達7.2V電壓獨立驅動,動力強勁,結構合理,便于擴展;獨立散件包裝,讓您完全體驗DIY的樂趣。 ==產品清單== [[文件:RB-13K07902.png|500px|縮略圖|居中]] ==技術參數(shù)== ===平臺參數(shù)=== # 車輪直徑:65mm # 車輪寬度:26mm # 平臺長度:206mm # 平臺寬度:200mm # 平臺高度:65mm # 平臺重量:620g # 底盤距地面距離:13mm ===平臺尺寸圖=== [[文件:RB13K00610.png|700px|縮略圖|居中]] ===直流減速電機(1:48)=== # 驅動電機齒輪箱減速比:1:48 # 無負載轉速(3V):168RPM # 無負載轉速(6V):300RPM # 無負載時電流(3V):90mA # 無負載時電流(6V):100mA # 扭矩大小 (3V): 0.04N.m # 扭矩大小 (6V): 0.08N.m # 尺寸大?。?0.50 mm×27.00 mm×23.00 mm(長×寬×高) # 重量大小: 約30g ===電控部分資料=== ====Carduino UNO控制器==== [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-01C076)CarDuino_UNO_R3%EF%BC%88%E7%9B%B4%E6%8F%92%E8%8A%AF%E7%89%87%EF%BC%89 Carduino UNO相關資料及使用方法]<br/> ====雙H橋電機驅動板==== [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-01C025)%E5%8F%8CH%E6%A1%A5%E7%9B%B4%E6%B5%81%E7%94%B5%E6%9C%BA%E9%A9%B1%E5%8A%A8%E6%9D%BF 雙H橋電機驅動板相關資料及使用方法]<br/> ====傳感器擴展板==== [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-01C015)Arduino_%E4%BC%A0%E6%84%9F%E5%99%A8%E6%89%A9%E5%B1%95%E6%9D%BFv5.0#.E8.B4.AD.E4.B9.B0.E5.9C.B0.E5.9D.80 V5.0傳感器擴展板相關資料及使用方法]<br/> ====大按鈕模塊==== [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-02S032)_%E6%8C%89%E5%8E%8B%E5%BC%8F%E5%A4%A7%E6%8C%89%E9%92%AE%E6%A8%A1%E5%9D%97 按壓式大按鈕模塊相關資料及使用方法]<br/> ====藍牙模塊==== [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-03T008)RB%E6%97%A0%E7%BA%BF%E8%93%9D%E7%89%99%E6%A8%A1%E5%9D%97 RB無線藍牙模塊相關資料及使用方法]<br/> ====超聲波傳感器==== [http://www.alsrobot.com.cn/wiki/index.php?title=(SKU:RB-02S001)RB_URF02%E8%B6%85%E5%A3%B0%E6%B3%A2%E4%BC%A0%E6%84%9F%E5%99%A8 超聲波傳感器相關資料及使用方法]<br/> ==安裝步驟== ===步驟1:充電接口撥動開關連接線制作=== [http://lifestyle201.com/wiki/index.php?title=(SKU:RB-06L012)%E7%94%B5%E6%BA%90%E5%85%85%E7%94%B5%E6%8E%A5%E5%8F%A3%E8%BF%9E%E6%8E%A5%E7%BA%BF 充電接口撥動開關連接線制作步驟詳解]<br/> ===平臺安裝步驟=== ====步驟1:平臺側板電機安裝==== 兩側電機安裝相同,注意安裝前將電機接線用電烙鐵焊接好,套上熱縮管加熱塑封。<br/> 使用零件:平臺側板*2個、直流減速電機*4個、M3*25螺絲*8個、M3六角螺母*8個<br/> [[文件:RB13K07403.png|500px|有框|居中]] ====步驟2:平臺底板安裝==== 使用零件:步驟1中安裝好電機的側板*2套、平臺底板*1個、M3*6螺絲*4個 [[文件:RB13K07404.png|500px|有框|居中]] ====步驟3:雙H橋電機驅動板安裝==== 驅動板安裝方向隨意,注意同側電機接線方向順序,保證同側電機轉向是相同的。<br/> 使用零件:步驟2中的組合體、雙H橋直流電機驅動板*1個、M3*10尼龍柱*4個、M3六角螺母*4個、M3*6螺絲*4個<br/> [[文件:RB13K07405.png|500px|有框|居中]] ====步驟4:電池盒安裝==== 電池盒可用雙面膠固定,后輪電機接線需插入杜邦線帽,接入步進電機接口<br/> 使用零件:電池盒*1個或鋰電池*1塊 [[文件:RB13K07406.png|500px|有框|居中|電池盒固定位置]] [[文件:RB13K07414.png|500px|有框|居中|鋰電池固定位置]] ====步驟5:4WD端板安裝==== 使用零件:4WD端板*2個、步驟4中的組合體、M3*6螺絲*4個、M3六角螺母*4個<br/> [[文件:RB13K07407.png|500px|有框|居中|]] ====步驟6:充電接口、撥動開關安裝==== 使用零件:步驟1中制作好的充電開關接口連接線、4WD上板<br/> [[文件:RB13K07408.png|500px|有框|居中|]] ====步驟7:Carduino UNO控制器安裝==== 使用零件:步驟6中的組合體、Carduino UNO控制器*1個、M3*10尼龍柱*3個、M3*6螺絲*3個、M3六角螺母*3個<br/> [[文件:RB13K07409.png|500px|有框|居中|]] ====步驟8:4WD上板安裝==== 使用零件:4WD平臺上板*1個、步驟5中的組合體*1套、M3*6螺絲*4個<br/> [[文件:RB13K07412.png|500px|有框|居中|]] ====步驟9:4WD輪子安裝==== 使用零件:步驟8中的組合體*1套、4WD輪子*4個<br/> [[文件:RB13K07413.png|500px|有框|居中|]] ====步驟10:V5.0傳感器擴展板插入==== 使用零件:V5.0傳感器擴展板*1個、步驟9中安裝好的平臺*1套<br/> [[文件:RB13K07415.png|500px|有框|居中|]] ====步驟11:藍牙模塊插入==== 注意:藍牙模塊插入前要對控制器進行程序上傳,若插上藍牙模塊進行程序上傳操作,會造成程序上傳不成功問題。<br/> 使用零件:步驟10中的組合體*1套、藍牙模塊*1個<br/> [[文件:RB-13K07903.png|500px|縮略圖|居中]] ==整機測試== ===接線說明=== * 數(shù)字口2→接超聲波 * 數(shù)字口10→接RB-421舵機 * 數(shù)字口5→接雙H橋驅動板的EB * 數(shù)字口6→接雙H橋驅動板的I4 * 數(shù)字口7→接雙H橋驅動板的I3 * 數(shù)字口8→接雙H橋驅動板的I1 * 數(shù)字口9→接雙H橋驅動板的I2 * 數(shù)字口11→接雙H橋驅動板的EA ===方向盤端制作=== ====使用零件==== * Carduino UNO 控制器*1個 * Arduino傳感器擴展板 V5.0*1個 * 超聲波傳感器*4 * 大按鈕模塊*1 * 藍牙模塊*1 * 3P杜邦線*5 ====制作步驟==== 1.盤體制作:首先我們截取一塊邊長為20cm左右的正方形雪弗板(材料可自行選取)。<br/> 2.大按鈕模塊固定:用螺絲將大按鈕模塊固定在雪弗板的中間位置用來啟動方向盤。<br/> 3.超聲波傳感器固定:分別用螺絲將4個超聲波傳感器固定在雪弗板的4個直角上,用來識別手勢,超聲波與大按鈕模塊擺放如下圖所示,也可根據(jù)實際情況去擺放,一定要標明方向。<br/> [[文件:RB-13K07904.png|500px|縮略圖|居中]] ====方向盤接線==== 超聲波傳感器采用單線模式<br/> * UP超聲波傳感器接數(shù)字口2,用于識別前進的手勢。 * Down超聲波傳感器接數(shù)字口3,用于識別后退的手勢。 * Left超聲波傳感器接數(shù)字口4,用于識別左轉手勢。 * Right超聲波傳感器接數(shù)字口5,用于識別右轉手勢。 * 大按鈕模塊接數(shù)字口6,用于啟動方向盤。 ===測試程序=== ====方向盤端程序==== <pre style="color:blue"> 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; } </pre> ====平臺端程序==== <pre style="color:blue"> 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); } </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|無框|右]] ===產品購買地址=== [https://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-3667083713.35.qLHgXg&id=37406674173 AS-4WD超聲波手勢操控機器人]<br/> ===周邊產品推薦=== [http://lifestyle201.com/goods-407.html Arduino 4WD鋁合金移動平臺車燈套件]<br/> [http://lifestyle201.com/goods-185.html Arduino 光電碼盤 光電測速傳感器]<br/> ===相關問題解答=== [http://www.makerspace.cn/forum.php?mod=viewthread&tid=4875&highlight=4WD AS-4WD 碰撞機器人如何安裝]<br/> [http://www.makerspace.cn/forum.php?mod=viewthread&tid=5473&fromuid=10780 4wd 紅外線巡線壁障車調試助手沒有反應]<br/> ===相關學習資料=== [http://www.makerspace.cn/forum.php?mod=viewthread&tid=3953&fromuid=10780 視頻:機器人調試助手無線操控AS-4WD輪式機器人]<br/> [http://v.youku.com/v_show/id_XMjgwMjk0NDE2.html 視頻:Arduino-4WD移動機器人尋線功能演示]<br/> [http://v.youku.com/v_show/id_XMjgwMjkyNDM2.html 視頻:Arduino-4WD移動機器人碰撞功能演示]<br/> [http://v.youku.com/v_show/id_XMjgwMjk4MjU2.html 視頻:Arduino-4WD移動機器人追光功能演示]<br/> [http://v.youku.com/v_show/id_XMjgwNTg5NTI4.html 視頻:Arduino-4WD移動機器人尋線與避障功能演示]<br/> [http://v.youku.com/v_show/id_XMzQyNzk2MzM2.html 視頻:Arduino-4WD移動機器人偵測避障功能演示]<br/> [http://v.youku.com/v_show/id_XNjQ2MDY0MDg=.html?from=y1.7-2 視頻:直流減速電機驅動實例]<br/> [http://www.makerspace.cn/portal.php 奧松機器人技術論壇]<br/>
返回
(RB-13K079)AS-4WD超聲波手勢操控機器人
。
來自“
http://lifestyle201.com/wiki/index.php/(RB-13K079)AS-4WD超聲波手勢操控機器人
”
導航菜單
個人工具
登錄
名字空間
頁面
討論
變換
查看
閱讀
查看源代碼
查看歷史
操作
搜索
導航
首頁
社區(qū)專頁
新聞動態(tài)
最近更改
隨機頁面
工具箱
鏈入頁面
相關更改
特殊頁面
頁面信息
隱私政策
關于ALSROBOT WiKi
免責聲明