“Nintendo WavePhoenix 是一套完全開(kāi)源、從零復(fù)刻任天堂 WaveBird 無(wú)線手柄接收器的項(xiàng)目,目標(biāo)是用極低成本讓市面上大量「只剩手柄、丟了接收器」的 WaveBird 重新滿血復(fù)活。”
概覽原版 WaveBird(2002 年上市)被公認(rèn)為 GameCube 時(shí)代最佳無(wú)線手柄之一:– 2.4 GHz RF 無(wú)線,無(wú)紅外“對(duì)射”限制,官方 6 m、實(shí)測(cè) 20 m+ 穩(wěn)定;
– 續(xù)航極長(zhǎng)(2×AA 電池可達(dá) 100 小時(shí));
遺憾的是,任天堂在十多年前就停止了 WaveBird 的生產(chǎn),導(dǎo)致控制器,尤其是其接收器的存量日益減少,原裝接收器價(jià)格已被炒到 50–80 USD。
WavePhoenix是一套 “5 美元 DIY 復(fù)活 WaveBird” 的開(kāi)源方案,把 20 年前的射頻協(xié)議搬到現(xiàn)代芯片上,讓老手柄再戰(zhàn) 10 年。以下是 WavePhoenix 的核心亮點(diǎn):
|
維度 |
說(shuō)明 |
| 協(xié)議實(shí)現(xiàn) | 完整逆向并重寫(xiě)了 WaveBird 私有協(xié)議(15-chip DSSS + BCH 糾錯(cuò)),兼容原裝手柄。 |
| 芯片平臺(tái) | Silicon Labs EFR32BG22(Wireless Gecko SoC),淘寶/得捷 3–4 USD 就能買(mǎi)到。 |
| 硬件方案 | 開(kāi)源 PCB(KiCad/Gerber),1/3 原廠接收器體積; |
| 功能特性 | 虛擬配對(duì):手柄 X+Y 即可自動(dòng)掃描 16 個(gè)頻道,不再需要撥輪; |
| 成本 | 物料 BOM < 5 USD;全套開(kāi)源,可自己下單打板或購(gòu)買(mǎi)社區(qū)成品。 |
項(xiàng)目倉(cāng)庫(kù):
https://github.com/loopj/wavephoenix
硬件
WavePhoenix 迷你接收器是一款小巧、低成本的 WaveBird 手柄接收器替代品。其設(shè)計(jì)目標(biāo)是盡可能降低成本(零件成本約4美元)并簡(jiǎn)化制作過(guò)程。
該接收器使用了一款價(jià)格低廉的現(xiàn)成無(wú)線模塊(RF-BM-BG22C3),您可以手動(dòng)飛線連接,也可以將其焊接到定制的PCB上。

特性
-
完全兼容原版無(wú)線“Wavebird”手柄
-
像現(xiàn)代無(wú)線設(shè)備一樣的單鍵虛擬配對(duì)功能
-
狀態(tài)LED燈,用于指示配對(duì)狀態(tài)和無(wú)線活動(dòng)
-
通過(guò)藍(lán)牙進(jìn)行固件的空中下載(OTA)更新
-
開(kāi)源的硬件和固件
-
提供3D打印外殼文件
制作指南
所需元件
-
裝配完的 PCBA - (參見(jiàn)PCB部分)
-
3D打印外殼 - (參見(jiàn)外殼部分)
-
GameCube公頭連接器
-
帶預(yù)壓端子線的JST-SH 4針連接器
-
1.5mm PMMA光纖線或直徑1.5mm x 4mm的導(dǎo)光管
-
壓線鉗或電烙鐵(取決于您使用的連接器類(lèi)型)
組裝步驟
-
制作 JST-SH 轉(zhuǎn) GameCube 連接器線纜-(參見(jiàn)線纜部分)
-
刷寫(xiě)固件- (參見(jiàn)首次刷寫(xiě)固件部分)
-
將GameCube連接器插入外殼,直到聽(tīng)到“咔”的一聲卡入到位。
-
將JST-SH連接器連接到PCB上。
-
將PCB插入外殼,確保LED和開(kāi)關(guān)與外殼上的孔對(duì)齊,它應(yīng)該會(huì)“咔”的一聲卡入到位。
-
將導(dǎo)光管插入外殼前部的小孔中。如果使用PMMA光纖作為導(dǎo)光管,請(qǐng)先將其剪裁至合適尺寸(4mm)。
-
將3D打印的按鈕插入外殼前部的大孔中。
-
將外殼的前蓋和后蓋合上。
PCB (印刷電路板)
WavePhoenix 迷你接收器 PCB 是一個(gè)簡(jiǎn)單的轉(zhuǎn)接板,用于承載 RF-BM-BG22C3 模塊、一個(gè)輕觸開(kāi)關(guān)、一個(gè)狀態(tài)LED以及一個(gè)用于連接GameCube手柄端口的連接器。
物料清單 (BOM)
-
1x RF-BM-BG22C3 模塊
-
1x 0805 綠色 LED
-
1x 5x5mm 輕觸開(kāi)關(guān)
-
1x 4針 JST-SH 連接器
-
1x 0402 100Ω 電阻 (可根據(jù)需要調(diào)整)
-
1x 0402 10uF 電容
-
1x 0402 0.1uF 電容
手工焊接
所有元件都應(yīng)該可以手工焊接,最小的元件是 0402 封裝的電容和電阻。如果您覺(jué)得焊接電容有困難,可以省略它們,但建議還是焊上。 我建議使用放大設(shè)備,并首先焊接 RF-BM-BG22C3 模塊,因?yàn)橐坏╇娙莺负煤?,模塊就很難焊接了。
外殼
接收器的3D打印外殼文件可以在case目錄下找到。該外殼設(shè)計(jì)用于容納組裝好的PCB,并為GameCube連接器預(yù)留了插槽。 建議按以下方向打印各個(gè)部件:

線纜
雖然我們使用的是 4 針的 JST-SH 連接器,但接收器實(shí)際上只需要 3 根線。在下面的照片中,黑線是地線,紅線是電源線,藍(lán)線是數(shù)據(jù)線。然而,預(yù)制JST線纜的顏色差異很大,所以請(qǐng)務(wù)必核對(duì)引腳定義,不要依賴(lài)照片中的線纜顏色。
JST-SH 連接器上的引腳 1 由連接器外殼上的一個(gè)小三角標(biāo)記指示。在我下面的照片中,我移除了 JST-SH 連接器引腳 4 上未使用的線,但如果您愿意,也可以保留它。
首先,將 JST-SH 連接器線纜的電線剪短至 30 mm:

剝?nèi)ゾ€頭約 1mm 的絕緣層,然后將電線壓接到 GameCube 連接器的針腳上。

將壓接好的針腳按以下位置插入GameCube連接器外殼:

每個(gè)針腳上的“翅膀”應(yīng)朝向插頭的中心,針腳應(yīng)一直插入直到聽(tīng)到“咔”的一聲卡入到位。
接下來(lái),我們需要剪掉并銼平 GameCube 金屬外殼上的線纜固定片:

最后,我們可以將塑料連接器插入金屬外殼中:

完成后的組件應(yīng)如下所示:

首次刷寫(xiě)固件
注意
一旦您刷寫(xiě)了引導(dǎo)加載程序(bootloader),之后就可以使用藍(lán)牙 OTA 更新來(lái)刷寫(xiě)未來(lái)的固件更新了!
WavePhoenix 接收器上運(yùn)行著兩個(gè)軟件:引導(dǎo)加載程序(bootloader)和應(yīng)用程序固件(application firmware)。引導(dǎo)加載程序允許我們通過(guò)藍(lán)牙刷寫(xiě)未來(lái)的應(yīng)用程序更新,而應(yīng)用程序固件是處理 Wavebird 手柄通信的程序。
您可以在這里(https://github.com/loopj/wavephoenix/releases/latest)找到最新的引導(dǎo)加載程序和固件。迷你接收器需要使用固件的rf-bm-bg22c3版本。
首次刷寫(xiě)固件需要一個(gè)調(diào)試探針(debug probe)和一些特殊軟件。如果您的WavePhoenix板已經(jīng)刷寫(xiě)了引導(dǎo)加載程序,可以跳過(guò)這一部分。
調(diào)試探針
您需要一個(gè) SWD 調(diào)試探針來(lái)將初始固件刷寫(xiě)到接收器上。調(diào)試探針連接到接收器的 SWD 引腳,讓您可以使用 OpenOCD 來(lái)刷寫(xiě)固件。 如果您還沒(méi)有支持 SWD 的調(diào)試探針,可以用一個(gè)樹(shù)莓派 Pico 來(lái)制作。關(guān)于如何使用樹(shù)莓派 Pico 制作調(diào)試探針的說(shuō)明可以在附錄中找到。
引腳定義
如果您要刷寫(xiě)的是已組裝好的迷你接收器板,SWD 引腳有兩個(gè)位置可以連接:板子背面的焊盤(pán),以及通過(guò) 4 針的 JST-SH 連接器。

JST-SH連接器的引腳定義如下:

OpenOCD
要刷寫(xiě)固件,您需要安裝 Arduino 的 OpenOCD 分支版本,該版本增加了對(duì) EFR32 Series 2 SoC 的支持。 預(yù)編譯的二進(jìn)制文件適用于Windows、macOS和Linux。 該分支的源代碼可在GitHub上找到(https://github.com/facchinm/OpenOCD/tree/arduino-0.12.0-rtx5)。
刷寫(xiě)步驟
安裝好 OpenOCD 后,您可以使用以下命令來(lái)刷寫(xiě)引導(dǎo)加載程序和應(yīng)用程序固件:
擦除設(shè)備
首先我們需要進(jìn)行一次完整的設(shè)備擦除:
# Linux / macOSopenocd-f"interface/cmsis-dap.cfg"-f"target/efm32s2.cfg"-c"init; efm32s2_dci_device_erase; shutdown"
# Windows (PowerShell)openocd.exe-f"interfacecmsis-dap.cfg"-f"targetefm32s2.cfg"-c"init; efm32s2_dci_device_erase; shutdown"
重要提示
在進(jìn)行下一步之前,請(qǐng)斷開(kāi)調(diào)試探針與接收器的連接,然后再重新連接。
刷寫(xiě)引導(dǎo)加載程序 (bootloader)
然后我們可以刷寫(xiě)引導(dǎo)加載程序:
# Linux / macOSopenocd-f"interface/cmsis-dap.cfg"-c"transport select swd"-f"target/efm32s2.cfg"-c"init; halt; flash write_image erase bootloader.hex; exit"
# Windows (PowerShell)openocd.exe-f"interfacecmsis-dap.cfg"`-c"transport select swd"`-f"targetefm32s2.cfg"`-c"init; halt; flash write_image erase bootloader.hex; exit"
提示
從現(xiàn)在開(kāi)始,您就可以使用藍(lán)牙 OTA 更新來(lái)刷寫(xiě)新的應(yīng)用程序固件了!
刷寫(xiě)應(yīng)用程序
既然設(shè)備已經(jīng)連接好了,我們也可以用 SWD 來(lái)刷寫(xiě)接收器應(yīng)用程序:
# Linux / macOSopenocd -f interface/cmsis-dap.cfg-c"transport select swd"-f target/efm32s2.cfg-c"init; halt; flash write_image erase receiver.hex; exit"
# Windowsopenocd.exe-finterfacecmsis-dap.cfg `-c"transport select swd"`-ftargetefm32s2.cfg `-c"init; halt; flash write_image erase receiver.hex; exit"
現(xiàn)在您應(yīng)該擁有一個(gè)功能齊全的 WavePhoenix 接收器了!
使用方法
配對(duì)
WavePhoenix接收器使用“虛擬配對(duì)”,而非原版“波鳥(niǎo)”手柄的頻道滾輪。要開(kāi)始配對(duì),請(qǐng)按一下接收器上的配對(duì)按鈕。板載LED將開(kāi)始閃爍,表示接收器已進(jìn)入配對(duì)模式。在“波鳥(niǎo)”手柄上按住X + Y鍵即可與接收器配對(duì)。配對(duì)成功后,LED將停止閃爍并保持常亮。
進(jìn)入引導(dǎo)加載模式 (Bootloader Mode)
您可以通過(guò)兩種方式進(jìn)入用于OTA更新的引導(dǎo)加載模式:
-
按住配對(duì)按鈕超過(guò)3秒,直到LED熄滅。
-
在插入接收器時(shí)按住配對(duì)按鈕。
升級(jí)固件
您總能在 GitHub 的latest release頁(yè)面找到最新的接收器固件。固件提供兩種格式:用于OTA更新的.gbl文件,以及用于通過(guò)SWD刷寫(xiě)的.hex文件。
迷你接收器使用rf-bm-bg22c3版本的固件,這是專(zhuān)門(mén)為 RF-BM-BG22C3 模塊設(shè)計(jì)的。
使用 WavePhoenix 網(wǎng)頁(yè)應(yīng)用
如果您的電腦有藍(lán)牙功能或您有安卓手機(jī),可以在谷歌Chrome瀏覽器中使用WavePhoenix 網(wǎng)頁(yè)應(yīng)用來(lái)刷寫(xiě)固件。
使用 WavePhoenix 命令行工具
如果您的電腦有藍(lán)牙功能,也可以使用WavePhoenix 命令行工具來(lái)刷寫(xiě)固件:
wavephoenixflash firmware.gbl
使用 Simplicity Connect 應(yīng)用
另一個(gè)選擇是使用Simplicity Connect 移動(dòng)應(yīng)用來(lái)刷寫(xiě)固件。
通過(guò)SWD刷寫(xiě)
您也隨時(shí)可以像首次刷寫(xiě)固件部分描述的那樣,使用SWD來(lái)重新刷寫(xiě)固件。
附錄
Pi Pico 調(diào)試探針
如果您有樹(shù)莓派Pico,可以將其用作調(diào)試探針來(lái)刷寫(xiě) WavePhoenix 固件。Pico是一款低成本(約4美元)的微控制器板,可以與OpenOCD配合用作調(diào)試探針。
從Raspberry Pi Debug Probe 倉(cāng)庫(kù)下載最新的debugprobe_on_pico.uf2文件,然后將該文件拖放到Pico的USB驅(qū)動(dòng)器中來(lái)刷寫(xiě)。刷寫(xiě)固件后,Pico就可以作為調(diào)試探針與OpenOCD一起使用了。
以下是用于SWD編程的引腳定義:
?-
射頻
+關(guān)注
關(guān)注
106文章
6006瀏覽量
173456 -
PCB設(shè)計(jì)
+關(guān)注
關(guān)注
396文章
4920瀏覽量
95233 -
任天堂
+關(guān)注
關(guān)注
0文章
227瀏覽量
19814 -
開(kāi)源
+關(guān)注
關(guān)注
3文章
4203瀏覽量
46125
發(fā)布評(píng)論請(qǐng)先 登錄
MAX77950:WPC/PMA雙模無(wú)線電源接收器的卓越之選
深入剖析SNx5LVDx3xx高速差分線路接收器
STWLC89:30W無(wú)線功率接收器的技術(shù)解析
STWLC38JRM:高效15W無(wú)線充電接收器的卓越之選
基于芯嶺技術(shù)XL2417D和XL2417U芯片的2.4G無(wú)線鍵鼠解決方案
SNx5LVDx3xx 高速差分線路接收器:設(shè)計(jì)與應(yīng)用全解析
深入解析SNx5LVDx3xx系列高速差分線路接收器
SNx5LVDS3xxxx高速差分線路接收器:設(shè)計(jì)與應(yīng)用指南
MAX207:5V多通道RS - 232線路驅(qū)動(dòng)器/接收器的全面解析
TPD12S520:HDMI 接收器端口的理想保護(hù)與接口解決方案
?STWLC99 100W無(wú)線電源接收器技術(shù)解析與應(yīng)用展望
GPS 接收器 IC skyworksinc
藍(lán)牙接收器SRRC認(rèn)證流程解析
LE 發(fā)射器和接收器測(cè)試返回錯(cuò)誤結(jié)果是什么原因?qū)е碌模?/a>
+5V供電的RS-232發(fā)射器/接收器HIN232數(shù)據(jù)手冊(cè)
WavePhoenix:從零復(fù)刻任天堂 WaveBird 無(wú)線手柄接收器 5美元DIY復(fù)活WaveBird開(kāi)源方案
評(píng)論