Arduino中国 | Flamingo EDA

Jun/08

15

Arduino WiiChuck 适配器

年初就听到Whale同学在鼓吹Wiimote作为互动工具的种种优势,Wiimote用的蓝牙方式似乎没有那么容易一下子在Arduino上搞定, 但是Wii Nunchuck却的确是可行的。于是便有人把Nunchuck大卸八块,从底层摸清楚了Wii Nunchuck的I2C协议,指明了如何用Arduino读出Wii Nunchuck的数据,着实让大家兴奋了好一阵子,但这种腐败的做法的确让我等望而确步。

相比较之下,这么一个小小的Wii Nunchuck适配器适乎更可爱,不用把你心爱的Wii Nunchuck剪开,就能够完成Arduino与Wii Nunchuck间的通信:

硬件上的连接非常简单,先把WiiChuck适配器插到Wii Nunchuck接口上(注意正反),然后再把WiiChuck插到Arduino的模拟数字接口2,3,4,5上就可以了:

剩下的就是如何写代码了,从技术上讲,Wii Nunchuck是通过I2C协议来与外界进行通信的,Arduino提供了一个Wire库来支持该协议,因此原理上我们可以根据Wii Nunchuck的I2C协议来读取Wii Nunchuck的数据。我参考了网上提供的一些资料,将相应的代码封装在了一个WiiChuck库里,你可以将其下载并解压缩到你的Arduino安装目录下的hardware\libraries里面:

下面是我所使用的wiichuck,将代码编译后下载到Arduino里,就可以在串口监视窗口上看到Wii Nunchuck传回的各种数据,包括摇杆、XYZ三轴加速度、按钮:

至此我们就能够同Wii Nunchuck进行通信了,接下去就要看你如何在作品中释放它的力量了:)

No tags

22 comments

  • Howie · 2008/06/15 at 11:38 AM

    哇~~~~你太强了太强了~~~~那么快就做出来,从模板到试验!!!迫不及待的想玩!!!订购订购~~~~ ^ ^

  • ilovezeno · 2008/06/15 at 1:29 PM

    这个跟todbot的项目设计有区别末?正好设计到一起去了哦?

    老实说这样搞个演示系统的话会比较爽哦

  • Author comment by flamingoeda · 2008/06/15 at 7:33 PM

    我也是一个香港的朋友告诉我todbot的项目,我觉得很好,自己画的电路图的,由于Wii Nunchuck的接口是一样的,所以最后我的设计跟todbot的设计原理上是没有区别的。

  • ilovezeno · 2008/06/15 at 9:49 PM

    不过你搞出来了就省得我自己去对付双面敷铜版了。。。hehe,看来下个月可以去败一个wii左手柄回来,加上arduino。。。这样演示ppt会很拉风很拉风的。。。。

  • Yeung_bt · 2008/06/15 at 11:05 PM

    flamingoeda,
    Don’t know whether you are interested in Xport from Lantronix or not.
    I would be grateful if you can make something about the Xport and teach us. Thanks.

  • ilovezeno · 2008/06/16 at 10:48 AM

    Xport是好东西啊,网络控制。。。。杀人于千里之外。。。。不过有点贵。。。

  • flamingoeda · 2008/06/16 at 11:05 AM

    同意的,我买了一个花了400,不知从HongKong买的话是不是便宜一些,主要是买得要多,才可能便宜。不过40多$的东东,不太可能便宜到哪,谁有好的渠道,团购一把哈:)

  • Yeung_bt · 2008/06/16 at 11:52 PM

    try to get one from Taobao, http://auction1.taobao.com/auction/item_detail-0db2-d5eaf4cc0005b26846cf00a263cec966.jhtml,
    It costs about RMB 350 each. I’m not sure whether they can offer cheaper rate for bulk purchase.

  • Yeung_bt · 2008/06/16 at 11:54 PM

    Sorry, the link does not work. You can search ‘XPORT’ in Taobao. Thanks.

  • ilovezeno · 2008/06/17 at 10:38 AM

    如果有很多设备的话,不如搞台微型电脑拖一群接RF射频的arduino来得省钱。。。。

  • Howie · 2008/06/17 at 8:00 PM

    看来小小的一块东西是大受欢迎阿。。。。

  • mog · 2008/06/17 at 10:02 PM

    鼓掌!

  • Howie · 2008/06/23 at 12:16 AM

    据说你去了工作营。。。羡慕啊·~~~zz`zz~~

  • Jacky · 2008/06/29 at 12:31 AM

    Well done !!
    雖然這方法測量精度不都,但因wii比較出名,用來作示範不錯!
    我也想試一下!哈哈!….

  • Wii左手柄WiiChuck与Arduion的连接 at JerryZheng · 2009/07/31 at 4:33 PM

    [...]     近一个月没玩Wiimote了,这次把手柄翻出来折腾Arduino的连接。       得益于有人拆解Wii的左手柄WiiThuck,弄明白其数据线接口定义,与Arduino的连接就此成了可能。有人据此制作适配器免去了拆解的麻烦即可实现与Arduino之间的通信。国内的FlamingoEDA亦制作了此适配器并于其淘宝店内出售,现已停售。这不,Jerry找到了个简易的解决方法。     图示中四个小孔刚好可以插入面包板连接线,于是便迎刃而解。 [...]

  • 我有我的锋格 · 2009/09/11 at 4:46 PM

    我用了您的那个wiichuck库,发先在0012和0012以上的版本中会出现错误
    类似于
    error: expected unqualified-id before ‘int’

    后来在
    http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1222985221/2
    找到了解决办法,要修改下您的库文件
    将WiiChuck.h里面的

    #include “WConstants.h”

    改成

    #include “WProgram.h”
    之后才能编译成功

  • haibo · 2009/10/15 at 9:05 PM

    看到你的帖子真是太高兴了,我捣鼓了好几天了,都没有成功读到nunchuck 的数据,一开始是搞错接线,国产的nunchuck 真的是不标准,害的我拆改nunchuck 的pcb板来一跟一根对才行。怀疑是我的两个nunchuck 手柄都给我弄坏了,到现在还没有解决问题。

    下载了你做的WiiChuck 库,不过还没有成功,因为下载不了你的wiichuck代码,可能网络连接发生错误了,在此真的是跪求了,谢谢,我的邮箱abo.zhou@gmail.com.

  • haibo · 2009/10/15 at 9:40 PM

    发现是nunchuck_init()出了问题,运行下面这段代码的时候,WiiChuckpower ready\n能提示出来,WiiChuckinit ready\n却提示不出来,咋办?谢谢
    —————-
    Serial.begin(19200);
    nunchuck_setpowerpins();
    Serial.print(“WiiChuckpower ready\n”);
    nunchuck_init(); // send the initilization handshake

    Serial.print(“WiiChuckinit ready\n”);

  • Author comment by flamingoeda · 2009/10/23 at 1:36 PM

    代码现在可以下载了,你下载我的代码试一下;-)

  • leonids · 2010/07/05 at 5:22 PM

    請問一下PS2能否用這個方法做出一個適配器?

  • FLAU · 2010/12/05 at 1:57 PM

    above-linked code not work.
    Then I found the following, it worked ok. I’m happy.
    http://amando-abreu.webs.com/arduinowiinunchuck.htm
    (I used ‘nintendo’ code. No problem.)

  • Author comment by flamingoeda · 2010/12/13 at 9:57 PM

    试验时使用的Arduino版本是0011,比较旧的,新的版本下可能会有些问题;-)

Leave a Reply

使用新浪微博登录

<<

>>

Theme Design by devolux.nh2.me