将MPU-6050与Raspberry Pi一起使用

Using the MPU-6050 with the Raspberry Pi

MPU-6050是具有陀螺仪和加速度计的6轴运动跟踪设备,非常适合机器人,无人机和物联网项目等运动感应应用。在本指南中,您将学习如何使用Raspberry Pi连接和使用MPU-6050来捕获运动和定向数据。


你需要什么

  1. 覆盆子pi (任何具有GPIO支持的模型,例如PI 3,PI 4)
  2. MPU-6050模块
  3. 面包板和跳线电线
  4. SSH访问Raspberry Pi或连接的键盘的计算机并监视
  5. Python安装在Raspberry Pi上

步骤1:将MPU-6050接线到Raspberry Pi

MPU-6050使用I2C协议与Raspberry Pi通信。

连接

MPU-6050引脚 覆盆子Pi Pin
VCC 3.3V(引脚1)
gnd 地面(引脚6)
SDA SDA(引脚3,GPIO2)
SCL SCL(引脚5,GPIO3)

笔记: 确保MPU-6050模块在3.3V下运行。大多数模块都包括电压调节器,使它们可以用5V供电。


步骤2:在Raspberry Pi上启用I2C接口

  1. 打开Raspberry Pi配置工具:
    sudo raspi-config
    
  2. 导航到 接口选项> I2C 并启用它。
  3. 重新启动覆盆子Pi:
    sudo reboot
    

步骤3:安装所需的工具和库

  1. 更新您的Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. 安装I2C工具:
    sudo apt install -y i2c-tools
    
  3. 安装用于I2C通信和数据处理的Python库:
    pip install smbus2
    

步骤4:验证连接

  1. 使用 i2cdetect 在I2C总线上检测到MPU-6050:
    sudo i2cdetect -y 1
    
  2. 您应该在地址看到MPU-6050 0x68 (或者 0x69 如果将AD0引脚拉高)。如果不:
    • 检查您的布线。
    • 确保MPU-6050供电。

步骤5:读取MPU-6050的数据

以下Python脚本读取MPU-6050的加速度计和陀螺仪数据。

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...")

步骤6:MPU-6050的应用

  1. 运动跟踪: 在机器人或可穿戴设备中进行跟踪运动和方向。
  2. 稳定系统: 对无人机或gimbals实施陀螺仪稳定。
  3. 赌博: 创建基于运动的游戏控制器。
  4. 物联网项目: 使用运动数据触发自动化事件。

故障排除

  1. 未检测到设备:

    • 验证SDA和SCL连接。
    • 确保在Raspberry Pi上启用I2C接口。
    • 检查MPU-6050的电源。
  2. 不准确的读数:

    • 通过为每个轴实现偏移来校准传感器。
    • 确保将传感器放在稳定的表面上。
  3. I2C错误:

    • 确保I2C总线上没有矛盾的设备。

结论

MPU-6050是一种多功能运动传感器,可以为Raspberry Pi项目添加精确的运动跟踪功能。通过遵循本指南,您可以设置并使用MPU-6050来用于机器人,稳定系统和物联网自动化等应用程序。尝试缩放和过滤数据,以微调传感器满足您的需求!

发表评论

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.