MPU-6050, jiroskop ve ivmeölçer ile 6 eksenli bir hareket izleme cihazıdır, bu da robotik, dron ve IoT projeleri gibi hareket algılama uygulamaları için idealdir. Bu kılavuzda, hareket ve oryantasyon verilerini yakalamak için MPU-6050'yi bir Raspberry Pi ile nasıl bağlayacağınızı ve kullanacağınızı öğreneceksiniz.
Ne İhtiyacınız Olacak
- Ahududu pi (GPIO destekli herhangi bir model, örneğin Pi 3, Pi 4)
- MPU-6050 modülü
- Breadboard ve jumper telleri
- Raspberry Pi'ye veya bağlı bir klavyeye ve monitöre SSH erişimi olan bir bilgisayar
- Raspberry Pi'ye Python kuruldu
Adım 1: MPU-6050'yi Raspberry Pi'ye bağlama
MPU-6050, I2C protokolünü kullanarak Raspberry Pi ile iletişim kurar.
Bağlantılar
MPU-6050 PIN | Raspberry Pi Pimi |
---|---|
VCC | 3.3V (pim 1) |
Gnd | Zemin (pim 6) |
SDA | SDA (pim 3, GPIO2) |
Scl | SCL (Pin 5, GPIO3) |
Not: MPU-6050 modülünün 3.3V'de çalıştığından emin olun. Modüllerin çoğu, 5V ile güçlendirilmelerini sağlayan bir voltaj regülatörü içerir.
2. Adım: Raspberry Pi'deki I2C arayüzünü etkinleştirin
- Raspberry Pi yapılandırma aracını açın:
sudo raspi-config
- Gezmek Arayüz Seçenekleri> I2C ve etkinleştir.
- Raspberry Pi'yi yeniden başlatın:
sudo reboot
Adım 3: Gerekli araçları ve kütüphaneleri kurun
- Raspberry Pi'nizi güncelleyin:
sudo apt update && sudo apt upgrade -y
- I2C araçlarını yükleyin:
sudo apt install -y i2c-tools
- I2C İletişim ve Veri İşleme için Python Kütüphaneleri Yükle:
pip install smbus2
4. Adım: Bağlantıyı doğrulayın
- Kullanmak
i2cdetect
I2C veri yolunda MPU-6050'nin tespit edildiğini doğrulamak için:sudo i2cdetect -y 1
- MPU-6050'yi adreste görmelisiniz
0x68
(veya0x69
AD0 pimi yüksek çekilirse). Değilse:- Kablolarınızı kontrol edin.
- MPU-6050'nin güçlendirildiğinden emin olun.
Adım 5: MPU-6050'den veri okuma
Aşağıdaki Python komut dosyası MPU-6050'den ivmeölçer ve jiroskop verilerini okur.
Python kodu örneği
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...")
Adım 6: MPU-6050 uygulamaları
- Hareket izleme: Robotik veya giyilebilir cihazlarda hareket ve yönelim.
- Stabilizasyon Sistemleri: Dronlar veya gimbals için jiroskopik stabilizasyon uygulayın.
- Oyun: Harekete dayalı oyun denetleyicileri oluşturun.
- IoT Projeleri: Otomasyon olaylarını tetiklemek için hareket verilerini kullanın.
Sorun giderme
-
Cihaz algılanmadı:
- SDA ve SCL bağlantılarını doğrulayın.
- I2C arayüzünün Raspberry Pi'de etkin olduğundan emin olun.
- MPU-6050'ye güç kaynağını kontrol edin.
-
Yanlış Okumalar:
- Her eksen için bir ofset uygulayarak sensörü kalibre edin.
- Sensörün sabit bir yüzeye yerleştirildiğinden emin olun.
-
I2C hataları:
- I2C otobüsünde çelişkili cihaz olmadığından emin olun.
Çözüm
MPU-6050, Raspberry Pi projelerinize hassas hareket izleme özellikleri ekleyebilen çok yönlü bir hareket sensörüdür. Bu kılavuzu izleyerek, robotik, stabilizasyon sistemleri ve IoT otomasyonu gibi uygulamalar için MPU-6050'yi kurabilir ve kullanabilirsiniz. Sensöre ihtiyaçlarınız için ince ayar yapmak için verileri ölçeklendirme ve filtreleme ile deneyin!