This project turns a Wii/Wii-U Nunchuk remote into a simple BLE periphieral with the use of the Arduino Nano ESP32.
To build this project in the Arduino IDE there are 2 extensions that must be installed.
- ArduinoBLE by Arduino
- WiiChuck by Kevin Harrington
NOTE: Different manufactureres of the Nunchuk use different wiring colors for the 4 relevant connections. Due to this, it is important to base wiring off of connections to the propietary male connector instead of wire color. I note this becuase googled guides to the wiring guides can be missleading.
Remove the male connector and note how the wires are connected to the pin out compared to the below picture. The only wires that matter are connected to pins 1, 3, 4, 6.
- Pin 1 = SDA
- Pin 3 = 3.3 v
- Pin 4 = GND
- Pin 6 = SCL
Using the Arduino Nano ESP32 pinout there is no explicit pins labeled for i2c SDA & SCl pins. However, the datasheet says they can be found as follows:
- SDA = A4
- SCL = A5
This is all the wiring required to get the project running!
Finally, to compile this project the ArduinoBLE Library by Arduino must also installed. This can easily be added using the Library Manager built into Arduino IDE. I strongly suggest reading this documentation as an introduction into Bluetooth Low Energy (BLE).
To easily test the Nunchuk you can use a generic central cenrtal app. I recommend LightBlue (IOS and Android) Android users can also use nRF Connect, however the IOS expierince on this app is lackluster.
In device discovery the device should be named 'Nunchuk'. Upon connection all below listed UUIDs should be viewable services:
Service | UUID |
---|---|
Nunchuk | e4257d92-0c9f-4fbc-bcf2-a8361bffcfb3 |
Inside the Nunchuk service are the following relevant characteristics which have read or notify permissions:
Value | UUID | Range |
---|---|---|
Z Button | 9ea41596-18ec-45a9-a194-49597368e655 | 0 : 255 |
C Button | 9ea41596-18ed-45a9-a194-49597368e655 | 0 : 255 |
Joystick X | 9ea41596-18ee-45a9-a194-49597368e655 | 0 - 256 |
Joystick Y | 9ea41596-18ef-45a9-a194-49597368e655 | 0 - 256 |
Accelration X | 9ea41596-18f0-45a9-a194-49597368e655 | 0 - 256 |
Accelration Y | 9ea41596-18f1-45a9-a194-49597368e655 | 0 - 256 |
Accelration Z | 9ea41596-18f2-45a9-a194-49597368e655 | 0 - 256 |
Pitch | 9ea41596-18f3-45a9-a194-49597368e655 | 0 - 256 |
Roll | 9ea41596-18f4-45a9-a194-49597368e655 | 0 - 256 |
I am just learning BLE and spent some time reading through the BLE Assigned Numbers docuemntation but still am unsure if I am properly using the predefined UUID's for characteristics. If anyone can help my undersatnding on the topic I would greatly welcome the input.