באמצעות MPU-6050 עם ה- Raspberry Pi

Using the MPU-6050 with the Raspberry Pi

ה- MPU-6050 הוא מכשיר מעקב אחר תנועה של 6 צירים עם גירוסקופ ומד תאוצה, מה שהופך אותו לאידיאלי ליישומים לחישת תנועה כמו רובוטיקה, מל"טים ופרויקטים של IoT. במדריך זה תלמד כיצד להתחבר ולהשתמש ב- MPU-6050 עם פטל PI כדי ללכוד נתוני תנועה וכיוון.


מה תצטרך

  1. Raspberry Pi (כל דגם עם תמיכה ב- GPIO, למשל, pi 3, pi 4)
  2. מודול MPU-6050
  3. חוטי לחם וגשר
  4. מחשב עם גישה ל- SSH ל- Raspberry Pi או למקלדת ומחוברים
  5. פיתון מותקן ב- Raspberry Pi

שלב 1: חיווט MPU-6050 ל- Raspberry Pi

ה- MPU-6050 מתקשר עם ה- Raspberry Pi באמצעות פרוטוקול I2C.

חיבורים

PIN MPU-6050 סיכת פטל pi
VCC 3.3 וולט (סיכה 1)
GND קרקע (סיכה 6)
SDA SDA (PIN 3, GPIO2)
SCL SCL (סיכה 5, GPIO3)

פֶּתֶק: ודא שמודול MPU-6050 פועל ב -3.3 וולט. מרבית המודולים כוללים ווסת מתח, המאפשר להפעיל אותם עם 5V.


שלב 2: הפעל את ממשק I2C ב- Raspberry Pi

  1. פתח את כלי התצורה של Raspberry Pi:
    sudo raspi-config
    
  2. נווט אל אפשרויות ממשק> i2c ולאפשר את זה.
  3. אתחל מחדש את ה- Raspberry Pi:
    sudo reboot
    

שלב 3: התקן כלים וספריות נדרשים

  1. עדכן את ה- Raspberry Pi שלך:
    sudo apt update && sudo apt upgrade -y
    
  2. התקן את כלי ה- I2C:
    sudo apt install -y i2c-tools
    
  3. התקן ספריות פייתון לתקשורת I2C ועיבוד נתונים:
    pip install smbus2
    

שלב 4: אמת את החיבור

  1. לְהִשְׁתַמֵשׁ i2cdetect כדי לאמת את MPU-6050 מתגלה באוטובוס i2c:
    sudo i2cdetect -y 1
    
  2. אתה אמור לראות את ה- MPU-6050 בכתובת 0x68 (אוֹ 0x69 אם סיכת ה- AD0 נמשכת גבוה). אִם לֹא:
    • בדוק את החיווט שלך.
    • ודא שה- MPU-6050 מופעל.

שלב 5: קריאת נתונים מ- MPU-6050

סקריפט Python הבא נכתב בנתוני תאוצה וג'ירוסקופ מ- MPU-6050.

דוגמה לקוד פיתון

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...")

שלב 6: יישומים של MPU-6050

  1. מעקב אחר תנועה: עקוב אחר תנועה והתמצאות ברובוטיקה או לבישים.
  2. מערכות ייצוב: יישום ייצוב גירוסקופי למל"טים או גימבלס.
  3. משחק: צור בקרי משחק מבוססי תנועה.
  4. פרויקטים של IoT: השתמש בנתוני תנועה כדי להפעיל אירועי אוטומציה.

פתרון בעיות

  1. המכשיר לא זוהה:

    • אמת חיבורי SDA ו- SCL.
    • ודא שממשק ה- i2c מופעל ב- Raspberry Pi.
    • בדוק את ספק הכוח ל- MPU-6050.
  2. קריאות לא מדויקות:

    • כיול את החיישן על ידי יישום קיזוז לכל ציר.
    • ודא שהחיישן ממוקם על משטח יציב.
  3. שגיאות i2c:

    • ודא שאין מכשירים סותרים באוטובוס i2c.

מַסְקָנָה

MPU-6050 הוא חיישן תנועה רב-תכליתי שיכול להוסיף יכולות מעקב אחר תנועה מדויקות לפרויקטים של Raspberry Pi שלך. על ידי ביצוע מדריך זה, תוכלו להגדיר ולהשתמש ב- MPU-6050 ליישומים כמו רובוטיקה, מערכות ייצוב ואוטומציה של IoT. התנסו בקנה מידה וסינון נתונים כדי לכוונן את החיישן לצרכים שלכם!

השאירו תגובה

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.