Now that the library is finished, it’s time to start putting it to use! The first step is building a better breakout board for connecting to the extension controllers.
From what I could find, there are two types of common breakout boards currently in use: the “stick” breakout and the Nunchucky breakout.
The “stick” breakout is exactly what it sounds like: a regular old breakout in the shape of a stick. This is designed to be manufactured dirt cheap and plug into the Arduino Uno’s analog pin header. It’s manufactured and sold by a bunch of different Chinese companies.
The Nunchucky breakout is what I used for the McCree Hammershot’s Nunchuk support. It’s a larger rectangular board, with an additional pin strip for adding a female header and notches to hold the extension controllers’ retaining clips. This is by far the better option of the two, but it’s still lacking.
These breakouts are a great starting point, but they do have their issues. There are three problems that need to be addressed:
#1 – Power Before Data
For some reason, both of these breakouts have all six of their gold contact fingers at the same length. The vast majority of multi-pin connectors have two pins that are longer than the others so that power and ground make first contact. Otherwise when plugging in a device to a ‘hot’ connector, it’s a gamble which two pins will make contact first, sending power in unpredictable and usually undesirable ways.
For the Nintendo extension controllers, the shorter pins are on the receptacle and not the plug. Available breakouts do not abide by these conventions.
#2 – Controller Detect
The Nintendo extension connector has a loopback functionality that connects pin #5 to VCC, allowing the Wiimote to detect whether an extension has been connected without attempting to talk to it over I²C. Neither breakout exposes this pin.
#3 – Data Pull-ups
As each extension controller has varying bus capacitance based on their design, the pull-ups for the I²C bus are on the extension controllers themselves and not the base unit. Nevertheless, the microcontroller requires some small pull-ups so that the bus doesn’t hang if the controller is disconnected. Current breakouts have no pull-ups of any kind, instead relying on the microcontroller to use its own internal pull-ups which are sometimes not available.
The NXCtrl Breakout
The NXCtrl breakout solves all of these problems! The 4 non-power fingers are set back 1 mm from the board edge to ensure the controller powers up before anything else. The “controller detect” pin is exposed with a 10 kΩ pull-down resistor for easy use with most microcontrollers. Finally, both the SCL and SDA lines have 47 kΩ pull-up resistors to prevent the I²C lines from floating if a controller is disconnected. When combined with the typical 1.9 kΩ pull-ups in the Nunchuk and Classic Controller, these give the system a total pull-up strength of roughly 1.8 kΩ.
I ordered a batch from OSH Park and hand soldered the three resistors. I’ve been testing these breakouts with my latest projects, and so far they’re doing really well – they’re easier to set up than the other breakouts and having access to the controller detect pin is quite useful. This may only be version 1.0, but I don’t think I would change a thing. The layout is good, the silkscreen is clear, and the cutout for the connector is spot-on.
I’ve got at least two projects using these breakouts in the works. Watch this space!
Sammy · June 10, 2020 at 9:21 am
is the PCB shared on oshpark? would love to use these for a personal project and the shipping from oshpark is a ton cheaper versus the out of stock adafruit. thank you.
Dave · June 10, 2020 at 9:28 am
It’s not, no. I’ve been meaning to set up a Tindie store to sell these and some other boards but I haven’t set aside the time yet.
Zed · June 30, 2021 at 9:42 am
Have you heard anymore news about getting these breakout boards? I’m wanting to build a DJ hero controller like the one you made for Lucio. I’m wanting to use it to control some performative shader artwork.
Thank you for the great reads btw 🙂
Dave · June 30, 2021 at 8:40 pm
Hi Zed. No plans to sell these at the moment. There are many other great breakout boards out there though, all of which should be compatible with the library.
Zed · July 3, 2021 at 9:57 am
Ah that’s too bad! I’m pretty new to this stuff and I just found this Wii DJ hero at the thrift shop… Super cool idea
Zed · July 4, 2021 at 8:18 am
Hey me again! Any chance you could share your plans/files for these breakout boards? I dont mind buying them myself from OSH Park 🙂