材料清單:車體:一張板(木板、塑料板、甚至是雪糕棒拼接的),萬向輪或小軸承、銅柱、車輪、電機; 硬件:Arduino Uno或Arduino Nano,電機驅動模塊、紅外傳感器*3、電源、杜邦線。 軟件:一個安裝了Arduino程序的電腦 在講解如何制作循跡小車之前,我們先了解一下它的結構組成和運行原理,理清軟件硬件實現(xiàn)的思路,對我們后期制作循跡小車會更有幫助。宏觀上看主要包括車體、硬件電路和軟件編程三部分。它的整個運行原理就是前端的紅外傳感器檢測黑線的存在,并將它的位置信號反饋給主控板,主控程序對小車位置進行分析,從而控制兩個電機的速度(差速運行),達到直行、左轉、右轉、倒車等操作效果。 那么具體的制作和零件選擇,我們來依次分析一下。 車體部分:首先來拆解循跡小車的車體結構。循跡小車的車體可以做得非常簡單,也可以設計的很復雜但更美觀。一張板子配上電機和車輪就可以做好,如果想要設計出可愛的造型,那你就要費點時間和精力了。 (1)這里不在設計上過于糾結,通過一個簡單的結構說清楚車體的制作: 這是一個簡單的車體結構,一張塑料洞洞板,通過螺釘、螺母、電機固定架將電機固定在洞洞板上,再將與電機軸尺寸合適的車輪直接插到電機軸上,最后在洞洞板前端用鐵絲固定一個小軸承充當前輪,車體部分就完成了。 型號: 電機:N20減速電機(購物網(wǎng)站很容易搜到,大概在10元左右) 車輪:與電機軸配套的D型孔的橡膠輪(搜索N20電機橡膠輪) 電機固定架:搜索N20電機固定架。 底板:搜索固位板可以找到很多,這個比較隨意。 軸承:外徑10mm左右都可以,或者也可以選擇其他圓形結構替代。 綜上,重點是選定電機,車輪和固定架匹配電機就可以,至于底板可以自由選擇,考慮好如何固定電機和前輪就可以。 (2)另外介紹一種常見的可以買到的車體,如圖: 這種類型的車體是平時最常見的車體結構,在網(wǎng)上搜索智能車套件,會有很多選擇。當然,想動手自己嘗試設計組裝的也可以買好配件自由發(fā)揮。對于這個底板,看上去很復雜,其實上面預留的孔也是隨意切割,只要匹配電機和萬向輪的固定孔位就可以。家里有木工工具的也可以自己鋸一塊木板,打幾個孔也能搞定。或者會CAD設計的,把圖紙拿到街邊的廣告制作店鋪,分分鐘也可以加工出來漂亮的亞克力底板。 電機:TT電機,相對N20電機要便宜一半左右 輪子:選擇與電機軸配套的孔型,這個電機軸是扁的,網(wǎng)上搜索TT電機橡膠輪可以找到。 萬向輪:網(wǎng)上很容易找到,重點關注螺絲固定孔與底板上對應孔的匹配。 總結:車體部分實際上并不難,重點是要做好各個組件的安裝匹配。同時,不要忘記后面主控板、傳感器的安裝位置,需要提前確定好,并預留孔位。 硬件電路部分:硬件電路部分主要包括主控板、電機驅動模塊、紅外循跡傳感器、電源等。 (1)主控板以Arduino Uno為例進行講解,對于沒有編程經(jīng)驗的會簡單一些,它還可以實現(xiàn)圖形化編程界面(Mixly),更是適合兒童編程學習。板子價格相對便宜,20元左右,一個板子+一條數(shù)據(jù)線就可以用起來了。 主控板的外形如下圖所示,它的學習不是一下可以說清楚的,我后面會給大家提供部分資料,也會把跟小車相關的用法講清楚。 從圖上看到,這塊板子有14個數(shù)字輸入/輸出端口,6個PWM端口。數(shù)字端口主要用于傳遞高低電平,高電平為1,低電平為0;紅外傳感器就是連接到這些端口上,通過高低電平來傳遞消息;PWM端口是在板子上標有“~”符號的端口,電機驅動的邏輯輸入端口就是跟PWM端口連接,它是用來給電機設定速度的,一般值在0-255之間。 USB接口通過數(shù)據(jù)線與電腦連接,便于下載程序到主板上。 電源接口可以與外部5V或3.3V電源連接,要注意看板子上的標識,不可以隨意接,也可以用來給傳感器供電。如果電源接口不夠用,可自行連接導線擴展,但也要注意不能過多,電流太大容易燒芯片。 注意:主控板供電只能是3.3V或5V,我們直接用后面的電機驅動模塊中的5V供電便可以。 板子的資料和對應軟件下載都羅列出來: 1. 插上UNO開發(fā)板,驅動會自動安裝 2.在die里面選擇板卡 UNO 3. 選擇COM端口,這個可以在我的電腦里查詢,剛剛你的UNO開發(fā)板里面端口。 這里把軟件安裝完成后的板卡選擇和COM端口選擇截圖演示,以便不懂的朋友參閱。這兩個端口的設置是為了將程序傳輸?shù)街骺匕迳希仨氝x擇對應的板卡(主控板型號)和電腦連接端口。如下圖: 2)紅外循跡傳感器模塊:就像人的眼睛,是用于判斷黑線的。紅外循跡傳感器上有兩個二極管,一個是發(fā)射紅外信號,另一個可以接收紅外信號。當傳感器下方是黑線時,黑色可以大量吸收紅外信號,從而導致返回的紅外信號非常微弱;當傳感器下方不是黑色時,,大量的紅外信號被反射回來,被接收端接收。從而可以判斷黑線的存在了,這就是紅外循跡傳感器的作用原理。 網(wǎng)上的紅外循跡傳感器也是多種多樣,不過使用都是一樣的,最主要的就是判斷在掃描到黑線時,返回的是高電平還是低電平,這個在產(chǎn)品介紹那都會有介紹。紅外循跡傳感器模塊大概如下圖所示: 圖上看出傳感器上有4個接線端和3個接線端的區(qū)別,它們都會有電源正極Vcc、負極GND、數(shù)字輸出口D0,而多出那一個端口是A0,也就是模擬輸出端,這個對我們使用并不影響,我們只使用數(shù)字輸出端(D0)就可以。 在使用時,只需將電源端接好,把數(shù)字輸出端接到主控板的數(shù)字輸入/輸出端口,便完成連接。具體連接圖在后面展示。 在購買時注意購買紅外循跡傳感器模塊,而不能直接購買紅外傳感器。因為單獨的紅外傳感器是用不了的,需要其他芯片配合使用。模塊上都是集成好的,可以直接使用。 (3)電機驅動模塊,是用于對電機速度和轉向的控制模塊。費用大概在10元左右,其端口連接會多點,但并不復雜。我來依次說明,如下圖,左右兩端藍色的輸出A和輸出B是連接兩個電機的,把左側電機的兩條線接到輸出A,同理,右側接到輸出B。外部供電可以選擇5-35v,但一般12v或9v就足夠。電源正極接在下圖的12v供電端,負極接在供電GND端,而圖中5V供電可以用于給控制板和紅外循跡傳感器進行供電,注意負極都是要接到供電GND。最后就是邏輯輸入這四個端口,需要跟控制板上的數(shù)字輸入/輸出端口相連接,左側兩個是控制左側電機,而右側兩個是控制右側電機。 具體的連接圖示在最后展示。 (4)電源部分則可以直接買12V鋰電池,或者比較簡單的就購買9v電池,配上連接頭就能直接使用。 由于篇幅有限,僅對用到的硬件部分進行簡單介紹,但足以完成循跡小車的制作。下面我就把整體的硬件連接圖展示出來。 軟件編程部分:該部分應該是整個循跡小車的核心,它賦予小車思想,讓小車智能化。對于該部分的實現(xiàn),方式方法都有很多種,比如利用Arduino IDE界面直接代碼編程,還可以通過圖形化界面進行拖拽編程,如Mixly。方法上有直接法,就是對電機的控制人為設定參數(shù),簡單粗暴;還有會結合PID算法的高級控制,這種方法對于小車的響應速度更快,也更合理,但是難度會高一些。 該文章就是科普性質,所以先通過最簡單的方式,實現(xiàn)小車的循跡功能。編程的整體思想是先判斷黑線的位置,當中間傳感器掃描到黑線時,小車位置正確,電機繼續(xù)按原始速度行走;當左側傳感器掃描到黑線時,此時小車已經(jīng)偏右,需要及時向左校正,左側電機減速,右側電機加速,完成左轉;當右側傳感器掃描到黑線時,此時小車已經(jīng)偏左,需要及時向右校正,左側電機加速,右側電機減速,完成右轉;下面列出上述電路連接對應的程序: static int initial_motor_speed=100; const int IN_A1=6; const int IN_A2=9; const int IN_B1=10; const int IN_B2=11; const int sensor2=2; const int sensor3=3; const int sensor4=4; void setup() { pinMode(IN_A1,OUTPUT); pinMode(IN_A2,OUTPUT); pinMode(IN_B1,OUTPUT); pinMode(IN_B2,OUTPUT); pinMode(sensor2,INPUT); pinMode(sensor3,INPUT); pinMode(sensor4,INPUT); } void loop() { char num2,num3,num4; num2=digitalRead(sensor2); num3=digitalRead(sensor3); num4=digitalRead(sensor4); if(num4==0){ analogWrite(IN_A1,150); analogWrite(IN_A2,0); analogWrite(IN_B1,50); analogWrite(IN_B2,0); }else if(num2==0){ analogWrite(IN_A1,50); analogWrite(IN_A2,0); analogWrite(IN_B1,150); analogWrite(IN_B2,0); }else{ analogWrite(IN_A1,100); analogWrite(IN_A2,0); analogWrite(IN_B1,100); analogWrite(IN_B2,0); } } 將程序拷貝并上傳到主控板中,就完成程序輸入了。如果你的電路連接跟圖示的一樣,那這個程序可以實現(xiàn)小車的循跡功能。如果你購買的循跡傳感器檢測到黑線輸出高電平,只需要把程序中num4==0,nm2==0改成num4==1,nm2==1即可。對于程序部分不作詳細的講解,如有需要可以自行查閱資料或私信交流。 到此為止,小車的車體、電路、軟件均已完成,靈魂戰(zhàn)車可以出發(fā)了! |
|