動態賽車模擬器全方位百科(七)|RC版,非遊戲動態

Created
Apr 29, 2026 9:15 AM
Tags

正在研究其他東西的途中,這篇先把脈絡記下來,之後會再回來修(未完成)

做動態模擬器這一系列,玩到後面總會有個念頭:既然方向盤、油門、煞車訊號都已經能讀出來了,那能不能不要只在螢幕裡開車,而是真的去推動一台「跑在地上」的小車?

這篇不是遊戲、不是模擬器,而是把模擬器的輸入接到一台真實的 RC 車上,讓你坐在駕駛座、手握方向盤,操控的卻是地上跑的實體車輛。

查了一輪國外論壇、YouTube 跟幾個 Maker 專案後,我把整套思路整理成這篇筆記。

整體架構:方向盤 → 電腦 → Arduino → 無線 → 車

網路上能找到的做法雖然零散,但拆到最後幾乎都是同一條鏈路:

方向盤先接到電腦,由一支小程式把搖桿訊號讀出來,轉成簡單的數值;電腦再透過 USB Serial 把這些數值丟給 Arduino;Arduino 端負責把數值翻成馬達 PWM 跟伺服角度,最後由無線模組把控制訊號送到車上的另一塊 Arduino,驅動馬達與轉向。

聽起來層層轉手,但每一層都很單純,單獨除錯也比較容易。

目前已經有人做過的兩種範例

比較接近我想做的是國外一個 FPV RC 玩家的專案。他用 Arduino Micro 把賽車方向盤當成控制器,車上用 L298N 推 DC 馬達、用 nRF24L01 做 2.4G 無線,基本上就是把「玩具遙控器」換成一支真正的方向盤。整體成本不高,但操控感跟一般遙控器差很多。

另一種比較新的做法,是直接拿模擬器方向盤接電腦,用 Python 把方向角、油門、煞車讀出來,再透過序列埠丟給 Arduino。好處是不用自己破解方向盤訊號,DirectInput 已經幫你讀好了,你只要負責翻譯成車子聽得懂的數字。

我自己想走的路線比較偏第二種,因為已經有現成的方向盤跟踏板。

實際要寫的東西其實就三段

第一段是電腦端讀方向盤。把方向角正規化成 -100 到 +100,油門跟煞車各自做成 0 到 100,這樣後面不管接什麼車都好對應。

第二段是把數值丟給 Arduino。用 Serial 就夠了,訊號格式越單純越好,我目前打算用類似 L50R80T70 這種一個字母加數字的短指令,Arduino 解析起來不用做太多字串處理。

第三段是 Arduino 控車。前進靠 PWM 推馬達,轉向就掛一顆 Servo。如果之後想做四驅、差速,再把這段擴出來就好。

車身的標準結構

看了一圈RC 改裝這塊其實沒什麼花樣,都長得差不多:

Arduino 接 L298N,L298N 推 DC 馬達負責前進後退;另一邊 Arduino 接 Servo,Servo 推轉向連桿。電源通常用 7.4V 鋰電,訊號跟動力線盡量分開走,免得 PWM 干擾到無線。

沒什麼神秘的,難的不是接線,是調參數跟抓延遲。

無線主流就兩種:nRF24L01 跟藍牙 / WiFi。

nRF24L01 是最常見的選擇,2.4G、模組便宜、延遲低,室內外都還算穩。缺點是要自己處理封包跟重送,寫起來會比想像中麻煩。

藍牙跟 WiFi 的好處是手機或電腦可以直接發訊號,不用再多買收發模組,但延遲比較不可控,對「即時操控」這種應用其實不太友善。

如果是我自己要做,還是會優先選 nRF24L01。

很多人忽略的一個問題是距離。便宜版的無線模組標稱動輒一百公尺,實際在室內可能兩三公尺就開始掉封包,尤其當天線是 PCB 印刷那種、又被金屬車殼擋住的時候。

所以如果預算抓得太緊,失敗率會很高。寧可在天線跟模組這塊多花一點,也不要省到後面整車失控。

另一個坑是延遲累積。方向盤 → 電腦 → Arduino → 無線 → 車,每一段都有自己的延遲,加起來如果超過一百毫秒,就會開始覺得車子不聽話。所以序列埠的 baud rate、無線封包的長度、Arduino 端的迴圈時間,都要一起調。

如果你也想動手,大概的順序先把方向盤接上電腦,確認軟體讀得到三軸訊號;接著寫一支最小的程式把數值丟到 Arduino,讓板子上的 LED 或一顆小 Servo 會跟著動,證明鏈路是通的;之後再把 L298N、馬達、Servo 一個一個加上去;最後才把無線模組塞進來,把實體鏈路斷開、改成空中傳。

一次只動一個變數,出問題才知道是哪一段壞掉。這套順序我自己跑過幾次硬體專案後,覺得比一開始就把全部接好再 debug 省力非常多。