DIY 藍牙搖桿:用 ESP32 D1 R32 打造一支真正無線的遊戲控制器(系列首部曲)

本文是「打造一台無線遙控車」系列的第一篇。在動手做遙控車之前,我們需要先有一支可靠的無線搖桿——這篇就是從零開始,教你怎麼把市售的搖桿擴展板,改造成一支真正用藍牙連線的控制器。

📂 完整韌體原始碼已公開於 GitHub:ai-e2d/JoyStick

前言

如果你曾經買過 Arduino 的搖桿擴展板(Joystick Shield),應該知道它原本是設計給有線的 UNO 板用的。但當我們想把它升級成無線控制器,搭配 ESP32 D1 R32 Type-C 開發板 使用時,卻會遇到一個很多人踩過的坑:搖桿一接上去,藍牙就不能用了

遊戲搖桿擴展板原始外觀

這篇文章會帶你一步步解決這個問題,最後做出一支可以直接被手機、電腦、模擬器當成「藍牙遊戲控制器」辨識的搖桿——而這支搖桿,正是下一篇「無線遙控車」的核心控制裝置。

為什麼搖桿一接上去,藍牙就壞了?

遊戲搖桿擴展板 的類比搖桿,原始設計是接在 A0(X 軸)、A1(Y 軸)。如果直接套用在 ESP32 D1 R32 上,這兩隻腳剛好對應到 IO-02、IO-04

ESP32 D1 R32 腳位圖

問題就出在這裡:ESP32 內部把類比輸入分成兩組硬體——ADC1(GPIO32–39)跟 ADC2(GPIO0、2、4、12–15、25–27)。ADC2 這組硬體,其實是跟無線通訊子系統(Wi-Fi / 藍牙共用同一套 2.4GHz RF 前端)共用資源的。一旦韌體啟用藍牙,RF 子系統就會搶占 ADC2,搖桿的類比訊號自然讀不到、甚至直接卡死。

解法很單純:把搖桿的 X/Y 軸,從 ADC2 改接到 ADC1。

動手改:把 X/Y 軸搬到 GPIO34 / GPIO35

實測把搖桿訊號線從原本的 A0/A1,改焊到 GPIO35(X 軸)、GPIO34(Y 軸)——這兩隻腳都在 ADC1 範圍內,改完之後藍牙跟搖桿類比訊號就能同時穩定運作。

因為這個修改沒辦法靠軟體解決,只能動手改板子,所以我們也推出了「手工改造版 — 遊戲搖桿擴展板」這款商品(與原版併入同一個可變商品頁面,選「手工改造版」規格即可),買了直接是已經處理好 ADC1 接腳的版本,不需要自己拆機焊接。

改接腳位後的搖桿擴展板

材料清單

四大元件平铺:搖桿擴展板、ESP32 D1 R32、18650 電池盒、3D 列印固定座

元件用途購買連結
遊戲搖桿擴展板(手工改造版)類比搖桿 + 7 組按鍵輸入購買選「手工改造版」規格(也可直接選「ESP32藍牙搖桿完整組裝版」規格買現成組好的)
ESP32 D1 R32 Type-C 開發板WiFi + 藍牙雙模主控板,Arduino UNO 腳位相容前往購買
18650 電池盒行動供電,2 節串聯 7.4V前往購買
3D 列印固定座固定底板與電池盒,讓搖桿可以單手握持加入購物車
Subscribe
Notify of
內容索引
0
Would love your thoughts, please comment.x
()
x