在最後一刻停下來!用Arduino和距離感測器製作小雞賽車!(第2篇)

該專案旨在介紹用Arduino讓感測器工作的一個電子作品。此次的分享嘉賓是福田和宏先生!他過去曾在DevicePlus上連載過“Arduino基礎”等作品。

◆◆◆

00

大家好!在第1篇中,我為大家介紹了小雞賽車的全貌。在本文中,我們一起來瞭解一下小雞賽車中使用的電子零件的工作情況。然後,我們會創建一個電子電路,使其能夠安裝在作品主體上。

可以測量距離的“超聲波距離感測器”

當小雞賽車停在牆壁前面時,我希望能夠測量並讓我們知道賽車的停止位置距離牆壁有多遠。可以使用超聲波距離感測器來完成這項任務。超聲波距離感測器是利用超聲波(聲音)從感測器發出、並被牆壁反射回來所需的時間來計算距離的。透過將時間乘以聲速(340.29 m/sec)即可計算出距離。然而,由於這個距離是聲音從感測器到物件物、並從物件物被反射回到感測器的往復距離,所以實際上到物件物的距離需要減半。雖然在不同的室溫下會多少存在一些誤差,但由於在測量短距離時忽略誤差也不會造成太大的偏差,所以我沒有給小雞賽車配備溫度校準功能。

arduino explorer rover

現在,讓我們透過Arduino Nano使用超聲波距離感測器來測量距離吧。如下連接超聲波距離感測器。
超音波距離センサーの接続図

超聲波距離感測器帶有稱為“TRIG”和“ECHO”的引腳。透過對“TRIG”施加“HIGH”,可以發出超聲波。此外,“ECHO”在接收到反射回來的超聲波時會變為“HIGH”。使用Arduino,可以透過測量從將TRIG置“HIGH”發出超聲波直到ECHO切換為“HIGH”的時間,來獲取從超聲波發射到返回所花的時間。當然,需要將TRIG連接到Arduino Nano的數位輸入輸出引腳2,將ECHO連接到數位輸入輸出引腳3。

此次的超聲波距離感測器的測量工作將使用筆者創建的資料庫。您可以透過下面的連結下載這個資料庫。

下載資料庫文件(HCSR04.zip)

從Arduino IDE的“Sketch”功能表中選擇“Include Library”-“Add .ZIP Library”,打開下載的資料庫。現在,就可以使用超聲波距離感測器資料庫了。

創建如下程式,透過這個程式,可以利用超聲波距離感測器來獲取距離,並在串口顯示器上查看。

將程式傳輸到Arduino並打開串口顯示器,就會顯示出距離。接下來,您可以把書本等物體放在超聲波距離感測器前來改變距離,可以看到顯示器上的距離資料也會隨之發生變化。

顯示字元的“字元液晶顯示器”

我們使用字元液晶顯示器來顯示超聲波距離感測器測量到的結果。字元液晶顯示器是一種在內部存儲有字母和數位等字元資訊,可以簡單地顯示字元的顯示裝置。雖然能夠顯示的字元數是預先規定好的,但在顯示像這次這樣的測量距離或簡單的介紹文本時,足夠用了。

本次使用的字元液晶顯示器“AQM1602Y-FLW-FBW”可以在螢幕上顯示32個字元(16個字元×2行)。

AQM1602Y-FLW-FBW透過I2C由Arduino來控制。在Arduino Nano Every中,模擬輸入引腳A4和A5可用於I2C通信。

現在,讓我們來嘗試透過Arduino Nano實際控制字元液晶顯示器,並使之顯示任意字元。連接如下。由於背面的背光引腳的干擾,AQM1602Y-FLW-FBW可能無法插入麵包板。在這種情況下,最好準備一個針座並透過針座將其插入麵包板。

キャラクター液晶ディスプレイの接続図

要在AQM1602Y-FLW-FBW上顯示來自Arduino的字元,需要另外的資料庫。這次我們將使用筆者創建的資料庫來來實現顯示。您可以從下面的連結下載這個資料庫檔。

下載資料庫文件(AQM1602Y.zip)

從Arduino IDE的“Sketch”功能表中選擇“Include Library”-“Add .ZIP Library”,打開下載的資料庫。現在,就可以使用該資料庫了。

讓我們實際顯示一下“Chicken Racer”。創建如下程式:

lcddsip.move () 是將游標移動到希望開始顯示的位置。需要按照位元和行的順序指定。螢幕左上角為0位0行。例如,如果要在第2位元第1行顯示,就需要指定“lcddisp.move (0x01, 0x00)”。

要顯示的字串由 lcddisp.charwrite() 指定。

當我將程式傳輸到Arduino時,顯示器上顯示“Chicken Racer”。為了便於查看,我打開了背光燈(如下面照片所示),但是實際上沒有連接背光燈,所以背光燈不會亮。

キャラクター液晶ディスプレイのテスト

推動車輪前進的“馬達”

小雞賽車是透過使裝有車輪的馬達來推動其前進的。在啟動時使馬達旋轉,在按下開關時使馬達停止。

由於使馬達運行所需的電流較大,因此無法直接將馬達連接到Arduino Nano的數字輸入輸出引腳。所以需要使用馬達驅動器由馬達專用電源供電。有關馬達和馬達驅動器的詳細資訊,請參閱“Arduino基礎:控制馬達”。

要想實際驅動馬達,就需要使用馬達驅動器進行如下連接。本次使用的馬達驅動器帶有兩個控制引腳,可以控制正轉、反轉和停止。但是,由於小雞賽車只能前進,所以將正轉控制用的輸入1(引腳7)連接到Arduino進行控制,將反轉控制用的輸入2(引腳9)連接到了GND。

モータの接続図

另外,透過本次使用的馬達驅動器的“VREF”引腳(引腳1),還能夠調整可提供給馬達的電壓。正轉或反轉時,馬達會輸出與VREF相同的電壓。當施加在馬達上的電壓發生變化時,馬達的轉速也會改變。因此,可以事先安裝旋鈕來調節施加於VREF的電壓,這樣就能夠調整馬達的轉速了。這個旋鈕是學齡前兒童可以慢慢轉動、小學生可以快速轉動的程度。

連接完成後,讓我們試著透過Arduino來實施控制。這次我們嘗試以5秒的間隔反復旋轉和停止。創建如下程式:

透過這個程式,連接馬達驅動器的數字輸入輸出引腳(引腳4)被置“High”時將會旋轉,被置“Low”時將會停止。因此,可以透過使用digitalWrite()切換引腳4的輸出來實現馬達控制。

這次的小雞賽車採用兩個馬達來使左車輪和右車輪旋轉和前進。因此,需要為每個馬達準備一個馬達驅動器。如果能夠獨立控制兩個馬達,不僅可以使賽車前進,還可以實現旋轉操作,可以更靈活地進行控制。

不過本次的賽車只需要能夠前進和停止,因此只要讓兩個馬達以相同的方式運行即可。所以,透過將兩個馬達驅動器的控制引腳連接到Arduino的一個數位輸入輸出引腳,即可執行相同的動作。

當然,在某些情況下,馬達的轉速可能會有所不同,可能無法直線行駛。在這種情況下,可使用連接到VREF引腳的旋鈕將轉速調整為同一轉速。

用來檢測碰撞的“微動開關”

要想判斷是否失敗,就需要檢測到是否與牆壁發生了碰撞;另外,當撞到牆上時需要立即使馬達停止。針對這種需求,我使用的是微動開關。微動開關是一種響應性能良好的開關,按下開關後,當到達特定位置時會立即切換。它也常用於滑鼠的按一下按鈕。

另外,如果是帶有金屬板的微動開關,那麼即使按下角度有偏差,也能夠確保開關被按下。像這次需要檢測是否碰撞牆壁的情況,某些碰撞角度,可能無法按下開關。而如果使用帶有金屬板的微動開關,那麼即使撞擊角度有一定程度的傾斜,開關也能夠被按下。此外,透過在左側和右側同時安裝開關,可以進一步確保開關在撞擊時被按下。

微動開關帶有3個引腳。未按下開關時,COM引腳和NC引腳處於連接狀態。當按下開關時,開關由NC切換到NO,COM引腳和NO引腳連接。

arduino explorer rover

由於我們這次是希望透過開關被按下來檢測碰撞,所以將使用COM引腳和NO引腳。我們將一個引腳連接到Arduino Nano的數字輸入輸出引腳,將另一個引腳連接到GND,這樣,當開關被按下時,數位輸入輸出引腳將會被切換到GND狀態。另外,需要啟用上拉功能,使數位輸入輸出引腳在開關未被按下時處於5V狀態,以穩定輸入。

下面,讓我們來試用一下微動開關吧。這次,先試試當開關被按下時讓安裝在Arduino Nano上的 LED燈亮起來吧。連接方法如下。我們使用引腳12作為數位輸入輸出引腳來讀取微動開關的狀態。

マイクロスイッチの接続図

連接好之後,創建以下程式:

當將程式傳輸到Arduino並按下微動開關時,您可以看到安裝在Arduino Nano上的LED亮了。

在電路板上創建電路

在確認了每個電子零件的工作情況之後,我們來為整個小雞賽車創建一個配套的電路。電路圖如下:

チキンレーサーの回路図

基本上,要讓每個確認過的電子零件分別連接好。但是考慮到操作的方便性,我還增加了一個在調整馬達轉速時使馬達旋轉的開關、以及為了便於獨立控制馬達而設置的切換用跳線。

這個電路是在萬用板上透過焊接來製作完成的。下面是作者做的電路板。是將主機板和馬達控制板分開製作的。

arduino explorer rover

arduino explorer rover

在製作電路板時,如果使用連接器進行連接,佈線會更容易處理。這是因為一旦電路有什麼問題,也可以透過插拔輕鬆地進行調整。這次,我用的是小型連接器——“XH連接器”。另外,在使用連接器時,需另行準備連接用的導線。

◆◆◆

這次我們創建了電路。下次我們將完成殼體制作並創建運行程式,徹底完成小雞賽車。下一篇更精彩,敬請期待!

福田 和宏
福田 和宏
作家,居住在日本札幌。喜歡撰寫有關電子創作、電腦、Linux、智慧手機等方面的文章,也為“Raspberry Pi Magazine”和“日經Linux”寫稿。著作包含《有這本書就夠了!Raspberry Pi超簡單入門》(SOTECHSHA)、《學習各種電子元件的控制!Arduino電子創作 實戰手冊》(SOTECHSHA)、《Arduino實用入門》(技術評論出版社)等書籍。目前,創辦了“札幌電子工藝部”(https://sapporo-elec.com/),這裡彙集了眾多電子創作玩家,大家使用各自的電子技能創作各種作品。任何人都可以參加,也期待您的加入!

Check us out on Social Media