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ć
- Raspberry Pi (Każdy model z obsługą GPIO, np. PI 3, PI 4)
- MPU-6050 Moduł
- Druty chleba i skoczków
- Komputer z dostępem do SSH do Raspberry Pi lub podłączonej klawiatury i monitorowania
- 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
- Otwórz narzędzie konfiguracyjne Raspberry Pi:
sudo raspi-config
- Przejść do Opcje interfejsu> i2c i włącz to.
- Uruchom ponownie Raspberry Pi:
sudo reboot
Krok 3: Zainstaluj wymagane narzędzia i biblioteki
- Zaktualizuj swoje Raspberry Pi:
sudo apt update && sudo apt upgrade -y
- Zainstaluj narzędzia I2C:
sudo apt install -y i2c-tools
- Zainstaluj biblioteki Python do komunikacji i przetwarzania danych I2C:
pip install smbus2
Krok 4: Sprawdź połączenie
- Używać i2cdetectAby sprawdzić, czy MPU-6050 jest wykrywany w autobusie I2C:sudo i2cdetect -y 1
- Powinieneś zobaczyć MPU-6050 pod adresem 0x68(Lub0x69Jeś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
- Śledzenie ruchu: Śledź ruch i orientacja w robotyce lub urządzeniach do noszenia.
- Systemy stabilizacji: Wdrożyć stabilizację żyroskopową dronów lub gimbalów.
- Hazard: Utwórz kontrolery gier oparte na ruchu.
- Projekty IoT: Użyj danych ruchu, aby wyzwolić zdarzenia automatyzacji.
Rozwiązywanie problemów
- 
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.
 
- 
Niedokładne odczyty: - Kalibruj czujnik, wdrażając przesunięcie dla każdej osi.
- Upewnij się, że czujnik jest umieszczony na stabilnej powierzchni.
 
- 
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!
 
            
 
      
 
      
 
      
 
      
 
       
         
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  