The ‘Nintendo’ ‘Wii Nunchuck’ is an extension controller for the ‘Wii Remote’. The ‘Wii Nunchuck’ connects to the ‘Wii Remote’ via a 6-pin expansion port. For most robotics (accelerometer based controller) projects, only the ‘Wii Nunchuck’ is used.

The ‘Nunchuck’ is identified by the 16-bit constant 0x0000 (encrypted 0xFEFE) at register address 0xa400fe. It provides acceleration data from three axes, two digital knobs, and an XY analog stick. For this project, two-axis acceleration and XY analog stick data are used.

The ‘Nunchuck’ reports its data as 6 bytes of data, readable at 0xa40008 and can be transmitted using data reporting modes that include extension bytes (unused bytes are filled with 0x00). The peripheral protocol is 400 kHz “fast” I2C, with slave address 0x52. Decryption is done using the formula:

‘x=(x^0x17)+0x17’

Where ID of 0x17 is Read memory and registers

Inside the ‘Wii Nunchuck’, there is a three-axis linear accelerometer, ‘LIS3L02AL’ from ‘STMicroelectronics’ company.

The features of the accelerometer are:-

– Single supply operation from 2.4V to 3.6V

– Low energy consumption

– +-2g at full scale

– 0.5 mg resolution over a 100 Hz bandwidth

– Integrated self test

– Output voltage, offset and ratio of metric sensitivity to supply voltage

– High shock survivability

The accelerometer measures the force exerted by a set of small test masses. Therefore, it measures linear acceleration in a free fall reference frame. If the ‘Wii Nunchuck’ is in free fall, it will report zero acceleration. At rest, it will report an upward acceleration (+Z, when horizontal) equal to the acceleration due to gravity, g (approximately 9.8 m/s²) but in the opposite direction. This knowledge is applied to derive the tilt (value used in the interface codes) of the throttle outputs when the ‘Wii Nunchuck’ is relatively still.