الMPU-6050 هو جهاز تتبع حركة بست محاور يضم جيروسكوب ومقياس تسارع، مما يجعله مثالياً لتطبيقات استشعار الحركة مثل الروبوتات والطائرات بدون طيار ومشاريع إنترنت الأشياء. في هذا الدليل، ستتعلم كيفية توصيل واستخدام الMPU-6050 مع Raspberry Pi لالتقاط بيانات الحركة والاتجاه.
ما ستحتاجه
- Raspberry Pi (أي طراز يدعم GPIO، مثل Pi 3، Pi 4)
- وحدة MPU-6050
- لوحة تجارب وأسلاك توصيل
- كمبيوتر مع وصول SSH إلى Raspberry Pi أو لوحة مفاتيح وشاشة متصلة
- Python مثبتة على Raspberry Pi
الخطوة 1: توصيل الMPU-6050 بـ Raspberry Pi
يتواصل الMPU-6050 مع Raspberry Pi باستخدام بروتوكول I2C.
الاتصالات
| دبوس الMPU-6050 | دبوس Raspberry Pi |
|---|---|
| VCC | 3.3V (Pin 1) |
| GND | الأرضي (Pin 6) |
| SDA | SDA (Pin 3, GPIO2) |
| SCL | SCL (Pin 5, GPIO3) |
ملاحظة: تأكد من أن وحدة MPU-6050 تعمل على 3.3V. تتضمن معظم الوحدات منظم جهد، مما يسمح بتغذيتها بجهد 5V.
الخطوة 2: تمكين واجهة I2C على Raspberry Pi
- افتح أداة تكوين Raspberry Pi:
sudo raspi-config - انتقل إلى Interface Options > I2C وقم بتمكينها.
- أعد تشغيل Raspberry Pi:
sudo reboot
الخطوة 3: تثبيت الأدوات والمكتبات المطلوبة
- حدّث Raspberry Pi الخاص بك:
sudo apt update && sudo apt upgrade -y - ثبت أدوات I2C:
sudo apt install -y i2c-tools - ثبت مكتبات Python للتواصل عبر I2C ومعالجة البيانات:
pip install smbus2
الخطوة 4: التحقق من الاتصال
- استخدم
i2cdetectللتحقق من اكتشاف الMPU-6050 على ناقل I2C:sudo i2cdetect -y 1 - يجب أن ترى الMPU-6050 على العنوان
0x68(أو0x69إذا كان دبوس AD0 مسحوباً للأعلى). إذا لم يظهر:- تحقق من التوصيلات.
- تأكد من تشغيل الMPU-6050.
الخطوة 5: قراءة البيانات من الMPU-6050
النص البرمجي التالي بلغة Python يقرأ بيانات مقياس التسارع والجيروسكوب من الMPU-6050.
مثال كود Python
import smbus2
import time
# سجلات وعنوان ال MPU-6050
MPU6050_ADDR = 0x68
PWR_MGMT_1 = 0x6B
ACCEL_XOUT_H = 0x3B
GYRO_XOUT_H = 0x43
# تهيئة ناقل I2C
bus = smbus2.SMBus(1)
# إيقاظ ال MPU-6050
bus.write_byte_data(MPU6050_ADDR, PWR_MGMT_1, 0)
def read_raw_data(addr):
# قراءة بايتين من البيانات من العنوان المعطى
high = bus.read_byte_data(MPU6050_ADDR, addr)
low = bus.read_byte_data(MPU6050_ADDR, addr+1)
value = (high << 8) | low
# التحويل إلى قيمة موقعة
if value > 32767:
value -= 65536
return value
try:
while True:
# قراءة بيانات مقياس التسارع
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)
# قراءة بيانات الجيروسكوب
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)
# تحويل البيانات الخام إلى قيم ذات معنى (قد تحتاج إلى مقياس اختياري)
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...")
الخطوة 6: تطبيقات الMPU-6050
- تتبع الحركة: تتبع الحركة والاتجاه في الروبوتات أو الأجهزة القابلة للارتداء.
- أنظمة التثبيت: تنفيذ تثبيت جيروسكوبي للطائرات بدون طيار أو الجيمبال.
- الألعاب: إنشاء وحدات تحكم للألعاب تعتمد على الحركة.
- مشاريع إنترنت الأشياء: استخدم بيانات الحركة لتشغيل أحداث الأتمتة.
استكشاف الأخطاء وإصلاحها
-
الجهاز غير مكتشف:
- تحقق من توصيل SDA و SCL.
- تأكد من تمكين واجهة I2C على Raspberry Pi.
- تحقق من مصدر الطاقة للMPU-6050.
-
قراءات غير دقيقة:
- قم بمعايرة المستشعر عن طريق تطبيق إزاحة لكل محور.
- تأكد من وضع المستشعر على سطح ثابت.
-
أخطاء I2C:
- تأكد من عدم وجود أجهزة متضاربة على ناقل I2C.
الخاتمة
الMPU-6050 هو مستشعر حركة متعدد الاستخدامات يمكن أن يضيف قدرات تتبع حركة دقيقة لمشاريع Raspberry Pi الخاصة بك. باتباع هذا الدليل، يمكنك إعداد واستخدام الMPU-6050 لتطبيقات مثل الروبوتات، وأنظمة التثبيت، وأتمتة إنترنت الأشياء. جرّب ضبط المقاييس وتصفية البيانات لتحسين عمل المستشعر وفق احتياجاتك!




