當前位置:米奇創意網>生活小發明>電子DIY>

自主機器人:你的私人WALL·E手工電子DIY教程

電子DIY 閲讀(2.73W)

自主機器人:你的私人WALL·E

DIYer: Kris Magri 製作時間: 2-3周 製作難度: ★★★★☆ GEEK指數: ★★★★★

Makey是我編程實現的一個自主機器人(自主者,非遙控也),能夠識別並規避障礙。她擁有全封閉的底盤並使用差速轉向(原文為“tank steering”,坦克的駕駛方式),這種轉向方式使用兩台分開控制的電動機分別驅動兩個主動輪(一機一輪)

控制信號來自其自身攜帶的Arduino微型控制器(在國內用單片機如PIC、AVR,或者Arm處理器都可以很好地替代),另外有一個舵機用於Makey頭部的轉動。Makey的頭部裝有一個超聲波探頭,她會持續的左右搖頭,以得到不同方向上的距離信息,並進行存儲和處理

通過對Arduino的編程,Makey可是實現諸如尋路的功能,僅需要少量硬件上的修改,Makey即可參加機器人界熱門的Mini-Sumo(迷你相撲)比賽

雙向電梯

1   工具和材料2   製作機身2.1   切割2.2   打孔2.3   挖槽2.4   彎板2.5   製作頂板3   運動系統3.1   安裝電機3.2   製作輪轂3.3   製作輪胎3.4   安裝萬向輪4   電控系統4.1   安裝電源4.2   控制板5   給WALL·E安上一雙明亮的眼睛5.1   WALL·E的脖子5.2   WALL·E之眼5.3   給WALL·E安上一雙明亮的眼睛6   連接並測試驅動電機6.1   電機預處理6.2   電機測試7   連接並測試舵機和傳感器7.1   連接舵機7.2   測試舵機和超聲波探頭7.3   安裝開關8   系統測試9   給你的WALL·E注入靈魂10   關於Mini-Sumo(迷你相撲)比賽11   DIYer簽到處

1   工具和材料● (使用的工具與零部件列表這裏沒翻,畢竟相當一部分東西買原版都不太現實也沒有必要--國內的傢伙事兒差不多的也能土法上馬,有興趣的童鞋請參考原文)

● 想得到關於這個項目的圖示、圖紙、代碼,請移步 資料下載

2   製作機身● 機身由兩片鋁合金薄板製成,涉及的加工方法有切割、鑽孔和折彎。你可以一次一片的加工,或者兩片一起做以減少佔用加工設備的機時。成品見2.5

● 猛擊 資料下載 下載圖紙並全尺寸打印。剪下底板(base)切割圖,用雙面膠將切割圖均勻平整的貼在鋁合金薄板上

● 注意:切割金屬時務必佩戴防護眼鏡

 

2.1   切割● 用帶鋸機把鋁合金片切成圖紙的形狀,切割的邊緣一定要在線外

● 提示:切割內角時,先切出一個大概的弧形曲線,然後從兩個方向直線進刀以得到直角

 

2.2   打孔● 用衝子和小錘子在圖上有十字線的17處衝出定位孔,為下一步的鑽孔做準備。另外要在圖上長方形的孔的四個角上衝透

 

● 按照圖上標十字線處的尺寸鑽孔,要首先取下貼上去的圖紙(不過別扔了),用鑽頭對準前面留下的衝痕開鑽可以使鑽孔更精確

● 把金屬牢固的夾在廢木頭板上或者隨便什麼墊子上,這樣可以得到更平滑的孔而不會導致薄金屬板在鑽孔處扭曲變形

● 為了掏成方形孔而鑽圓形孔時,你可能需要調整鑽孔的直徑以使圓孔邊緣與長方形的邊相切

 

2.3   挖槽● 用衝剪完成對長方形孔的加工,如果你願意的話可以把前面揭下來的圖再貼回去,以便容易知道長方形的邊界在哪。最後把邊緣磨平

 

● 用手工打磨工具去掉金屬邊緣的毛刺。給小孔磨邊的方法為:把大鑽頭的尖端插進小孔,然後手工轉幾下

衝剪是長成這樣滴:  

2.1-2.3都是跟合金板過不去的活兒,原作者的辦法基本是土法上馬,與美帝的高科技風格嚴重不符。柚子在大學折騰機器人那會兒去交大觀摩,他們有加工中心,只要把CAD圖畫出來發過去,那邊用等離子切割機就給“打印”出來了,鑽啊、掏異形啊這種活兒根本不存在。更神奇的是切完的邊不用磨,基本不扎手。另外我們用土法掏方形孔的時候是先鑽大孔,把帶鋸拆開一頭套進去然後慢慢鋸,得到的孔要多醜有多醜,然後還得上鐵砧拿小錘砸平 

2.4   彎板● 把底板的折彎圖用雙面膠貼到鋁板的另一面,對準圓洞方洞的位置,別貼歪了

● 把鋁片貼折彎圖的一面向上塞進彎板機裏,在所有標示折彎的部位折90度

 

● 每個長邊上的兩個突出部要先折,然後再折機身的邊。(順序反了就塞不進去了)

● 折彎後要緩慢釋放,測量,確認每一處折彎都要是直角

 

2.5   製作頂板● 重複2.1-2.4步驟,加工頂板(top),然後你就搞定了每個機器人都會喜歡的底盤

 

3   運動系統3.1   安裝電機● 用4-40 x 1螺絲穿過小孔,將驅動電機定位在底板上,電機的傳動軸應該穿過大孔

● 使用螺母和墊片在電機的一端上緊,因為可以施展的空間尺寸很小,可能需要尖嘴鉗子(夾住螺母)才能上緊

 

3.2   製作輪轂● 用2英寸(外徑,合50.8mm)的空心鑽頭(見過裝空調的師傅在牆上鑽大洞用的那種鑽吧,很類似)在廢木頭板上鑽出輪子(鑽透木板之後木板上有個圓洞,鑽頭中間的洞裏會剩下個圓片,這個圓片就是輪子),我用了18號板(貌似是一種規格),最終得到的輪子有3/4英寸(19.05mm)厚,直徑1.8英寸(45.72mm)。鑽輪子的時候要牢固的固定木板,並且緩慢進刀,防止卡住鑽頭

● 給2個木頭輪子分別對心定位一個輪心(圖中白色塑料的小輪子),並用小螺絲標記兩個孔的位置,在此位置上用1英寸(原文如此,合25.4mm,不過疑為有誤,從圖上看孔絕對沒那麼大)的鑽頭鑽透

● 給木頭輪子噴漆,我喜歡紅色光面防鏽漆,這種東西非常薄,顏色很亮,覆蓋性好並且容易清潔。注意,不要在安裝孔裏噴太多

 

3.3   製作輪胎● 用43號鑽頭在輪心上鑽兩個相對的孔,然後用4-40絲錐在每個孔裏攻出螺紋

 

● 用兩個4-40 x 1螺絲從木輪外側把輪子和輪心固定在一起,不要太緊

 

● 給每個輪子裝輪胎,輪胎外徑比較大的一面朝外。最後把輪子裝在驅動電機的傳動軸上

 

3.1-3.3就是折騰那倆輪子,原作者極其不厚道,沒説怎麼對心,這個很重要,誰也不希望做完的機器人跑起來一跳一跳的。您還別問我咋對心,我也沒經驗,新手還是找現成的輪子對付一套比較安全。另外3.2-3.3中原作者留下一個邏輯錯誤,看出來的童鞋請舉手

3.4   安裝萬向輪● 使用螺絲、螺母以及墊片將萬向滾珠安裝在底板底部

 

4   電控系統4.1   安裝電源● 按照第一步打印出來的隔板圖樣,從一塊硬塑料上切出隔板(隔板是用來裝線路板的,用塑料是為了絕緣),按説明打孔,嘗試着塞進機器人的外殼並使之架在驅動電機之上,作必要的修整,令其充分貼合匹配

● 用兩個4-40 x 2螺絲將Arduino控制線路板與硬塑料隔板固定在一起,螺絲應從隔板下方穿入,並在線路板上方擰螺母。線路板上的USB接口需要和機器人面板上預先留好的開口充分對齊

 

● 將電池夾具鉚接在機器人外殼的左側面板上,預製的鉚釘頭朝外,這樣的話醜的一頭就朝裏啦

 

關於鉚接,這裏指的不是造泰坦尼克的那種把燒紅了的鋼製鉚釘插進去擠兑一下的工藝,而是一種將鋁合金預製鉚釘的開放端在常温下擠壓成型從而將兩個或更多構件固定在一起的方法,最常見到的是各地馬路邊的颳大風能掉下來砸死人的鐵皮廣告牌子,它們就是用這種工藝把鍍鋅薄鋼板固定在L字鋼框架支撐結構上滴

4.2   控制板● 按照製造商的教程,把原型板(ProtoShield)焊好教程在 這裏

● 用帶鋸機把板子上的BlueSMiRF接頭切下來,這個接頭是用來連接藍牙模塊的,我們的機器人用不到那東西。是不是鋸得很爽?

● 把麪包板接在原型板上,原型板插在Arduino上,如果用的是Diecimila(Arduino主板的一個版本),那麼將電源跳線設置在EXT位上

 

焊接原型板絕對不是個輕鬆的活兒,沒基礎的童鞋搞不定也不用糾結。麪包板(breadboard)是這麼個東西,其意義在於省了燒電烙鐵的麻煩,不過問題是有時候元件捅進去會接觸不良...  

5   給WALL·E安上一雙明亮的眼睛5.1   WALL·E的脖子● 咱這個項目用的是HS-55型舵機及與之配套的較短的一字舵角,用5'鑽頭對舵角最靠外的兩個孔進行擴孔

Du-Bro Mini E/Z 連接頭, #DUB845

微副翼系統 Du-Bro Micro Aileron System, #DUB850

● 將兩個Du-Bro Mini E/Z連接頭從正面穿過搖臂兩端的孔,並在反面用黑色橡膠的部件固定

● 將控制桿(圖中所示的細鐵絲樣東西)穿過Du-Bro Mini E/Z連接頭,並用連接頭附帶的螺絲擰緊

 

5.2   WALL·E之眼● 有挑戰性的工作來咯!咱們需要把舵機和超聲波探頭接在一起。把從舵機上伸出來的控制桿分別穿過位於傳感器電路板對角的定位孔(這個定位孔來自Du-Bro Mini E/Z連接頭,連接頭又插在板子上的螺絲眼裏,然後另一端用那個黑橡膠部件固定)並向外折成90度角

● 控制桿應該從舵角開始豎直向上,並且給超聲波探頭留下足夠插信號線的空間,傳感器正面(有收發端,也就是像倆小眼睛的那一面)朝前,控制桿上還應該套上絕緣套(就是那個塑料管)以防止短路,絕緣套在Du-Bro套件裏可以找到。確認安裝無誤後,將控制桿與傳感器上的連接頭擰緊。

 

Du-Bro是美國的一家生產模型配件的公司,很遺憾我沒找到這些產品的國內版本。歡迎在國內見過這些配件的同學提供信息

5.3   給WALL·E安上一雙明亮的眼睛● 將舵機和超聲波探頭出來的線穿過機器人外殼頂部預先留下的長方形開孔

● 舵機也要插進那個頂部開孔,調整好位置後兩邊用螺絲與螺母將舵機與外殼固定好,剪去多餘的控制桿(還是那個細鐵絲)

● 把舵機搖臂與舵機上到一起,用小螺絲刀調整一下保證Makey的眼睛(傳感器)朝前

 

6   連接並測試驅動電機6.1   電機預處理● 咱的地攤貨電機上的連接頭部件是很脆弱滴,所以連接部分一定要用心

● 從外殼裏拆出電機和Arduino線路板

● 切2紅2黑各12英寸(304.8mm,12寸炮是305mm的,比如筑波級的2*2主炮)電線,每條線的兩端1英寸(25.4mm)剝去絕緣皮。先別焊接,用一個紅黑線對在電機的末端(有電源接點的那一端)纏幾圈,以防止拉斷,然後讓線對從電機頂端通過,用雙面泡沫膠帶將其固定在電機上。注意不要覆蓋電機上的任何孔洞,同時要為電機的固定留足空間

 

● 將電容的兩個引腳分別穿過電機接線頭上的小孔,焊接(這裏應該是把引腳穿過去的部分和同一根引腳的根部焊在一起,這樣的話引腳和電機接線頭就充分連通了。注意,千萬別把倆引腳焊在一起!)這需要使用尖嘴鉗的巧妙掰彎手法。然後把給電機供電的電線頭與電容引腳,注意,不是電機接線頭,焊在一起,焊牢穩一些。再然後剪掉多餘的電容引腳。把電容和纏在電機末端的電線一起用黑膠布(也就是絕緣膠帶)緊密的纏在電機上,並且用更多的泡沫膠帶把這個鼓鼓囊囊的位置包起來(還是為了固定)

● 把漏在外面的電機供電線擰成雙絞線,這樣可以減低電路中的噪聲(一個供電的低壓直流線路里有點噪聲怕什麼?原作者的想法好奇怪)。給電機標出左和右

 

在電機上並聯了一個電容,這樣做有兩個好處。

其一,在穩定的直流電路里,電容是開路,不會影響電機工作,但是給電機通電的那一瞬間,電容因為要充電,可以分擔一部分電流,所以電容作為一個保護器件可以保護電機。

其二也是更重要的,這種直流電機的接線頭是一個銅合金片,從電機的塑料外殼裏伸出來(通常被和塑料鑄在一起),鬼知道奸商們用了什麼材料,反正這個東西非常脆,尖嘴鉗上去經常能掰斷,然後這個電機就沒啥搶救的價值鳥,另外這個銅片不怎麼粘焊錫,焊接不易。但是電容的引腳一般都是類似鋁、錫一樣的柔韌金屬,想怎麼扳都能成形,焊起來也容易得多,所以作者把電氣連接的活兒都轉到這個引腳上來做。

【連電機的小經驗】銅接線片作連接之前最好用細砂紙小心的蹭幾下,去掉氧化物。電容線腳穿過去之後輕輕拉緊,在穿孔附近用尖嘴鉗用力捏一下,使線腳與銅片充分接觸。另外電線最好挑獨軸的,也就是絕緣皮裏面只有一根金屬的,那種絕緣皮裏有一束極細銅絲的線焊起來會有想死的衝動

 

6.2   電機測試● 將短實心跳線分別焊接到電機供電線和電池接頭線上,這些跳線可以讓你把它們(電機和電池)插到麪包板上,焊接之後用熱縮膠帶作焊點的絕緣(用絕緣膠布纏是一樣的,除了醜一點和大一點)。將電機供電線穿過塑料隔板(4.1提到的那個)上的大窟窿(因為麪包板和電機分別在隔板上下兩側)

● 按圖示把電機驅動器插進麪包板中間的一行孔裏,使之和電機以及一個電池連通(注意,在麪包板上,每一行的孔之間是連通的)。使用短跳線並保證這些線緊貼麪包板,傻大黑粗的大電線是不配塞進機器人裏的

● 從 Arduino官網 下載Arduino的軟件並且安裝之,再從 資料下載 處得到這個項目的5個測試程序。通過USB接口把你的Arduino和電腦連起來,如果你用的是Diecimila版本的話,把它的電源跳線接換到USB檔上。

● 為了測試電機,運行名為01_Test_Motor_Rotation的程序,此時左邊的電機應該先往前轉再往後轉,然後是右邊的,先往前再往後。如果不是這樣,檢查一下你的接線。接下來運行02_Test_Motor_Speed,此時電機應該以低速啟動,然後加速,最後反方向轉,如果不是這樣的話檢查線腳D11和D3

 

7   連接並測試舵機和傳感器7.1   連接舵機● 將電機和Arduino再裝回機器人裏面,找兩個3針的單排直角插針(通常是將一個20針的單排插針折斷得到)插在麪包板上,把舵機線接在上面,具體接線規則為:黑線-GND(地線,電池負極),紅線-+5V(電池正極),黃線-Arduino跳線D10

● 再來一個3針右轉接頭,這個是接超聲波探頭的,接線規則為黑線-GND(地線,電池負極),紅線-+5V(電池正極),黃線-Arduino跳線D9

 

7.2   測試舵機和超聲波探頭● 運行舵機對中程序03_Test_Servo_Center,鬆開舵機搖臂的螺絲並微調,舵機臂與超聲傳感器儘量指向正前,因為舵機軸齒輪的問題,這一步可能無法完全對中,沒關係,我們稍後再調整

● 運行程序04_Test_Servo_Sweep,這個程序可以讓超聲波探頭慢慢的搖頭

● 再來測試超聲波探頭,運行05_Test_Sensor_Distance,點擊Arduino軟件的數據流監視器圖標,你應該能看到不斷跳出來的測距讀數,而且如果你在傳感器之前揮舞你的手,測距讀數應該有變化。如果你得到的讀數始終是0或者255釐米或者別的什麼錯誤的讀數,檢查你的接線是否有誤,並且千萬確定你的傳感器沒接反 :P

 

7.3   安裝開關● 終於可以接電源開關鳥!把Arduino最後一次拆出來,為了裝開關,需要把還沒用到的電池引線的紅線焊在開關的一端並且把另一跟紅線焊在開關的另一端。同樣別忘了把電池的黑色引線和另一個根黑線焊在一起

● 把線從機器人側面的方形孔穿好,開關需要打在“1”的檔位上,把開關塞進方孔裏固定好,這個調整可能會用到鉗子

● 把從開關出來的紅色線腳接到原型板的RAW線腳上(這個線腳還連着Arduino的Vin線腳),把從電池出來的黑色線接到原型板的GND線腳上,如果你用的是Diecimila版本的話,把它的電源跳線調回到EXT檔上

 

8   系統測試● 現在所有的電子設備工作都正常鳥,小心的把所有東西塞回機器人裏,啥也別落下。裝好電池,把機器人放好,別摔了。用來傳程序的USB接口應該能從側面的孔裏露出來

● 重新載入並運行01_Test_Motor_Rotation,注意,所謂前是指機器人的USB接口和傳感器指向的方向,如果你的機器人反着跑,檢查在線腳AOut1, AOut2, BOut1, BOut2, AIn1, AIn2, BIn1, 和 BIn2處的接線,可能也會需要反轉驅動電機的連接

 

● 重新運行其他的測試程序,確認接線正常,測試完成後把舵機和傳感器的線塞進外殼裏,扣上頂蓋,擰上4個螺絲固定,收工!

 

9   給你的WALL·E注入靈魂● 有時候你的硬件做好了你就沒啥事可幹了,不過你的程序是寫不完滴。這也是你展示創造力的好時機

● 在代碼中你需要使用digitalWrite和analogWrite這倆函數來控制驅動電機,通過傳遞值給電機驅動器的各3個線腳。其中一個可以接收介於0到255之間的值,用於控制傳給電機的電流大小,這個是用來控制速度的。另外2個線腳則使用布爾型變量,用於決定每個電機兩端的電位高低,這個可以決定電機的方向(當然電機兩端只能一端是高電位)

● 你可以編寫類似void Forward()這樣的函數實現簡單的動作,比如後退(兩個電機同時反轉),Spin_Left(原地左轉,右輪正轉左輪反轉),Arc_Left(畫弧左轉,右輪正轉左輪不動)之類的。Arduino的編程環境使你的代碼實驗和加載都很方便

● 另外一個好玩的事情是規避障礙,只要運行這樣一個循環:往前走,讀取測距信息,如果障礙物太近則採取躲避動作比如後退並轉彎,返回循環體頭部

 

10   關於Mini-Sumo(迷你相撲)比賽● 在 Mini-Sumo 比賽中,兩個自主機器人會被放置在一個用白色漆成的圓形場地中

● 只要換上窄一些的輪子,比如GM家賣的 這種 ,Makey就可以滿足大賽要求的尺寸和重量上限:底面10釐米見方、500克。你極有可能需要另外的朝下的傳感器用來觀察那個白色的環(場地邊界),不過Arduino有足夠的能力處理其他多出來的信號