“WiiChuck” Wii Nunchuck Adapter Available

Want to hook up a Wii Nunchuck to an Arduino but don’t want to cut up the cord on your Nunchuck? Yeah me too. So I made some of these:

wiichuck_adapter1.jpg

wiichuck_adapter2.jpg

It’s a small PCB that adapts the Wii Nunchuck connector to standard 4-pin header. I call it the “wiichuck adapter”. It plugs directly into the Arduino, no wiring necessary. You can get one too for $4.

Available from the following wonderful shops:
FunGizmos.com. FREE DOMESTIC SHIPPING. International shipping for $1 more.
Little Bird Electronics (Australia)
SparkFun. Ships domestic & internationally. Be sure to order header pins too!
– and just about any SparkFun distributor

One of the coolest things about the Wii (to me) is that the expansion port on the bottom of the Wii remote is an I2C serial connection. This means that anything that plugs into that port can work with microcontrollers like the Arduino or Basic Stamp or others. Of the available peripherals, the Wii Nunchuck is one of the best. It contains a 3-axis accelerometer, a 2-axis joystick, and two buttons. Hooking up a Wii Nunchuck to Arduino is easy and I have class notes describing how to do it. But cutting off the connector of the Nunchuck to get at the wires is a little drastic.

This “wiichuck adapter” let’s you play with the Wii Nunchuck and other Wii remote peripherals without needing you to cut cables. Just plug it into the Wii Nunchuck, then into the Arduino, in to Analog In pins 2,3,4,5. Pins 4&5 are the I2C communication pins and Pins 2&3 can act as the power supply for the Nunchuck.

wiichuck-diag.png

This is what it looks like plugged into the Nunchuck by itself.

wiichuck_adapter3.jpg

Nunchuck and Other I2C Devices (like BlinkM)

You can use other I2C devices at the same time as the Nunchuck. The I2C bus allows for multiple devices. For instance, if you have a BlinkM and also want to use a Nunchuck, no problem. The pinout of the BlinkM and the wiichuck adpater are the same. Just solder a little 4-pin socket header to the top of the wiichuck adapter.

wiichuck-header.jpg

And then you can plug in a BlinkM right on top.

wiichuck-blinkm.jpg

Software

To make it a little easier to play with the Nunchuck, I made a little Nunchuck library for Arduino and demo:
nunchuck_funcs.h
WiichuckDemo.ino
(Or better yet, check out the github repository for it all zipped up. Just unzip and open the .ino in Arduino)

It is based off the original research done by Chad Philips of Windmeadow Labs. The library uses the Wiring I2C library called “Wire”. This library is built-in to Arduino, as long as you have the latest Arduino development environment (0010 currently). To see another Arduino sketch using this library, you can check out the BlinkMChuck example that’s part of the BlinkM examples.

The library functions are:
nunchuck_setpowerpins() — power up a nunchuck plugged directly into an Arduino on analog pins 2,3,4,5.
nunchuck_init() — init a nunchuck connected to an Arduino
nunchuck_get_data() — get a data packet from the Nunchuck

Then you can get at the data packet using various helper functions like:
nunchuck_accelx() — get X-axis acceleration
nunchuck_zbutton() — get Z-button state
– …and so on, see the header file for a complete list

Nunchuck Information

Wiimote/Extension Controllers/Nunchuk — info page about the Nunchuck on WiiLi (Linux for Wii) site
“Wiimote Accessory Bus” — docs about the Nunchuck’s connector.

Getting One / How to Order

Available from the following wonderful shops:
FunGizmos.com. International shipping for $1 more.
Tinker.it (UK)
Little Bird Electronics (Australia)

Update 20 Feb 2008: Over 200 wiichuck adapters sold to more than 50 people in 5 countries. I still have some available if anyone wants one. To those who ordered up to now, you’ll be getting them in the post in a few days.
Update 29 Feb 2008: Over 300 wiichuck adapters sold and I still have many more left. Get yours if you want one. :-) Anyone that’s ordered before today should receive their adapters via first class post soon. I’ll be unable to mail out any orders for the first week of March.
Update 24 Mar 2008: I still have several left. If you’re in AU, you can also get the adapter kit from Little Bird Electronics.
Update 11 Apr 2008: Updated the nunchuck_funcs.h library to easily work with a nunchuck plugged directly into an Arduino by adding a nunchuck_init_with_power() function (see comments below). Also, I still have several adapter kits for sale.
Update 6 May 2008: All Out! But I’ll be doing another board run in a few days and will update here when I have more available.
Update 8 Jun 2008: FunGizmos.com is now carrying Wiichuck adapters! They also have lots of other cool things, like BlinkMs. :-)
Update 7 Jan 2009: Both FunGizmos.com (US) and Tinker.It(UK) carry the Wiichuck adapter.
Update 31 Mar 2009: Fixed small bug that made it not compile under more recent Arduino, and fixed links. Also: if you’re having problems getting this to work, in the Arduino software, go to the “Boards” menu, switch to a different Arduino board type, compile, then switch back to your type. This forces a recompile of the Arduino I2C/TWI library that sometimes doesn’t get compiled correctly.
Update 18 Feb 2010: Updated API description to note that “nunchuck_init_with_power()” was removed in favor of “nunchuck_setpowerpins(); nunchuck_init();”.
Update 6 Dec 2011: Updated to work with Arduino 1.0 (still works with Arudino 0023 too). Changed download links to github repository.

299 Replies to ““WiiChuck” Wii Nunchuck Adapter Available”

  1. Hey Todbot thanks for sharing. :-)
    Do you think it’s possible to code the Arduino to store the data and than play it back at the exact same rate again and again? I’m trying to control a camera and record the movement – and than repeat it.

  2. hey, i use the livrary you suggest and it and i have an error in “nunchuck_setpowerpins()” was not declared in this scope, any sguestions??

  3. Todbot

    I am looking for input on conecting my nunchuk to my Arduino Uno R3. For something that a lot of people are getting to work and seems so strait forward, I am having difficulty with it. I have searched the net and started with Arduino 1.0 and Gabriel Bianconis library, when that didn’t work I went back to Arduino 0023 and tried your sketch. I get the same results. So it must be something I am doing wrong.

    Printing data to com port:
    I am using a wiichuk adapter, – to grnd, + to 3.3v, d to A4, and c to A5. When I upload the sketch nothing happens, if I unplug the nunchuk i get a tx light and serial communication but only defult data, with Gabriels library I get defult data (he says indicatds miss-wire, but confirmed my wireing was correct) with your library I get labels such as zbutton but no data behind it.
    When the nunchuk is pluged in I get no Tx or Rx leds flashing, I have tried trouble shooting but with so few parts to swap out I’m looking for input and suggestions.

    Thanks
    Chris

  4. Hi Brandon,
    While both USB and the Wiichuck use four wires to deal with power and communications, the communications protocols are very different. The Wiichuck uses a protocol called I2C, which is very different than USB. You need something that converts between USB and I2C. And an Arduino is a pretty good USB-to-I2C converter.

  5. Do u have to use a Arduino? Cause i just wanted to make a wii nunchuck as a mouse. I took apart a mouse and saw that the USB only has four wires. I was thinking if i could connect those four wires to the 4-pin header and use the nunchuck as a mouse

  6. Dang it! ive got a MEGA 1280….any suggestions?…. does the mega not have the required functionality?.. I realy want to get it working… what should i look for or change…
    sorry to spam ur blog…..
    Your help is invaluable….

    thanks for your time!

  7. Hi,
    What kind of Arduino do you have?
    If you have a MEGA or something else other than the regular Arduino board, plugging in the adapter into pins 2,3,4,5 will likely not work.

  8. Hey there Todbot,
    I am in awe of this work..
    I spent a few hours with my arduino plgged in pins 2345 as said above but for some reason when i take a multimeter across pins 2 and 3 i dont get any voltage.. Has any one had such an issue??? any ideas whats goin on… Crossing my fingers that my arduino’s not busted!! :(
    the code loads successfuly but no voltage..

    any help is much appreciated…
    Cheers

  9. Hello TodBot,

    Hey thanks, had a great time playing with your information/code. May use it with my astronomy project, needed a human interface and this may be the answer.

    Thanks,
    Chip

  10. Hello TodBot,

    I am a high school student taking an Introduction to Engineering class. For my final project, I am collaborating with another to make a Tactile Tic Tac Toe game for the blind, and I decided that a Wii Nunchuck was the best controller to use. I am very thankful to have found the library you made. I didn’t have to get an adapter because I found that it works if you insert wires into the little holes on the side. I was wondering if I should do anything else, or anything you would like me to do, besides putting the link to this page.

    If you are interested, you can find more information on our project blogs:
    Mine:
    http://justintime4java.weebly.com/
    Xavier’s:
    http://estoesmitarea.weebly.com/

    -Justin

  11. Hi Ali,
    There is the possibility of using any two digital pins with a “Software I2C” library that does all the I2C functionality in code rather than using the built-in hardware of the AVR chip on the Arduino. I don’t know off the top of my head an Arduino Software I2C library that works with the Wii Nunchuck. I haven’t look very carefully though, maybe you will have better luck searching. If you find something, please let me know.

  12. Hi Todbot,

    I’m currently developing a vocal manipulator patch in Max Msp. I inherited a BT-V06 already programmed for a uni project. This is currently using all analog pins to an outboard breadboard connected to piezo and flex sensors. I could sacrifice freeing up 1 of these only if needed.
    However, the digital connections are unused. I was hoping to use your adapter for more functionality of parameters but notice prior to ordering that you suggest using the analog inputs. Is it possible to use the digital ones as well or would this just not work please? I’m not very good with electronics so any help is much appreciated. If you could offer any suggestions please without having to recode the board, that would be great. As this isnt an option.

    Thanks in advance,
    kind regards

    Ali

  13. Your adapter is very useful! Thank you, it helped me a lot!

    I wrote a new Wii Nunchuk library for Arduino. I used another initialization method, so that the data bytes are unencrypted and some 3rd party controllers work. I also included the data from bits 2-7 from byte 5 in order to increase the precision of the accelerometer. You can read more about it below:

    http://www.gabrielbianconi.com/projects/arduinonunchuk/

    Best regards,
    Gabriel Bianconi.

Leave a Reply

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