Utilizarea MPU-6050 cu Raspberry Pi

Using the MPU-6050 with the Raspberry Pi

MPU-6050 este un dispozitiv de urmărire a mișcării cu 6 axe, cu giroscop și accelerometru, ceea ce îl face ideal pentru aplicații de sensibilitate la mișcare, cum ar fi robotică, drone și proiecte IoT. În acest ghid, veți învăța cum să vă conectați și să utilizați MPU-6050 cu un Raspberry PI pentru a capta date de mișcare și orientare.


Ce vei avea nevoie

  1. Zmeură pi (Orice model cu suport GPIO, de exemplu, PI 3, PI 4)
  2. Modul MPU-6050
  3. Tablă de pâine și jumper
  4. Un computer cu acces SSH la Raspberry Pi sau la o tastatură și un monitor conectat
  5. Python instalat pe Raspberry Pi

Pasul 1: Cablarea MPU-6050 la Raspberry Pi

MPU-6050 comunică cu Raspberry Pi folosind protocolul I2C.

Conexiuni

Pin MPU-6050 Pinul de zmeură pi
VCC 3.3V (pinul 1)
GND Sol (pinul 6)
SDA SDA (pinul 3, GPIO2)
SCL SCL (PIN 5, GPIO3)

Nota: Asigurați-vă că modulul MPU-6050 funcționează la 3.3V. Majoritatea modulelor includ un regulator de tensiune, permițându -le să fie alimentate cu 5V.


Pasul 2: Activați interfața I2C pe Raspberry PI

  1. Deschideți instrumentul de configurare Raspberry PI:
    sudo raspi-config
    
  2. Navigați la Opțiuni de interfață> I2C și activează -l.
  3. Reporniți zmeura PI:
    sudo reboot
    

Pasul 3: Instalați instrumentele și bibliotecile necesare

  1. Actualizați -vă Raspberry PI:
    sudo apt update && sudo apt upgrade -y
    
  2. Instalați instrumentele I2C:
    sudo apt install -y i2c-tools
    
  3. Instalați bibliotecile Python pentru comunicarea I2C și procesarea datelor:
    pip install smbus2
    

Pasul 4: Verificați conexiunea

  1. Utilizare i2cdetect Pentru a verifica MPU-6050 este detectat în autobuzul I2C:
    sudo i2cdetect -y 1
    
  2. Ar trebui să vedeți MPU-6050 la adresa 0x68 (sau 0x69 Dacă știftul AD0 este tras în sus). Dacă nu:
    • Verificați -vă cablarea.
    • Asigurați-vă că MPU-6050 este alimentat.

Pasul 5: Citirea datelor de la MPU-6050

Următorul script Python citește datele accelerometrului și giroscopului din MPU-6050.

Exemplu de cod 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...")

Pasul 6: Aplicațiile MPU-6050

  1. Urmărirea mișcării: Urmăriți mișcarea și orientarea în robotică sau în purtabile.
  2. Sisteme de stabilizare: Implementați stabilizarea giroscopică pentru drone sau gimbale.
  3. Jocuri: Creați controlere de jocuri bazate pe mișcare.
  4. Proiecte IoT: Utilizați date de mișcare pentru a declanșa evenimente de automatizare.

Depanare

  1. Dispozitivul care nu este detectat:

    • Verificați conexiunile SDA și SCL.
    • Asigurați -vă că interfața I2C este activată pe Raspberry Pi.
    • Verificați sursa de alimentare către MPU-6050.
  2. Citiri inexacte:

    • Calibrați senzorul prin implementarea unei compensări pentru fiecare axă.
    • Asigurați -vă că senzorul este plasat pe o suprafață stabilă.
  3. Erori I2C:

    • Asigurați -vă că nu există dispozitive conflictuale în autobuzul I2C.

Concluzie

MPU-6050 este un senzor de mișcare versatil care poate adăuga capacități precise de urmărire a mișcării la proiectele dvs. Raspberry Pi. Urmând acest ghid, puteți configura și utiliza MPU-6050 pentru aplicații precum robotică, sisteme de stabilizare și automatizare IoT. Experimentați cu scalarea și filtrarea datelor pentru a regla senzorul pentru nevoile dvs.!

Lasă un comentariu

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.