相信有玩 Microsoft Flight Simulator ( MSFS2020 )的朋友都會留意到近月來虛擬天空上捲起一遍直升機熱,皆因最近有團隊開發了 Airbus H135 直升機,上星期更推出正式版本 1.1 。本來直升機操控比定翼機複雜,最理想是有齊一套飛行搖杆、油閥和腳踏,不過香港地地方淺窄,投資一套飛行裝備花費不少,很多人都只是用 Xbox 手掣來享受飛行樂趣,但將總距杆指派到「冬菇掣」又會少了視點的操控。其實要動手製作一支迷你牙籤直升機總距杆也只不過花幾十塊錢,不佔地方又可享受直升機飛行的樂趣。
直升機的總距杆( Collective )簡單來說是用來控制旋翼葉槳的角度(攻角)和引擎油門,駕駛時要配合迴旋杆( Cyclic )和腳蹬( Foot Pedal ),才可令直升機穩定升降和懸停在空中。
配件不用 $100
雖然正式的飛行遙桿動輒都要過千元,不過今次我們用 Arduino Leonardo 或 Arduino Micro 來自製的直升機總距杆成本就不需 $100 。大家只要到深水埗鴨寮街的新昌電腦和華輝無線電行就可以買齊所有配件,不過選購時一定要留意只有 Arduino Leonardo 和 Arduino Micro 兩款開發板才可以用來製作 USB 遊戲控制器的,最流行的 Arduino Uno 是不能夠的。這是由於 Arduino Uno USB 控制晶片與微控制器分開,而 Arduino Leonardo 所用的 ATmega 32u4 微控制器就兼備 USB 裝置模組。
- Arduino Leonardo 或 Arduino Micro 1 塊
- 50k 或 100k Ohm 電位器(可變電阻) 1 個
- 杜邦線(公-公) 3 條
- 迷你麵包板 1 塊
- 牙籤 1 支
電路圖
製作直升機總距杆的線路非常簡單,只要將 5V 和 GND 接在電位器兩端,電位器中間的電極接到 A0 (或任何可讀取模擬信號的針位)就完成接駁,超級簡單。
如果你在稍後調校操縱角度時發現上下角度所讀到的數值大小倒轉的話,只要對調 5V 和 GND 兩條線即可。
製作說明
要令 Arduino Leonardo / Micro 變成 USB 遊戲控制器,需要由 MHeironimus 開發的 Arduino Joystick Library ,但這個函式庫沒有登錄到 Arduino 的官方 Library Manager ,所以大家要下載「 Source Code (zip) 」檔案,並將它匯入 Arduino IDE ,就能順利將程式編譯上載到 Arduino 開發板。撰文時 Arduino Joystick Library 的版本為 2.0.7 。
- 將 Arduino Leonardo / Micro 以 micro USB 線連接到電腦,開啟 Arduino IDE ,確認「 Tools > Board 」選擇了你所選用的開發板,並選擇正確連接埠;
- 以 Arduino IDE 開啟 Collective/Collective.ino 檔案
- 在 Arduino IDE 的主選單中選「 Sketch > Include Library > Add .ZIP Library 」,然後選擇下載回來的「 ArduinoJoystickLibrary-2.0.7.zip 」檔案將它匯入。
- 按工具列左上角的「 Verify 」鍵來檢查程式有沒有問題,或者直接按旁邊的「 Upload 」鍵將它上載到 Arduino Leonardo / Micro 。
調校操縱角度
完成編譯和上載後,基本上已可以在 MSFS2020 裡使用這支牙籤總距杆,不過由於電位器的旋轉角度約有 280º ,用起來會較不就手,縮減一下電位器的可用旋轉範圍會較好用(當然這會減低總距杆的精度,但旋轉 60º 基本上仍是夠用的)。
- 修改程式第 10 行,設定為
ture
以輸出電位器讀數,然後將程式編譯上載到開發板。
- 在連接著 Arduino Leonardo / Micro 時,開啟 Arduino IDE 的「 Tools > Serial Monitor 」,將電位器扭到你覺得適合的起始角度(總距杆最低的位置),抄下 Serial Monitor 左邊欄位的讀數(本例中是 336 )。
- 接著扭到結束角度(總距杆最高的位置),抄下 Serial Monitor 左邊欄位的讀數(本例中是 500 )。如果你發覺起始角度和結束角度讀數大小倒轉了的話,只要將電位器的 5V 和 GND 線對調再測量便可以解決。
- 修改程式第 7 行,以抄下的讀數取代 0 和 1023 兩個數值。
- 將程式編譯上載到開發板,測試一下效果。
- 滿意操縱角度的話就可以將第 10 行設回
false
再編譯上傳到開發板就完成。
將牙籤總距杆加到 MSFS2020
大家只要登入 MSFS2020 ,按「 Options > Controls 」就可以發現多了「 Arduino Leonardo / Micro 」這個控制器,接著就要將完成的牙籤總距杆綁定到「 Throttle Axis (油閥軸)」即可使用。
- 在左邊「 Search 」欄位輸入
throttle axis
,並在中間欄點擊中間的灰格;
- 點擊介面最頂一欄,然後扭動牙籤總距杆, MSFS2020 就會自動讀取到牙籤總距杆是「 Joystick Slider X 」。按「 VALIDATE 」確認設定;
- 設定任意名字來建立新控制器 Profile ,按 OK 完成設定;
- 可以扭動一下牙籤總距杆看看 Throttle Axis 的白條有沒有移動。如果發覺扭動方向相反了的話,可以勾選左邊的「 REVERSE AXIS 」倒轉操控。測試完成後按「 F11 」即可儲存設定。
就這樣,牙籤總距杆就完成。如果你想提升這支總距杆的精度,就要用 1:6 齒輪組來扭動電位器,以用盡電位器的整個行程。
另外要提一提初次在 MSFS2020 駕駛直升機的朋友,由於 MSFS2020 還未正式支援直式機(官方計劃 2022 年正式支援),現在的直升機仍然有一些問題,如果設定飛行計劃時直接在跑道起飛,預設會自動將直升機設定成起飛狀態,有機會出現操控混亂。建議大家揀選機場的小型機停機位以「 Cold & Dark 」的狀態來啟動直升機。
有關如何安裝 MSFS2020 的 Add-On ,請參考以下文章: