年初就听到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






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,比较旧的,新的版本下可能会有些问题;-)