自製Wii Remote控制器的紅外線發射器(使用USB接頭)

自製Wii Remote控制器的紅外線發射器(使用USB接頭)
文∕趙英傑

Wii遊戲機的特色莫過於集結「動作(加速)」與紅外線感應於一身的藍芽控制器——Wii Remote。Wii Remote前端有個紅外線CMOS感測器,搭配連結Wii主機的"Sensor Bar"(直譯為「感應器」,但其實它是紅外線發射器),即可感測控制器的座標位置。

這小小一支控制器集合了多個國家、不同公司的研發成果。下圖是美國Fortune(財星)雜誌所刊載的Wii Remote內部照片,以及各個零組件的研發∕製造廠商與估計成本(參閱:An Inside Look At The Wii’s Magic Wand)。其中的藍芽控制晶片(Broadcom 2042)由Broadcomm研發、台積電代工生產,此藍芽晶片的核心是八位元的Intel 8051單晶片。不知道為什麼,這篇文章遺漏了由台灣原相科技研發的CMOS感測器。關於此控制器的詳細技術分析,請參閱WiiLi.org網站的Wiimote文章

Wii Remote內部構造

令我感到訝異的是,控制器裡的記憶體晶片竟然是在義大利米蘭(Milan)研發製造的。現在台灣的記憶體晶片大廠的股價普遍低迷,怎麼不交給台灣研發生產?不僅價格低廉且品質優秀 :-)

個人電腦上的藍芽無線通訊模組可以和Wii Remote控制器連結。在配對時,電腦上要選擇藍芽的「滑鼠、鍵盤和搖桿」類別,並按著Wii Remote控制器上的1和2鈕,或者電池盒下方的紅色同步(Sync)鈕不放,即可配對成功。下圖是在我的電腦上呈現的藍芽裝置搜尋畫面,控制器的名字是"Nintendo RVL-CNT-01"(註:Mac OS X和Linux系統的驅動程式,請參閱WiiLi.org的這個網頁說明)。

搜尋Wii Remote藍芽無線裝置

藍芽連線成功後,即可使用一位日本人設計的 "WiinRemote" 軟體,讀取Wii Remote控制器的電量、動作感測器(Motion Senor)、紅外線感測器(IR Sensor)和左手控制器(Nunchuk)的參數值。而且,只要按下操作畫面右下角的Enable Cursor(啟用游標)鈕,就能把Wii Renote控制器當成無線滑鼠使用。其操作畫面如下:

WiinRemote軟體

為了讓Wii Remote控制器能在電腦上像操作Wii一樣方便,最好在電腦上加裝紅外線發射器,讓Wii Remote判斷搖桿的座標位置(註:上圖的IR Sensor窗格裡的1和2白點,就是紅外線發射器的位置)。

底下是紅外線發射器的電路圖(參考卡內基美隆大學Johnny Chung Lee教授的這個電路)。我使用電腦的USB供電,USB插頭是從舊的滑鼠剪下來的,除此之外,兩個紅外線發射二極體和電阻,加起來的成本大約新台幣25元,非常便宜。

紅外線發射器的電路圖

USB的電源為5伏特,電路中的電阻值可採用介於40~70歐姆之間(我用的是47歐姆);如果要使用外部的3伏特電池盒供電,請使用介於15~30歐姆之間的電阻值。若嫌自製電路太麻煩,也可以直接在電腦旁邊點兩個蠟燭充當紅外線光源…不過這樣的氣氛可能蠻詭異的。

因為電路很簡單,所以不需要使用電路板,可直接用電線把全部零件焊接在一起:

焊接紅外線二極體

焊接完畢後,我用一根筷子和膠帶將它們固定好。雖然完成品的外觀粗製濫造,但是可以快速完成並測試。

Wii Remote和紅外線發射器

我們肉眼看不到紅外線,檢驗電路是否有正常運作的最簡單方法,是把數位相機或攝影機的鏡頭對準紅外線二極體,由於攝影機的CCD和CMOS感測器的光譜涵蓋紅外線,因此我們可以透過它觀察到紅外線二極體所發射出的光線。

最後,選擇WiinRemote軟體的Options(選項)→Preferences(偏好設定)指令,並勾選左上角Cursor(游標)窗格裡的IR Sensor(紅外線感測器)選項,Wii控制器就能透過自製的紅外線發射器來感應座標了。

偏好設定

自製Wii Remote控制器的紅外線發射器(使用USB接頭)” 有 26 則回應:

  1. 哈囉~大大請問一下
    那個紅外線發射二極體有限定用什麼樣的規格嗎?
    還是都OK?
    謝謝!!

  2. exploer

    您好:
    我对Wii Remote控制器 不熟悉,请问它是怎么实现三维坐标检测的啊?可以具体帮我解释一下吗?

  3. Wii Remote前端包含一个1024 x 768分辨率(解析度)的CMOS红外线摄像头。

    不妨把这摄像头想像成人眼,Wii的红外线发射器想像成道路两旁的路灯。当你站在路中央走近路灯时,两旁的路灯会朝你的水平方向拉远;相反地,当你退後时,路灯将会朝你的水平中心拉近。因此,藉由判断两旁灯号的距离,就能得知Wii Remote是朝前或向後移动了。

    此外,Wii Remote内部含具有一个3轴的8位元加速感测器(accelerometer),也可以感应用户在三维空间的运动。

    相关的说明可叁阅纽约时报的这篇报道:At the Heart of the Wii, Micron-Size Machines,以及X-Arcade网站的 How The Wii™ Game Controller Works这篇文章。

  4. Pingback: heViews » Blog Archive » 传播和发明:如果没人知道,它还是发明吗?

  5. Max

    我的Wii Remote已連線 (bluetooth),但是執行WiinRemote卻沒動靜,Battery 0%,Motion Sensor X-Y-Z三軸沒動靜,一直停在最上方一直線,請問可能是什麼原因,Motion Sensor難道不是利用bluetooth偵測動作嗎

  6. Max

    我想應該說是G-sensor感應動作後,利用bluetooth傳送資訊是嗎

  7. 除了感應X, Y軸座標需要額外的紅外線發射裝置之外,所有資訊(動作、按鈕、聲音…)都是透過藍芽傳輸,但並非所有藍芽驅動程式都能支援Wii Remote。

    如果你的藍芽驅動程式不是BlueSolei,可以替換安裝看看。

  8. 根據網站上的說明,應該要先下載Hardware Check tool,看看硬體裝置是否支援BlueSolei 6,如果可以,再下載安裝BlueSolei 6(第一個連結)。

    good luck!
    jeffrey

  9. 不物正業的電子科畢業生 ...

    您真的太強嘍 ….
    看的小弟也想去買丟掉很久的烙鐵回來DIY …

  10. 好天真

    請問一下~看你的文章,好像是裝了紅外線發射器,就能讓remote定位
    那不拿原本wii的感應棒來用,是因為會和wii衝突嗎?

    如果是的話,是否去買市面上的wii用無線感應棒,就能做到同樣效果了?
    因為我不會悍接,想找現成的來用:grin:

  11. 因為wii的紅外線發射器接頭是特殊規格,再加上拔來拔去有點麻煩,所以不如自己做一個。

    可以用現成的紅外線發射器,其實只要有兩個紅外線光源就可以了,如果拿兩個遙控器,在控制器面前隨便按著一個按鍵,也能讓Wii remote定位。

  12. 老人

    請問…

    我買的紅外線LED是透明的…

    跟你的好像不太一樣耶

    會有很大的差別嗎??

    還有 如果要裝4個或8個的LED

    電阻應該要怎麼裝

    裝幾歐姆的呢@@?

  13. 1. 沒有差別。
    2. 電阻數量和LED數量相同,電阻值也相同,像內文的電路圖一樣,直接併接在電源的正、負極。

    have fun!
    jeffrey

  14. johnta

    請問LED筆除了控制左鍵外 還可以做控制右鍵的動作嗎

  15. 有一陣子沒有用了,我記得預設的Home鍵就是右鍵,WiinRemote軟體的設定畫面中,右上角的Assign(指定)下拉式選單,也可以讓你把某個按鍵設定成滑鼠右鍵。

    have fun!
    jeffrey

  16. san

    最近想用廢棄物來做,家中有兩個壞的電視遙控器,不知是否可行?不過電阻不知要去哪裡找……

  17. 電子材料行就買得到,大概三個或四個一元,很便宜。
    或者,用兩個1.5v電池串聯成3v供電,那就不需要電阻了。

    have fun!
    jeffrey

  18. 不行,那電阻值太高;也不需要使用航空電阻那種高檔貨。一般電子材料行賣的電阻,3或4個才賣新台幣一元。

    have fun!
    jeffrey

  19. x-egg

    大大, 我用的是無線的紅外線感應器,一個賣200元上下的那種,但顯示在電腦上的游標卻晃得很厲害, 有無解決方法?

    • 我不確定你指的紅外線感應器是哪一種,不過,Wii搖桿定位需要的是紅外線「發射器」喔~

      have fun!
      jeffrey

    • 拍謝,我還沒在Windows 7上試過。

      thanks,
      jeffrey

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">