構(gòu)建一個(gè)可以避開(kāi)障礙物的“樂(lè)高人”
每個(gè)人都知道電影Wall-E(如果你不知道,現(xiàn)在就去看吧!)和試圖清理地球的黃色英雄。在這個(gè)項(xiàng)目中,我用了一個(gè)樂(lè)高版本的小朋友,教他如何避開(kāi)障礙物。這是我的第一個(gè)項(xiàng)目,也是一次很好的學(xué)習(xí)經(jīng)驗(yàn),讓我了解了電子的基礎(chǔ)知識(shí)。
步驟1 -代碼
作為一名軟件開(kāi)發(fā)人員,我考慮了我想讓他做什么,然后開(kāi)始編寫(xiě)代碼。
當(dāng)你斷開(kāi)運(yùn)行的電機(jī)時(shí),電壓尖峰可能會(huì)發(fā)生,并損壞你的電子設(shè)備。因此,我讓瓦力在做任何事情之前等兩秒鐘。這意味著我可以按下Arduino上的重置按鈕,快速斷開(kāi)電池,而不會(huì)損壞任何東西。
他醒來(lái)后會(huì)彈一小段旋律,然后開(kāi)始開(kāi)車。當(dāng)他看到障礙物時(shí),他會(huì)停下來(lái),發(fā)出“啊哦”的聲音,然后環(huán)顧四周,確定最佳路線。我使用的這種紅外傳感器背面有一個(gè)小螺絲,可以讓你確定它產(chǎn)生信號(hào)的距離。這就是為什么代碼中沒(méi)有距離計(jì)算。(我想先用超聲波傳感器,但不適合他的眼睛。)
瓦力首先檢查左邊是否安全,然后檢查右邊是否安全。如果兩邊都被堵住了,他就會(huì)像工地上的重型機(jī)械一樣發(fā)出嗶嗶聲,然后轉(zhuǎn)向一個(gè)隨機(jī)的方向繼續(xù)前進(jìn)。如果只有一邊被阻擋,他繼續(xù)向另一邊前進(jìn)。如果兩邊都是自由的,他會(huì)隨機(jī)選擇一個(gè),然后繼續(xù)前進(jìn)。
我試著讓他做隨機(jī)轉(zhuǎn)彎,但那部分還沒(méi)有完成。我正在嘗試使用內(nèi)置的Arduino計(jì)時(shí)器。如果你有如何優(yōu)化它的想法,請(qǐng)?jiān)谠u(píng)論中告訴我!
步驟2-給他接上電線
第一件事就是把紅外線傳感器裝進(jìn)眼睛里,這樣就不會(huì)太明顯了。我把它拆開(kāi),用強(qiáng)力膠把樂(lè)高別針粘在傳感器上(這樣他的眼睛就可以上下移動(dòng)了),然后用藍(lán)膠把樂(lè)高積木粘回傳感器周圍。
馬達(dá)最重要的一點(diǎn)是要有足夠的扭矩,因?yàn)橥吡Φ妮喿有枰艽蟮牧Σ拍芤苿?dòng)。我必須把電線焊接到馬達(dá)上,然后把它們固定在樂(lè)高積木上。所以我拆開(kāi)了他的輪子,訂購(gòu)了一整袋的樂(lè)高技術(shù)別針,用石膏膠帶(你是這么叫它的嗎?)它就像柔軟的膠帶,可以粘在你的皮膚上,然后把它們粘在兩個(gè)銷上,這兩個(gè)銷就成了每個(gè)車輪的主軸。這種方法只起了幾分鐘的作用,但隨后摩擦力太大,膠帶上的膠水無(wú)法承受。幸運(yùn)的是,技術(shù)大頭針在側(cè)面有小凹槽,所以膠帶確實(shí)有一個(gè)地方可以抓住,在被強(qiáng)力膠浸泡后,他們很高興地做到了。
我還取下了他的胸部的一部分來(lái)插入LED。然后我連接了所有的部件和Arduino。
馬達(dá)防護(hù)罩剛好能塞進(jìn)他的肚子里。
圖表也不是很清楚,但我試著用顏色來(lái)標(biāo)記電線,以便更好地概述:
按照慣例,所有紅色電線都是正極(“輸送”電),所有黑色電線都是負(fù)極(“接收”電)。右上方的黃色導(dǎo)線攜帶紅外傳感器的信號(hào);橙色和綠色的電線用于三針雙色LED,紫色的電線用于告訴電機(jī)屏蔽到哪個(gè)方向轉(zhuǎn)動(dòng)電機(jī),藍(lán)色的電纜告訴電機(jī)屏蔽轉(zhuǎn)動(dòng)它們有多快。
電機(jī)屏蔽有一個(gè)很好的教程,使其易于連接和使用。不幸的是,fritzzing部分沒(méi)有設(shè)置速度的兩個(gè)引腳,所以藍(lán)色電纜只是隨機(jī)結(jié)束在圖中的電機(jī)屏蔽上。
另一個(gè)問(wèn)題,我所面臨的,而把它們粘在一起是缺乏電壓和接地引腳。我想直接通過(guò)電機(jī)屏蔽給電機(jī)供電,這樣它們就能獲得盡可能多的電力,但我必須以某種方式給Arduino和紅外傳感器供電5V。所以我做了網(wǎng)上幾乎所有人都說(shuō)我不應(yīng)該做的事情:我將電機(jī)屏蔽的5V輸出連接到Arduino的5V引腳上作為輸入。現(xiàn)在有了我正在使用的屏蔽,我可以絕對(duì)肯定它輸出一個(gè)穩(wěn)定的5V,沒(méi)有任何可能損壞我的Arduino的討厭的尖峰。如果你把一個(gè)不規(guī)范的電源連接到那個(gè)引腳上,你可能會(huì)燒東西。一開(kāi)始我想用Vin引腳,但那個(gè)引腳有一個(gè)內(nèi)置的機(jī)制來(lái)調(diào)節(jié)一切,所以我的5V會(huì)變成3.8V左右,這不足以讓Arduino正常工作。相反,我用免費(fèi)的Vin給5V的紅外傳感器供電,因?yàn)槲覜](méi)有任何電纜分離器,我知道那里也會(huì)有5V出來(lái)。是的,在這一點(diǎn)上開(kāi)始感覺(jué)有點(diǎn)像弗蘭肯斯坦。但它成功了!
步驟3 -瓦力在行動(dòng)
瓦力的第一次測(cè)試!
在這里,我測(cè)試了如果他被困在角落里會(huì)怎么做。
瓦力正試圖從角落里出來(lái)
這是我的第一個(gè)小項(xiàng)目。我現(xiàn)在計(jì)劃優(yōu)化電纜連接,也許添加一個(gè)伺服電機(jī),這樣他就可以轉(zhuǎn)他的頭。我甚至可能會(huì)買(mǎi)分離器和一個(gè)更小的電機(jī)屏蔽和板,這樣我就可以把所有東西塞進(jìn)他的肚子里。
本文編譯自hackster.io





