Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Integración de Wii Nunchuk con Arduino: Guía paso a paso (I2C)

Componentes y materiales

ComponenteCantidadNotas
Nintendo Nunchuk (original o réplica)1Original: cables blindados, joystick y acelerómetro mejores.
Arduino (UNO, Nano, etc.)1Cualquiera con I2C (A4=SDA, A5=SCL).
Level Shifter (bidireccional) / Conversor lógico1Recomendado: Nunchuk funciona a 3.3V. Si Arduino es 5V, protege el dispositivo.
Adaptador Nunchuk (opcional)1Evita cortar el conector propietario.

Sobre el proyecto

El Wii Nunchuk es un mando barato y versátil: joystick analógico 2 ejes, 2 botones (C, Z), acelerómetro 3 ejes. Se comunica por I2C (dirección 0x52). Este artículo proporciona una librería completa y estable (nunchuk.h) para leer todos sus datos con calibración, filtrado Kalman y funciones de ángulo (pitch/roll).

Conexión del conector Nunchuk

El conector propietario tiene 6 pines. Al abrirlo (o usar adaptador), el cableado típico es:

Pin (vista frontal)Original (color)Réplica (color)Función
1VerdeAmarilloSDA
2NCNegroNC
3RojoVerde3.3V
4BlancoRojoGND
5NCNCNC
6AmarilloBlancoSCL

¡Verifica siempre con multímetro! Los colores varían en réplicas.

Con level shifter: lado HV (Arduino 5V) ↔ lado LV (Nunchuk 3.3V). SDA/SCL cruzados. Alimentación: 3.3V del Arduino → LV, GND común.

Si usas adaptador "WiiChuck": conecta sus pines 3.3V y GND a A2 y A1 del Arduino respectivamente, y llama a nunchuk_init_power() en setup.

Software: Librería Nunchuk

Descarga: GitHub (incluye nunchuk.h y ejemplo Processing).

Uso básico

#include <Wire.h>
#include "nunchuk.h"

void setup() {
  Serial.begin(9600);
  Wire.begin();
  // nunchuk_init_power(); // Si usas adaptador WiiChuck (A1=GND, A2=3.3V)
  nunchuk_init();
}

void loop() {
  if (nunchuk_read()) {
    // Datos disponibles en nunchuk_data struct
    nunchuk_print(); // Vuelca a Serial para debug
    // O usa funciones individuales:
    // int joyX = nunchuk_joystickX(); // -128..127 calibrado
    // int accZ = nunchuk_accelZ();    // 0..255 calibrado
    // float pitch = nunchuk_pitch();  // radianes
    // float roll  = nunchuk_roll();   // radianes
    // bool btnZ = nunchuk_buttonZ();
    // bool btnC = nunchuk_buttonC();
  }
  delay(10);
}

Funciones principales

Calibración

Al inicio de nunchuk.h hay constantes para posición neutra (zero) y 1G. Ejecuta el ejemplo, mira valores _raw() en reposo y ajusta las constantes para tu unidad.

Protocolo I2C (detalles técnicos)

Dirección: 0x52. Velocidad Fast Mode (400kHz).

  1. Inicialización con encriptación: START, 0x40, 0x00, STOP. Cada byte leído debe descifrarse: (x ^ 0x17) + 0x17.
  2. Inicialización SIN encriptación (recomendada):
    START, 0xF0, 0x55, STOP
    START, 0xFB, 0x00, STOP
    Funciona con clones y evita descifrado.
  3. Leer ID dispositivo: START, 0xFA, STOP → READ 6 bytes. Nunchuk = 0xA4200000.
  4. Leer medidas (6 bytes): START, 0x00, STOP → READ 6 bytes.
    • Byte 1: Joy X [7:0]
    • Byte 2: Joy Y [7:0]
    • Byte 3: Acc X [9:2]
    • Byte 4: Acc Y [9:2]
    • Byte 5: Acc Z [9:2]
    • Byte 6: Az[1:0] Ay[1:0] Ax[1:0] ¬Bc ¬Bz (botones invertidos, LSB acelerómetros)
    La librería combina LSB con MSB para resolución 10-bit completa.
  5. Leer calibración (16 bytes): START, 0x20, STOP → READ 16 bytes. Contiene zero-G, 1G, min/max/center joystick, checksums.

Piezas personalizadas (opcional)

Soporte impreso 3D para montar Nunchuk en proyectos (archivo STL en sección CAD).

Proceso de manufactura

  1. Capturar comandos de mando IR en Raspberry Pi sin LIRC: enfoque Python UART
  2. Control de Brillo LED con PWM mediante Pulsador en Arduino Mega
  3. Crea un Impresionante Sistema Ambilight para Monitor con Arduino
  4. Sistema de Asistencia RFID Fiable con Arduino y Python
  5. Sensor K30 CO₂: Monitorización en tiempo real de la calidad del aire interior
  6. Facilitar la comunicación sordo‑ciego usando 1Sheeld y Arduino
  7. Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
  8. Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
  9. Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
  10. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
  11. Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino