Inputs to a Wiimote using a microcontroller

bluetoothinputmicrocontrollerwii

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

Best Answer

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.