0

I've seen various methods of grabbing inputs and sensor data from Wiimotes and Wii Nunchuks as standard Bluetooth HIDs into microcontrollers like the Arduinos, but is there a way of sending button presses (say, for an Intelligent Agent running on an aforementioned microcontroller) to a Wiimote that's connected to a Wii? I would assume opening it up and sending pulses directly to the board would be the easiest way, but I am relatively new to electronics. It would be preferred if I didn't have to open up one to send inputs, though. Perhaps using the I2C expansion port?

The folks over at Wiibrew with more electrical knowledge than me have rounded up some of the more technical aspects of the controller: http://wiibrew.org/wiki/Wiimote

Eriol
  • 115
  • 5

2 Answers2

1

The Wii mote is a Bluetooth HID device to the Wii Host (or your Computer), which is based on the USB HID protocol. The host polls the device to get the current state.

Internally, it acts like two devices. The first is a standard controller type microcontroller for the wiimote. It's not possible (AFAIK) to override these without adding a microcontroller to the buttons. The second is an i2c Master for the expansion port, digitally polling for the nunchuck, classic controllers, motionplus adapter, etc, all of which act like simple i2c eeproms or port expanders.

Depending on the game or app running on the wii, an attached nunchuck or classic controller simply duplicates the buttons on the wiimote itself. So by emulating a nunchuck or classic controller i2c device through the expansion port with a microcontroller acting as an i2c slave, you can send those button presses.

Passerby
  • 72,580
  • 7
  • 90
  • 202
  • So I've analyzed the situation I'm in a bit more, does this means I can potentially emulate **all** of the button presses in a Nunchuk + Wiimote combo using only a microcontroller? So far it seems like I can only do one or the other if I try using the I2C port. – Eriol May 27 '14 at 20:20
  • I missed the edit timeline, but I noticed I should've clarified a bit more. Basically, I would like to do a setup as such: +Depending on external sensors connected to a microcontroller, including the sensors on the Wiimote, the microcontroller processes information and translates it to a "button press" +This "press code" is then sent to the Wiimote (which should seem like it is actually a Wiimote + Nunchuk combo) +The Wiimote then relays it to the host Wii via its Bluetooth connection. If connecting the sensor from the Wiimote is too much hassle I could do without that but it's preferred. – Eriol May 27 '14 at 20:33
  • Since the wiimote is the i2c master, and AFAIK it does not support multi-master mode, its hard to read the i2c slaves (gyroscopes/accelemeters, nunchuck/classic). The Wii Motion Plus adapter acts as a pass through, as it adds itself and whatever is plugged into it, as slaves to the Wii Mote. You can emulate the slave wii motion plus AND another device like the nunchuck or classic controller. But in the end, your slave microcontroller cannot send Wiimote button codes, unless it happens that a Nunchuck or Classic controller button code simply does the same. – Passerby May 27 '14 at 23:21
0

Would it be an option to connect your wii mote to your arduino and send a serial print to indicate what button is sending what code. Note these data. And then connect your arduino to your wii and send the data directly to your wii emulating a wii mote?

I assume you want the arduino to over bridge a button on your wii mote to be send to your wii.

user43384
  • 41
  • 5