




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于arduino單片機的實物設計 題目: 基于arduino的智能小車(烏龜)設計姓名: 學院: 專業: 班級: 學號: 指導教師: 設計時間: 目錄一 、任務設計及要求3二、 arduino42.1 arduino簡介42.2參數說明4三、 硬件設計43.1所需硬件清單43.2硬件設計說明53.3電機驅動模塊53.3.1 l298n說明53.3.2 l298n連接圖53.4循跡模塊53.4.1尋線功能53.4.2尋線傳感器與實驗連接圖53.5避碰模塊73.5.1 超聲波模塊73.5.2 實驗連接圖73.6紅外模塊83.6.1紅外模塊說明83.6.2實物圖8四、模塊軟件設計84.1循跡模塊程
2、序84.2 紅外模塊程序104.3避碰模塊程序11五、綜合設計與調試115.1流程圖115.2軟件設計12六、總結146.1遇到問題及解決辦法141、 硬件問題142、 軟件問題156.2個人感悟15一 、任務設計及要求 利用arduino設計智能小車(烏龜)其功能: 1、實現循跡(利用tcrt5000 紅外對管); 2、避碰功能(利用超聲波); 3、紅外遙控功能; 4、綜合以上功能實現自動循跡、避障、紅外控制的智能小車; 二、 arduino 2.1 arduino簡介arduino 智能小烏龜是一款單片機學習應用開發系統,以 arduino 單片機系列 atmega-328為核心.完成尋線
3、,避障,紅外遙控和藍牙遙控的功能,.套件包含了大量的趣味程序,并可擴展外置的電路模塊,從而增加小車的使用功能.旨在讓使用者在學習 arduino 單片機時能脫離枯燥的理論知識,在玩樂中獲取單片機系統開發的能力。 2.2參數說明 1.電機參數:電壓范圍:1.5-12v,電機軸長10mm,轉速 100rpm/min. 2.控制電機選用l298n驅動模塊,與單片機真正隔離. 3.三組尋線模塊,檢測黑白線,精度更高,也可用與防跌落控制. 4.紅外遙控通信模塊,組成智能小車遙控系統. 5.超聲波模塊,小車避障系統. 5.藍牙無線模塊,可以和手機藍牙配對遙控機器人. 6.可接入外部712v的電壓。并能搭載
4、多款傳感器模塊,根據您的想象力實現各種功能.三、 硬件設計3.1所需硬件清單1. 金屬減速電機 2 個;2.優質輪胎 2 個;3.電機固定件 2 個;4 、牛眼萬向輪;5.機器人底盤 2 片;6.l298n 電機驅動板 1 個;7.arduino uno328 控制板 1 個;8.arduino 傳感器擴展板 1 個;9.云臺 1 個;10.舵機 1 個;11.超聲波模塊 1 個;12.三組尋線模塊;13.紅外接收傳感器;14.單片機遙控器;15.2000ma 18650 充電電池 2 節;16.18650 電池盒一個;17.18650 充電器一個。3.2硬件設計說明 結合實際、根據需要,將系
5、統分為四個模塊,即電機驅動模塊,循跡模塊,避碰模塊,紅外模塊,分開做,自后將其綜合起來。3.3電機驅動模塊 3.3.1 l298n說明 l298n是一個驅動模塊,就是單片機的驅動電流太小無法驅動電動機,因此l298n其起到一個放大器作用。通過控制l298n i1 i2 i3 i4接口,控制電機的正轉,反轉,轉彎和停止。 3.3.2 l298n連接圖 如下圖所示:3.4循跡模塊 3.4.1尋線功能 使小車沿著黑線走,根據黑線的位置選著行走的狀態。 3.4.2尋線傳感器與實驗連接圖 tcrt5000紅外對管的工作原理是利用紅外線對顏色的反射率不一樣,將 反射信號的強弱轉化成電流信號。黑白尋跡模塊在
6、檢測到黑色高電平有效,檢測到白色是為 低電平有效,檢測高度為 03cm。使用方法1.傳感器接口有3根排針,分別是gnd ,vcc,out。vcc和gnd為供電端,out是信 號輸出端。 2.檢測到物體,信號端輸出低電平;未檢測到物體,信號端輸出高電平。 3.主要判斷信號輸出端是0或者1,就能判斷物體是否存在。 性能參數: 1:檢測距離,檢測白紙時約為2厘米。視顏色的不同距離有所不同,白色最遠。 2.供電電壓:2.5v12v,不要超過12v。(注意:最好用低電壓供電,供電電壓太高傳感器的壽命會變短。5v供電為佳。) 3.工作電流,5v時1820ma。經大量測試,傳感器硬件設置為1820ma工作電
7、流時性能最 佳,主要表現在抗干擾能力上。4.檢測到物體,信號端輸出低電平;未檢測到物體,信號端輸出高電平。 5.傳感器輸出ttl電平,能直接與3.3v或者5v單片機io口相連。 黑線或者白線檢測原理 1.利用黑色對光線的反射率小這個特點,當平面的顏色不是黑色時,傳感器發射出去的紅 外光被大部分反射回來。于是傳感器輸出低電平0。 2.當平面有一黑線,傳感器在黑線上方時,因黑色的反射能力很弱,反射回來的紅外光很 少,達不到傳感器動作的水平,所以傳感器還輸出1。 3.我們只要用單片機判斷傳感器的輸出端是0或者是1,就能檢測黑線。 4.檢測白線的原理和檢測黑線的原理一樣,檢測白線時,白線周邊的顏色也要
8、比較接近黑 色,然后調節紅外傳感器上面的可調電阻,將靈敏度調低,一直調到剛好周邊的顏色檢測 不到為止,那樣就能檢測白線了。連接參考圖如下:3.5避碰模塊 3.5.1 超聲波模塊超聲波智能避障實現方便、計算簡單、易于做到實時控制,并且在測量精度方面能達到實用的要求,因此成為常用的避障方法。 3.5.2 實驗連接圖3.6紅外模塊 3.6.1紅外模塊說明實驗前須知:1.先把 irremote 函式庫資料夾放進 arduino libraries 目錄底下2.開啟 irreceive.pde 測得自 己的紅外線遙控的碼(在 serial monitor 可顯示 ircode) , 再將ircode 記
9、錄下來, 然后到程式里面修改成自 己的紅外線碼即可。3.6.2實物圖四、模塊軟件設計4.1循跡模塊程序第 9 頁 int motorright1=8;/in1int motorright2=9;/in2int motorleft1=7;/in4int motorleft2=6;/in3int speedpin=11;/定義 ea(pwm 調速)int speedpin1=10;/定義 eb(pwm 調速)接口const int sensorleft = 5; /左感測器輸入腳const int sensormiddle= 4 ; /中感測器輸入腳const int sensorright =
10、3; /右感測器輸入腳int sl; /左感測器狀態int sm; /中感測器狀態int sr; /右感測器狀態void advance(int a) / 前進 digitalwrite(motorright1,low); digitalwrite(motorright2,high); digitalwrite(motorleft1,low); digitalwrite(motorleft2,high); delay(a*50); void left(int i) / 左轉 digitalwrite(motorright1,low); digitalwrite(motorright2,high
11、); digitalwrite(motorleft1,low); digitalwrite(motorleft2,low); delay(i*30); void right(int c) / 右轉 digitalwrite(motorright1,low); digitalwrite(motorright2,low); digitalwrite(motorleft1,low); digitalwrite(motorleft2,high);delay(c*30); void stopp(int d) /停止 digitalwrite(motorright1,low); digitalwrite(
12、motorright2,low); digitalwrite(motorleft1,low); digitalwrite(motorleft2,low); delay(d * 10); void back(int g) /后退 digitalwrite(motorright1,high); digitalwrite(motorright2,low); digitalwrite(motorleft1,high); digitalwrite(motorleft2,low); delay(g * 100); void re(int x) /右大轉 digitalwrite(motorright1,l
13、ow); digitalwrite(motorright2,high); digitalwrite(motorleft1,high); digitalwrite(motorleft2,low); delay(x * 25); void le(int h) /左打轉 digitalwrite(motorright1,high); digitalwrite(motorright2,low); digitalwrite(motorleft1,low); digitalwrite(motorleft2,high); delay(h * 25); void setup()serial.begin(960
14、0); pinmode(motorright1, output); / 腳位 8 (pwm) pinmode(motorright2, output); / 腳位 9 (pwm) pinmode(motorleft1, output); / 腳位 7(pwm) pinmode(motorleft2, output); / 腳位 6 (pwm) pinmode(speedpin,output); pinmode(speedpin1,output); pinmode(sensorleft, input); /左感測器 pinmode(sensormiddle, input);/中感測器 pinmo
15、de(sensorright, input); /右感測器void loop() sl = digitalread(sensorleft); sm = digitalread(sensormiddle); sr = digitalread(sensorright); sl = digitalread(sensorleft); sm = digitalread(sensormiddle); sr = digitalread(sensorright);if (sm = high) if (sr = low & sl = high) / 向左 left(1); stopp(2); else if (
16、sl = low & sr = high) right(1);stopp(2); else if(sl = high & sr = high ) if(count=des) digitalwrite(motorright1,low); digitalwrite(motorright2,low); digitalwrite(motorleft1,low); digitalwrite(motorleft2,low); delay(50000); else advance(2) ; else / 直進 advance(1); if (sm=low) if(sr=low & sl=high) left
17、(1); stopp(2); else if(sl=low & sr=high) right(1); stopp(2); if(sl = low & sr = low & sm=low) le(1); 第 16 頁4.2 紅外模塊程序long advence = 0x00ff629d;long back = 0x00ffa857;long stopp = 0x00ff02fd;long left = 0x00ff22dd;long right = 0x00ffc23d;irrecv irrecv(recv_pin);decode_results results;void dump(decode
18、_results *results) int count = results-rawlen; if (results-decode_type = unknown)serial.println(could not decode message); elseif(results-decod_type=nec)serial.print(decoded nec: ); else if (results-decode_type =sony)serial.print(decoded sony: ); else if (results-decode_type = rc5) serial.print(deco
19、ded rc5: ); else if (results-decode_type = rc6)serial.print(decoded rc6: );serial.print(results-value, hex) serial.print( ();serial.print(resuls-bits, dec); serial.println(bits); serial.print(raw(); serial.print(count, dec);serial.print(): );for (int i = 0; i rawbufi*usecpertick,dec); elseserial.pri
20、nt(-(int)results-rawbufi*usecpertick, dec); serial.print( ); serial.println(); void setup() serial.begin(9600); irrecv.enableirin(); / start the receiver int on = 0;unsigned long last = millis();void(loop) i(irrecv.decode(&results) if (millis() - last 250) on = !on; digitalwrite(13, on ? high :low);
21、dump(&result)if (results.value= ? ) 4.3避碰模塊程序主程序void loop() myservo.write(90); /測量 detection(); /測量角度 if(directionn = 2) /假如 directionn(方向) = 2(倒車) back(5); / 倒退 stopp(); /停止 while(1); if(directionn = 8) advance(2); 五、綜合設計與調試5.1流程圖 開始 紅外信號 障礙物 路徑1 路徑2 終點 終點 開始5.2軟件設計 #include #include int recv_pin =
22、 12;int motorright1=8;/in1int motorright2=9;/in2int motorleft1=7;/in4int motorleft2=6;/in3int speedpin=11;int speedpin1=10;const int sensorleft = 2; const int sensormiddle= 4 ; const int sensorright = 5; int sl; int sm; int sr; int inputpin = a0;int outputpin =a1;int fspeedd = 0; int directionn = 0;
23、 servo myservo; int delay_time = 250;int fgo = 8; int bgo = 2; int count=0;int des=0;int f=0;/*紅外控制部分*long advence = 0x00ff629d;long b = 0x00ffa857;long s = 0x00ff02fd;long l = 0x00ff22dd;long r = 0x00ffc23d;irrecv irrecv(recv_pin);decode_results results;void dump(decode_results *results)int count =
24、 results-rawlen; if (results-decode_type = unknown) serial.println(could not decode message); else if (results-decode_type = nec)serial.print(decoded nec: ); else if (results-decode_type = sony) serial.print(decoded sony: ); else ifresults-decode_type = rc5) serial.print(decoded rc5: ); else if (res
25、ults-decode_type = rc6) serial.print(decoded rc6: );serial.print(results-value, hex); serial.print( (); serial.print(results-bits, dec);serial.println( bits); serial.print(raw (); serial.print(count, dec); serial.print(): ); for (int i = 0; i rawbufi*usecpertick, dec); elseserial.print(-(int)results
26、-rawbufi*usecpertick, dec); serial.print( ); serial.println(); int on = 0;unsigned long last = millis();void setup()serial.begin(9600); pinmode(motorright1, output); pinmode(motorright2, output); pinmode(motorleft1, output); pinmode(motorleft2, output); pinmode(sensorleft, input); pinmode(sensormidd
27、le, input); pinmode(sensorright, input); pinmode(speedpin,output);pinmode(speedpin1,output);serial.begin(9600); irrecv.enableirin(); pinmode(inputpin, input); pinmode(outputpin, output); myservo.attach(3); void detection() int delay_time = 250; ask_pin_f(); if(fspeedd 250) on = !on;digitalwrite(13,
28、on ? high : low);dump(&results); if (results.value = advence )digitalwrite(motorright1,low);digitalwrite(motorright2,high);digitalwrite(motorleft1,low);digitalwrite(motorleft2,high); des=3; if (results.value = b )digitalwrite(motorright1,low);digitalwrite(motorright2,high);digitalwrite(motorleft1,lo
29、w);digitalwrite(motorleft2,high); des=4;if (results.value = l )digitalwrite(motorright1,low);digitalwrite(motorright2,high);digitalwrite(motorleft1,low);digitalwrite(motorleft2,high); des=5; while(des!=0) myservo.write(90); detection(); if(directionn = 2) f=1; des=des+2;le(20); if(f=0) sl =digitalre
30、ad(sensorleft);smdigitalread(sensormiddle);sr=digitalread(sensorright);if (sm = high)/ if (sr = low & sl = high) left(1); stopp(2); else if (sl = low & sr = high) right(1); stopp(2); else if(sl = high & sr = high ) if(count=des) digitalwrite(motorright1,low);digitalwrite(motorright2,low);digitalwrit
31、e(motorleft1,low);digitalwrite(motorleft2,low);delay(50000); else advance(2) ; else advance(1); if (sm=low) if(sr=low & sl=high) left(1);stopp(2); else if(sl=low & sr=high) right(1);stopp(2); if(sl = low & sr = low & sm=low) le(1);if(f=1)sl = digitalread(sensorleft);sm =digitalread(sensormiddle)sr=digitalread(sensorright);if (sm = high) if (sr = low & sl = high) left(1);stopp(2) else if (sl = low & sr = high) right(1); stopp(2); else if(sl = high & sr = high ) if(countdes-1) advance(2); stopp(50);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 稀土金屬冶煉的產業政策分析考核試卷
- 農業廢棄物生物質能源的開發利用考核試卷
- 管道工程設計與施工規范考核試卷
- 電力系統通信與網絡安全考核試卷
- 江西師范大學《外語教學法》2023-2024學年第二學期期末試卷
- 上海第二工業大學附屬龔路中學2025屆高考模擬考試卷語文試題試卷含解析
- 西安交通大學《化工原理實驗一》2023-2024學年第二學期期末試卷
- 武漢工商學院《商務策劃》2023-2024學年第一學期期末試卷
- 文山市重點中學2025屆高三下學期期末質量抽測物理試題含解析
- 上海電影藝術職業學院《學前兒童語言教育與活動指導》2023-2024學年第二學期期末試卷
- 2025-2030城市燃氣產業行業市場現狀供需分析及投資評估規劃分析研究報告
- 緊固件制造企業ESG實踐與創新戰略研究報告
- 優化醫患溝通提高腫瘤治療效果的途徑
- 2025北京九年級(上)期末語文匯編:文言文閱讀
- 湖北省建設工程投資估算指標編制
- 茶百道結業試題及答案
- 2025年江蘇鹽城市射陽縣沿海投資有限公司招聘筆試參考題庫附帶答案詳解
- 越出站界調車RAILWAY課件
- 河北武安招聘警務輔助人員筆試真題2024
- 2025屆安徽省合肥市高三二模語文試題(解析版)
- 2025年高級插花花藝師(三級)理論考試題(附答案)
評論
0/150
提交評論