2008-11-16

用任天堂Wii Nunchuk雙節棍控制器控制NXT

NXT裡面內建I2C Bus,這使得NXT具有標準工業用的通訊規範,許多有I2C通訊能力的裝置都能跟NXT連接。HiTechnic、Mindsensors及其他第三方開發的感應器都是使用I2C與NXT進行通訊。

Jens Friedrich (網路匿名 t.wolf)在nxtasy.org論壇發表他的計畫,利用I2C連接NXT與任天堂Wii Nunchuk雙節棍控制器。(direct connect Wii Nunchuk over I2C with NXT)

任天堂Wii Nunchuk雙節棍控制器具有良好的搖桿及精密的三軸加速度計,加上售價便宜,取得方便,的確是控制NXT機器人的一個好選擇。

以前已經有許多人發表利用Wii Remote(Wiimote)遙控NXT,但是需要透過藍牙及PC作為傳輸介面。

利用I2C BUS,可以讓Wii Nunchuk雙節棍控制器直接連接在NXT的輸入端,充分利用Wii Nunchuk雙節棍控制器的搖桿及加速度計。

不過仍然有一些技術問題需要改造:

1. Nunchuk使用高速傳輸,為了配合輸出入的電壓,需要在傳輸線之間匹配合適的電阻(pull-up resistor)。

2. 由於時脈速度不同,程式設計時就需要特別注意處理I2C傳輸時的通訊協定。

(我的電子電路學沒念好,如果有誤還請更正,謝謝!看來還需要認真學習I2C

不過Jens Friedrich成功了,也發表所有的技術及細節,更用圖解方式說明如何修改電路。

請參考謝列延伸閱讀文章:

完整圖文解說(nxtasy.org論壇)

關於I2C的NXC程式技術(nxtasy.org論壇)

Read wii nunchuck data into arduino  (關於Arduino)

讓探奇想到的是,既然有方法讓NXT與其他具備I2C BUS的裝置連接,那麼市面上所有大大小小的感測器應該也可以如法炮製,讓NXT有更大的威力!

(RFID是不是也可以如此使用呢?)

最後還是看看人家的示範影片:






2011.08.19更新:nxtasy.org關閉,感謝讀友提供相關PDF下載網址:

http://aaronklapheck.com/Downloads/z_Misc/Electronics/Projects/Finished/Propeller_Wii_Controler/wii_wiring.pdf

3 則留言:

  1. nxtasy.org論壇掛囉,但我找到了論壇的PDF檔。
    http://aaronklapheck.com/Downloads/z_Misc/Electronics/Projects/Finished/Propeller_Wii_Controler/wii_wiring.pdf

    因為我想做一個NXT無線藍芽滑鼠(使用LeJOS) 本來想用兩個超音波當x,y軸,
    但令我無言的是LeJOS取超音波的距離最小單位只有公分(囧) 總不能解析度1024x600的螢幕,
    如果我要從左移到右,還要拿著NXT+兩個超音波(組好的)在桌面上滑個二三十公分吧??(太不實用了)

    後來就發現原來可以利用Wii的雙節棍中的三軸感應器當NXT的感應器,
    深入了解後,發現Jens Friedrich竟然要把雙節棍中的R1和R2電阻拆掉!
    (那雙節棍不就沒保固了嗎?) (拆掉電阻請詳見PDF檔!)

    我想請問有學過電子的老師,他說要把雙節棍中原本串聯"紅->黃" "紅->綠" 的電阻(也就是R1 R2,1.8K)拆掉改成33K的電阻(PDF檔中綠色的接線圖),他的意思就是:
    從"紅到黃"這條線上要有33K的電阻 and 從"紅到綠"這條線上也要有33K的電阻(嗎?)

    如果是,我可以直接這樣加嗎?
    (不用拆掉R1 R2,直接在線上加32K讓總電阻有33.8K) (┬(1.8K)表示兩個雙節棍中原本串連的電阻)
    NXT綠線(4.5v) ----> D1 (1N4148) ----->(這裡加上32K的電阻) ------> ┬(1.8K) --------> ┬(1.8K) ------> 雙節棍紅線(<4.0v)
    這樣可以嗎?

    請問老師,(如果您有在使用Wii的話) 副廠的雙節棍三軸感應器品質好嗎?
    因為原廠的要525元 副廠的只要243元 我是在想說有差到哪裡去嗎? (當然我知道一分錢一分貨)
    期待老師的解惑!
    [版主回覆08/19/2011 22:43:55]你好:

    謝謝你的連結分享。

    我沒有Wii,也沒有用過雙節棍控制器,所以不太清楚原廠與副廠差異。

    電阻部分也沒有仔細研究,剛才看了一下PDF檔,再加上摸索你的敘述,終於瞭解你的意思。

    33Kohm的 電阻是連接在兩條線之間,並不是在單一條線上,所以當然不能使用你的方法。

    電阻並聯更是會降低電阻(請複習一下電阻定律)。

    所以這兩顆R1, R2是一定要拆除的,

    至於新的33K的電阻應該可以不用銲在原來的R1, R2位置,而是直接接在NXT電線端,只是比較難看,體積較大。

    (如果有其他方法不用拆解R1, R2,原作者也不用那麼麻煩了)

    如果擔心保固問題,那就直接買副廠做實驗,壞了也比較OK。

    祝你順利!

    回覆刪除
  2. 我了解了! 謝謝老師詳細的解說! 剛好在Y拍有看到一隻二手的,只要360。想說買來試試,有結果再和老師分享 ^ ^ (我怕副廠的電路板根本沒有R1 R2 電路板不同! 還有副廠的三軸感應器不知道怎麼樣,搞不好就為了省那一兩百而三軸根本不能用! 還是買原廠的好...) 謝謝您!!
    [版主回覆08/20/2011 22:29:17]網拍的二手貨的確也是實驗的好來源,祝你順利成功!

    回覆刪除
  3. 請問老師,您有學過 leJOS 嗎?
    我遇到了一個問題,這邊 http://lejos.sourceforge.net/forum/viewtopic.php?f=6&t=1457&p=13839&hilit=Wii+Nunchuk+Sensor&sid=a7dd4db8fe07a99e6ee83cbec6473ff4#p13839
    這網頁中的兩個程式碼是 leJOS 的,我該如何把他們做連結呢?

    兩個直接加在一起會錯誤,只有一個又不行 是該怎麼做呢?
    [版主回覆08/22/2011 16:40:56]我沒有學過leJOS。一直不瞭解Java。

    程式合併連結需要檢查,建議你可以先看看錯誤訊息再一一解決。

    祝你成功!

    回覆刪除

探奇歡迎大家留言討論!謝謝分享你的意見。