Za pomocą MPU-6050 z Raspberry Pi

Using the MPU-6050 with the Raspberry Pi

MPU-6050 to 6-osiowe urządzenie śledzenia ruchu z żyroskopem i akcelerometrem, dzięki czemu jest idealny do aplikacji wykrywających ruch, takich jak robotyka, drony i projekty IoT. W tym przewodniku nauczysz się połączyć i korzystać z MPU-6050 z Raspberry Pi, aby przechwytywać dane ruchu i orientacji.


Czego będziesz potrzebować

  1. Raspberry Pi (Każdy model z obsługą GPIO, np. PI 3, PI 4)
  2. MPU-6050 Moduł
  3. Druty chleba i skoczków
  4. Komputer z dostępem do SSH do Raspberry Pi lub podłączonej klawiatury i monitorowania
  5. Python zainstalowany na Raspberry Pi

Krok 1: Okablowanie MPU-6050 do Raspberry Pi

MPU-6050 komunikuje się z Raspberry Pi za pomocą protokołu I2C.

Znajomości

Pin MPU-6050 Pin Raspberry Pi
VCC 3,3 V (pin 1)
GND Uziemienie (pin 6)
SDA SDA (pin 3, GPIO2)
Scl SCL (pin 5, GPIO3)

Notatka: Upewnij się, że moduł MPU-6050 działa na poziomie 3,3 V. Większość modułów obejmuje regulator napięcia, umożliwiając im zasilanie 5 V.


Krok 2: Włącz interfejs I2C na Raspberry Pi

  1. Otwórz narzędzie konfiguracyjne Raspberry Pi:
    sudo raspi-config
    
  2. Przejść do Opcje interfejsu> i2c i włącz to.
  3. Uruchom ponownie Raspberry Pi:
    sudo reboot
    

Krok 3: Zainstaluj wymagane narzędzia i biblioteki

  1. Zaktualizuj swoje Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. Zainstaluj narzędzia I2C:
    sudo apt install -y i2c-tools
    
  3. Zainstaluj biblioteki Python do komunikacji i przetwarzania danych I2C:
    pip install smbus2
    

Krok 4: Sprawdź połączenie

  1. Używać i2cdetect Aby sprawdzić, czy MPU-6050 jest wykrywany w autobusie I2C:
    sudo i2cdetect -y 1
    
  2. Powinieneś zobaczyć MPU-6050 pod adresem 0x68 (Lub 0x69 Jeśli szpilka AD0 jest wyciągnięta wysoko). W przeciwnym razie:
    • Sprawdź okablowanie.
    • Upewnij się, że MPU-6050 jest zasilany.

Krok 5: Odczyt danych z MPU-6050

Poniższy skrypt Python odczytuje dane akcelerometru i żyroskopu z MPU-6050.

Przykład kodu Pythona

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

Krok 6: Zastosowania MPU-6050

  1. Śledzenie ruchu: Śledź ruch i orientacja w robotyce lub urządzeniach do noszenia.
  2. Systemy stabilizacji: Wdrożyć stabilizację żyroskopową dronów lub gimbalów.
  3. Hazard: Utwórz kontrolery gier oparte na ruchu.
  4. Projekty IoT: Użyj danych ruchu, aby wyzwolić zdarzenia automatyzacji.

Rozwiązywanie problemów

  1. Urządzenie nie wykryte:

    • Sprawdź połączenia SDA i SCL.
    • Upewnij się, że interfejs I2C jest włączony na Raspberry Pi.
    • Sprawdź zasilacz do MPU-6050.
  2. Niedokładne odczyty:

    • Kalibruj czujnik, wdrażając przesunięcie dla każdej osi.
    • Upewnij się, że czujnik jest umieszczony na stabilnej powierzchni.
  3. Błędy I2C:

    • Upewnij się, że w autobusie I2C nie ma sprzecznych urządzeń.

Wniosek

MPU-6050 to wszechstronny czujnik ruchu, który może dodać precyzyjne możliwości śledzenia ruchu do projektów Raspberry Pi. Postępując zgodnie z tym przewodnikiem, możesz skonfigurować i użyć MPU-6050 dla aplikacji takich jak robotyka, systemy stabilizacyjne i automatyzacja IoT. Eksperymentuj z danymi skalowania i filtrowania, aby dopracować czujnik do swoich potrzeb!

Zostaw komentarz

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.