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ć
i2cdetect
Aby sprawdzić, czy MPU-6050 jest wykrywany w autobusie I2C:sudo i2cdetect -y 1
- Powinieneś zobaczyć MPU-6050 pod adresem
0x68
(Lub0x69
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
- Ś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!