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
- Zmeură pi (Orice model cu suport GPIO, de exemplu, PI 3, PI 4)
- Modul MPU-6050
- Tablă de pâine și jumper
- Un computer cu acces SSH la Raspberry Pi sau la o tastatură și un monitor conectat
- 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
- Deschideți instrumentul de configurare Raspberry PI:
sudo raspi-config
- Navigați la Opțiuni de interfață> I2C și activează -l.
- Reporniți zmeura PI:
sudo reboot
Pasul 3: Instalați instrumentele și bibliotecile necesare
- Actualizați -vă Raspberry PI:
sudo apt update && sudo apt upgrade -y
- Instalați instrumentele I2C:
sudo apt install -y i2c-tools
- Instalați bibliotecile Python pentru comunicarea I2C și procesarea datelor:
pip install smbus2
Pasul 4: Verificați conexiunea
- Utilizare
i2cdetect
Pentru a verifica MPU-6050 este detectat în autobuzul I2C:sudo i2cdetect -y 1
- Ar trebui să vedeți MPU-6050 la adresa
0x68
(sau0x69
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
- Urmărirea mișcării: Urmăriți mișcarea și orientarea în robotică sau în purtabile.
- Sisteme de stabilizare: Implementați stabilizarea giroscopică pentru drone sau gimbale.
- Jocuri: Creați controlere de jocuri bazate pe mișcare.
- Proiecte IoT: Utilizați date de mișcare pentru a declanșa evenimente de automatizare.
Depanare
-
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.
-
Citiri inexacte:
- Calibrați senzorul prin implementarea unei compensări pentru fiecare axă.
- Asigurați -vă că senzorul este plasat pe o suprafață stabilă.
-
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.!