Obtenga entrega gratuita en todas las órdenes más de £20!

Usando el MPU-6050 con la Raspberry Pi

Using the MPU-6050 with the Raspberry Pi

El MPU-6050 es un dispositivo de seguimiento de movimiento de 6 ejes con giroscopio y acelerómetro, lo que lo hace ideal para aplicaciones de detección de movimiento como robótica, drones y proyectos IoT. En esta guía, aprenderás cómo conectar y usar el MPU-6050 con una Raspberry Pi para capturar datos de movimiento y orientación.


Qué necesitarás

  1. Raspberry Pi (cualquier modelo con soporte GPIO, p. ej., Pi 3, Pi 4)
  2. Módulo MPU-6050
  3. Protoboard y cables de conexión
  4. Un ordenador con acceso SSH a la Raspberry Pi o un teclado y monitor conectados
  5. Python instalado en la Raspberry Pi

Paso 1: Cableado del MPU-6050 a la Raspberry Pi

El MPU-6050 se comunica con la Raspberry Pi utilizando el protocolo I2C.

Conexiones

Pin del MPU-6050 Pin de la Raspberry Pi
VCC 3.3V (Pin 1)
GND Tierra (Pin 6)
SDA SDA (Pin 3, GPIO2)
SCL SCL (Pin 5, GPIO3)

Nota: Asegúrate de que el módulo MPU-6050 funcione a 3.3V. La mayoría de los módulos incluyen un regulador de voltaje, lo que permite alimentarlos con 5V.


Paso 2: Habilitar la interfaz I2C en la Raspberry Pi

  1. Abre la herramienta de configuración de Raspberry Pi:
    sudo raspi-config
    
  2. Navega a Interface Options > I2C y actívala.
  3. Reinicia la Raspberry Pi:
    sudo reboot
    

Paso 3: Instalar herramientas y librerías necesarias

  1. Actualiza tu Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. Instala las herramientas I2C:
    sudo apt install -y i2c-tools
    
  3. Instala librerías de Python para comunicación I2C y procesamiento de datos:
    pip install smbus2
    

Paso 4: Verificar la conexión

  1. Usa i2cdetect para verificar que el MPU-6050 sea detectado en el bus I2C:
    sudo i2cdetect -y 1
    
  2. Deberías ver el MPU-6050 en la dirección 0x68 (o 0x69 si el pin AD0 está puesto en alto). Si no:
    • Revisa tu cableado.
    • Asegúrate de que el MPU-6050 esté alimentado.

Paso 5: Leer datos del MPU-6050

El siguiente script en Python lee datos del acelerómetro y del giroscopio del MPU-6050.

Ejemplo de código en Python

import smbus2
import time

# Registros y dirección del MPU-6050
MPU6050_ADDR = 0x68
PWR_MGMT_1 = 0x6B
ACCEL_XOUT_H = 0x3B
GYRO_XOUT_H = 0x43

# Inicializar bus I2C
bus = smbus2.SMBus(1)

# Despertar el MPU-6050
bus.write_byte_data(MPU6050_ADDR, PWR_MGMT_1, 0)

def read_raw_data(addr):
    # Leer dos bytes de datos desde la dirección dada
    high = bus.read_byte_data(MPU6050_ADDR, addr)
    low = bus.read_byte_data(MPU6050_ADDR, addr+1)
    value = (high << 8) | low
    # Convertir a valor con signo
    if value > 32767:
        value -= 65536
    return value

try:
    while True:
        # Leer datos del acelerómetro
        accel_x = read_raw_data(ACCEL_XOUT_H)
        accel_y = read_raw_data(ACCEL_XOUT_H + 2)
        accel_z = read_raw_data(ACCEL_XOUT_H + 4)

        # Leer datos del giroscopio
        gyro_x = read_raw_data(GYRO_XOUT_H)
        gyro_y = read_raw_data(GYRO_XOUT_H + 2)
        gyro_z = read_raw_data(GYRO_XOUT_H + 4)

        # Convertir datos sin procesar a valores significativos (puede requerir escalado opcional)
        accel_x_scaled = accel_x / 16384.0
        accel_y_scaled = accel_y / 16384.0
        accel_z_scaled = accel_z / 16384.0

        gyro_x_scaled = gyro_x / 131.0
        gyro_y_scaled = gyro_y / 131.0
        gyro_z_scaled = gyro_z / 131.0

        print(f"Acelerómetro: X={accel_x_scaled:.2f}, Y={accel_y_scaled:.2f}, Z={accel_z_scaled:.2f}")
        print(f"Giroscopio: X={gyro_x_scaled:.2f}, Y={gyro_y_scaled:.2f}, Z={gyro_z_scaled:.2f}")

        time.sleep(1)

except KeyboardInterrupt:
    print("Saliendo...")

Paso 6: Aplicaciones del MPU-6050

  1. Seguimiento de movimiento: Rastrear movimiento y orientación en robótica o dispositivos wearables.
  2. Sistemas de estabilización: Implementar estabilización giroscópica para drones o gimbals.
  3. Juegos: Crear controladores de juegos basados en movimiento.
  4. Proyectos IoT: Usar datos de movimiento para disparar eventos de automatización.

Solución de problemas

  1. Dispositivo no detectado:

    • Verifica las conexiones SDA y SCL.
    • Asegúrate de que la interfaz I2C esté habilitada en la Raspberry Pi.
    • Revisa la alimentación del MPU-6050.
  2. Lecturas inexactas:

    • Calibra el sensor implementando un offset para cada eje.
    • Asegúrate de que el sensor esté colocado sobre una superficie estable.
  3. Errores I2C:

    • Asegúrate de que no haya dispositivos en conflicto en el bus I2C.

Conclusión

El MPU-6050 es un sensor de movimiento versátil que puede añadir capacidades precisas de seguimiento de movimiento a tus proyectos con Raspberry Pi. Siguiendo esta guía, puedes configurar y usar el MPU-6050 para aplicaciones como robótica, sistemas de estabilización y automatización IoT. ¡Experimenta con el escalado y el filtrado de datos para ajustar el sensor a tus necesidades!

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

Escribir un comentario