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 un giroscopio y un acelerómetro, lo que lo hace ideal para aplicaciones de sensación de movimiento como robótica, drones y proyectos IoT. En esta guía, aprenderá cómo conectarse y usar el MPU-6050 con una Raspberry Pi para capturar datos de movimiento y orientación.


Lo que necesitarás

  1. Frambuesa pi (Cualquier modelo con soporte de GPIO, por ejemplo, PI 3, PI 4)
  2. Módulo MPU-6050
  3. Cables de placa y jersey
  4. Una computadora con acceso SSH a la Raspberry Pi o un teclado y monitor conectado
  5. Python instalado en la Raspberry Pi

Paso 1: Cableado el MPU-6050 al Raspberry Pi

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

Conexión

Pin de MPU-6050 Pin de frambuesa Pi
VCC 3.3V (pin 1)
Gnd Tierra (pin 6)
SDA SDA (pin 3, GPIO2)
SCL SCL (pin 5, GPIO3)

Nota: Asegúrese 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 les permite ser alimentados con 5V.


Paso 2: Habilite la interfaz I2C en Raspberry Pi

  1. Abra la herramienta de configuración de Raspberry Pi:
    sudo raspi-config
    
  2. Navegar por Opciones de interfaz> I2C y habilitarlo.
  3. Reinicie la Raspberry Pi:
    sudo reboot
    

Paso 3: Instale herramientas y bibliotecas requeridas

  1. Actualice su Raspberry PI:
    sudo apt update && sudo apt upgrade -y
    
  2. Instale las herramientas I2C:
    sudo apt install -y i2c-tools
    
  3. Instale bibliotecas de Python para la comunicación y procesamiento de datos I2C:
    pip install smbus2
    

Paso 4: Verifique la conexión

  1. Usar i2cdetect Para verificar que el MPU-6050 se detecte en el bus I2C:
    sudo i2cdetect -y 1
    
  2. Debería ver el MPU-6050 en la dirección 0x68 (o 0x69 Si el pasador AD0 se saca alto). Si no:
    • Revise su cableado.
    • Asegúrese de que el MPU-6050 esté alimentado.

Paso 5: Lectura de datos de la MPU-6050

El siguiente script de Python lee el acelerómetro y los datos de giroscopio de la MPU-6050.

Ejemplo de código de python

import smbus2
import time

# MPU-6050 Registers and Address
MPU6050_ADDR = 0x68
PWR_MGMT_1 = 0x6B
ACCEL_XOUT_H = 0x3B
GYRO_XOUT_H = 0x43

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

# Wake up the MPU-6050
bus.write_byte_data(MPU6050_ADDR, PWR_MGMT_1, 0)

def read_raw_data(addr):
    # Read two bytes of data from the given address
    high = bus.read_byte_data(MPU6050_ADDR, addr)
    low = bus.read_byte_data(MPU6050_ADDR, addr+1)
    value = (high << 8) | low
    # Convert to signed value
    if value > 32767:
        value -= 65536
    return value

try:
    while True:
        # Read accelerometer data
        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)

        # Read gyroscope data
        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)

        # Convert raw data to meaningful values (optional scaling may be needed)
        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"Accelerometer: X={accel_x_scaled:.2f}, Y={accel_y_scaled:.2f}, Z={accel_z_scaled:.2f}")
        print(f"Gyroscope: X={gyro_x_scaled:.2f}, Y={gyro_y_scaled:.2f}, Z={gyro_z_scaled:.2f}")

        time.sleep(1)

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

Paso 6: Aplicaciones de la MPU-6050

  1. Seguimiento de movimiento: Seguimiento de movimiento y orientación en robótica o wearables.
  2. Sistemas de estabilización: Implemente la estabilización giroscópica para drones o gimbals.
  3. Juego de azar: Crear controladores de juegos basados ​​en el movimiento.
  4. Proyectos de IoT: Use datos de movimiento para activar eventos de automatización.

Solución de problemas

  1. Dispositivo no detectado:

    • Verifique las conexiones SDA y SCL.
    • Asegúrese de que la interfaz I2C esté habilitada en Raspberry Pi.
    • Verifique la fuente de alimentación al MPU-6050.
  2. Lecturas inexactas:

    • Calibre el sensor implementando un desplazamiento para cada eje.
    • Asegúrese de que el sensor se coloque en una superficie estable.
  3. Errores I2C:

    • Asegúrese de que no haya dispositivos en conflicto en el autobús I2C.

Conclusión

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

Escribir un comentario

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.