哪個男孩不想要擁有自己的賽車搖桿,一組好幾千元的賽車外部裝置,除非你是賽車遊戲愛好者,否則一般人難以體驗這種夢幻設備。
在這邊我要教大家如何便宜的DIY賽車搖桿,而且這種自己做的賽車搖桿可以對應幾乎所有的賽車遊戲,甚至可以直接用在電腦與家用主機上。
網路上雖然也有許多自己DIY的賽車模組,但價格材料通常較為昂貴,或是製作方法較為困難,而這篇文章主要是教大家如何用便宜簡單的方式,來製作自己的簡易賽車搖桿。
材料:
Arduino Leonardo開發板 * 1片 (UNO開發板無法使用)
麵包板 * 1片
電阻10KΩ~100KΩ * 3個
小洋芋片罐 * 1個
6B~8B鉛筆 *1隻
厚紙板
電線
棉線
橡皮筋
膠帶
熱溶膠
震動功能選配:
馬達+馬達驅動器 *1
製作這款賽車搖桿,需要會一點Arduino以及寫程式的基本技能喔!
方向盤控制器
首先我們先製作最重要的方向盤控制器,這部分我省略了按鈕、換檔之類的功能,雖然只做方向控制的功能,但輸入的訊號是類比訊號,所以可以讓車子轉向更為精準
首先找一塊厚紙板,這個賽車控制器的寬度需要寬一點,我製作的寬度是60cm,建議尺寸在60cm以上,越寬越好製作
劃一條弧形,用美工刀切割下來,這就是方向盤儀表板的部分
準備一個圓筒狀的物體,我這邊是使用洋芋片的罐子,在中間適當的地方畫一個圓形,並且切割下來
將罐子放上去,確保罐子能夠在中間順利轉動,不會卡卡的
切割另一塊紙板,作為斜撐,讓方向盤可以在桌上傾斜一個角度
再來切割一塊大面積的板子,作為方向盤的底板
使用熱熔膠黏貼板材,這邊不得不說一下威克士的無線膠槍真的很讚,沒有電線,所以在黏貼大板材時也不會被電線勾到
可以使用紙膠帶先固定住,這樣會比較好上熱熔膠喔
底座完成,非常精簡卻穩固的設計
再來切割一片主軸的固定座,這個圓形的洞也要稍大一點點,讓主軸旋轉不容易卡住
使用熱熔膠固定,可以將洋芋片罐子插著,才不會黏歪掉
側面用兩塊紙板固定,這樣旋轉軸就會非常穩固了
接著製作方向盤,這邊可以使用紙板直接打兩個洞畫圓
像方向盤這種許多彎曲的曲線,可以使用30度的美工刀,比較容易切割小弧度的形狀
外面再切一圈紙板,讓方向盤比較好握
將罐子黏貼在方向盤上,最好可以多塗一些膠,讓方向盤比較穩固
切割兩個甜甜圈形狀的紙板,內圓切割剛好卡住罐子,外圈大概切5cm寬
在其中一塊甜甜圈穿一個洞,這是用來穿過橡皮筋用的洞
將板子用熱溶膠固定在罐子上,先固定有挖洞的這塊,離底部方向盤約1~2cm的距離
再來黏貼另一片甜甜圈紙板,由於上方這邊會直接接觸底座,所以這邊不能有熱熔膠溢出來,否則轉動的時候就會卡卡的
從側面看起來像這樣,中間各約間隔1~2cm的縫隙,這就是讓橡皮筋走的路徑
接下來要製作感測器,感測器的詳細製作方法可以參考這部影片
感測的原理主要是透過棉線來回摩擦,讓棉線沾滿鉛筆芯,電阻值就會因為拉扯的力道而有不同。透過分壓原理,就可以讓Arduino讀取到不同的數值。
將棉線約5cm的範圍沾滿鉛筆芯,用電表測量電阻值必須小於1M歐姆
在方向盤底座切割三條縫,這是要用來固定感測器的地方
棉線的一端打一個圈圈,套進去這三個縫隙,就可以固定住感測器了
棉線打兩個結,固定住兩條電線,棉線與電線僅需要綁著就好,不需要焊接或是黏在一起
在另一端穿上橡皮筋,形成一串橡皮筋串
感測器與橡皮筋的長度大概與底座差不多長即可
橡皮筋穿過方向盤前方的這個洞
可以使用鉛筆把橡皮筋挑出來
感測器與橡皮筋長度條整成一樣長
先固定住感測器這端
橡皮筋這端也固定住
橡皮筋就像圖上標示的虛線,完成之後還可以調整左邊橡皮筋的長度,甚至可以串兩條橡皮筋,調整方向盤旋轉的阻力
從側面看,會發現橡皮筋箭頭處有點卡卡的,所以在邊邊用紙板將感測器墊高,另一端也可以墊高防止摩擦
這樣轉起來就很順暢了
震動馬達
這種賽車搖桿沒辦法有旋轉的動力回饋,但手把的震動功能還是有的,所以接下來就自己製作震動馬達吧。
你可以找一顆小風扇,或是玩具的馬達來製作,還需要一顆螺帽當重物,以及一條束線帶
用束線帶綁住螺帽
並且使用熱熔膠加強固定,震動馬達就完成了
為了不讓電線影響方向盤的操控,震動馬達可以裝在轉軸後面,這邊塗上熱溶膠來將馬達固定
電線可以黏在馬達對面,這樣震動時不會碰到電線
確認方向盤旋轉不會影響之後,就把電線固定,整個方向盤就完成了喔!
油門剎車踏板
接下來要製作油門剎車的踏板,這邊我為了讓踏板比較耐久,所以使用木板製作,你也可以使用其他較為堅硬的材料來製作,若真的沒有材料,一般的厚紙板多黏幾層也是個選擇。
先切割踏板的大小,油門跟剎車各一片
兩側要切割凹槽,這是到時候固定橡皮筋用的,若你沒有鋸子可以使用美工刀慢慢挖,只要能卡住橡皮筋就可以
像這樣兩片踏板就做好了
踏板的架子我使用大小適合的紙箱,你也可以自己用紙板做一個框架
我將紙板的兩側反摺回去,形成一個三角形的柱狀體,這樣可以讓箱體更為結實不容易壞,
可以多塗一些熱溶膠固定,兩側都需要加強,否則紙箱很容易壓壞
箱子的頂部也需要加強硬度,可以塗一堆膠,再將頂部紙板反摺回來
將踏板黏在紙箱上,這邊我使用大力膠帶黏貼踏板的正反兩面,用膠帶當作活動鉸鏈
翻過來,確認位置正確不會卡到側邊或底板
將接著黏上膠帶,固定住踏板外側
兩個踏板製作完成後,確認上下活動順暢
在踏板頂部鑽兩個洞,將另外製作的「拉力感測器」穿過這個洞
拉力感測器一端固定在頂端,一端綁上橡皮筋,我希望油門跟剎車有較好的阻力回饋,所以綁上三條橡皮筋
上端這邊的固定方式,可以塗上熱熔膠再貼上膠帶,這樣比較能牢牢固定住
測試踏板確認能夠踩踏,剎車跟油門就完成了喔!
組裝電路
完成方向盤以及踏板之後,就準備來連接電路,測試感測器是否運作正常,電路的連接方式如下圖
方向盤、煞車、油門的拉力感測器,分壓用的電阻我都是裝33KΩ的電阻,這邊電阻的數值大小,僅會影響到感測到的範圍,讀取到的Apin訊號介於200~800之間較佳
方向盤連接到A0,煞車與油門則分別連接到A1與A2,震動馬達連接到D5、D6
程式碼
測試訊號,請先上傳 Racing_Game_Test 這個程式碼
Racing_Game_Test程式碼
https://create.arduino.cc/editor/kobebeefg/ff02df21-577c-4ece-b5fe-721e97a2f483/preview
上傳完畢,打開序列埠監控視窗,確認感測器的數值狀態,並請紀錄以下幾種數值:
油門踩下去與放開的2個數值
煞車踩下去與放開的2個數值
方向盤打到最左、置中、最右的3個數值
若數值變化很小,或是根本沒有改變,請確認電路連線是否正確,如果一切正常,就剩下最後的步驟了!
接下來我們要使用XInput這個程式庫,將Arduino Leonardo變成Xbox手把,這個程式庫的操作步驟,需要在電腦新增XInput的開發板,並且安裝程式庫。
這個功能僅限於Arduino Leonardo 等32u4晶片的開發板,可用的開發板有 Leonardo, Esplora, Zero, Due , MKR 系列
安裝XInput開發板
首先要安裝XInput開發板,請到這個網址,點選 code > Download ZIP 下載安裝開發板所需的檔案
將下載後的檔案解壓縮,放在C:\Program Files(x86)\Arduino\hardware\xinput\avr
其中xinput\avr這兩個資料夾請自己建立
重新啟動Arduino軟體,在開發板看到Xinput AVR Boards就代表安裝完成
安裝Library
這個Library有收錄在Arduino內的程式庫管理員,打開Arduino的 草稿碼>匯入程式庫>管理程式庫,就可以打開程式庫管理員
搜尋xinput,點選安裝即可
準備好開發板的工作之後,就可以上傳正式的程式碼了,我們下載這個檔案並打開
Racing_Game程式碼
https://create.arduino.cc/editor/kobebeefg/35fd5c81-d149-4a0c-8e2e-4dd8023015c7/preview
修改上面這幾個數值,這幾個數值請改成你剛剛測試時,讀取到的數值。
上傳之前,請先選擇開發板,選擇XInput裡面的板子,我用的是Leonardo開發板,所以選擇Arduino Leonardo w/XInput,就可以上傳了
上傳成功後,理論上就可以在電腦的「藍牙與其他裝置」看到Xbox 360的手把了
注意! 上傳完成後,電腦會判斷Arduino開發板為Xbox手把,如果需要再次上傳程式碼就會出錯,電腦會找不到Arduino開發板。
這時候不用擔心,請在上傳的時候,顯示「上傳中…」的字樣時,立刻按下Arduino上的Reset按鈕,這樣就可以成功上傳了。
(原廠的Arduino板按一次可以Reset,副廠的需要連按兩下)
測試手把的網站
上傳完程式碼之後,要先確認手把是不是正常運作,請到這個網站測試每個方向盤、油門、剎車是否正常。
方向盤控制的是左邊類比搖桿的X軸,油門是右邊板機鍵,剎車則是左邊的板機鍵
測試Xbox手把網站
https://gamepad-tester.com/
當然每一款賽車遊戲控制的方法都有差異,若要調整賽車搖桿分別對應的訊號,可以參考下方的網址,這裡面有較為詳細的解說
XInput程式碼詳細說明
https://www.partsnotincluded.com/how-to-emulate-an-xbox-controller-with-arduino-xinput/
如果你先不想修改程式碼,單純想測試遊戲的話,你可以在Steam找到免費的賽車遊戲RaceRoom Racing Experience,這款遊戲可以直接使用我提供的程式碼。
當然這只是最陽春的塞車搖桿,你可以搭配XInput裡面的各項功能,來自定義各種按鍵,比如說打檔、後視鏡、視角切換等功能。
當然也可以直接使用Arduino來控制LED燈、馬達…等,比如說在你踩油門或煞車時,會改變控制器上的燈光效果,或是踩油門或剎車時會有額外的震動馬達回饋,請發揮自己的創意,製作屬於自己的賽車搖桿吧!
詳細製作過程影片:
Comments