ה- MPU-6050 הוא מכשיר מעקב אחר תנועה של 6 צירים עם גירוסקופ ומד תאוצה, מה שהופך אותו לאידיאלי ליישומים לחישת תנועה כמו רובוטיקה, מל"טים ופרויקטים של IoT. במדריך זה תלמד כיצד להתחבר ולהשתמש ב- MPU-6050 עם פטל PI כדי ללכוד נתוני תנועה וכיוון.
מה תצטרך
- Raspberry Pi (כל דגם עם תמיכה ב- GPIO, למשל, pi 3, pi 4)
- מודול MPU-6050
- חוטי לחם וגשר
- מחשב עם גישה ל- SSH ל- Raspberry Pi או למקלדת ומחוברים
- פיתון מותקן ב- 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
- פתח את כלי התצורה של Raspberry Pi:
sudo raspi-config
- נווט אל אפשרויות ממשק> i2c ולאפשר את זה.
- אתחל מחדש את ה- Raspberry Pi:
sudo reboot
שלב 3: התקן כלים וספריות נדרשים
- עדכן את ה- Raspberry Pi שלך:
sudo apt update && sudo apt upgrade -y
- התקן את כלי ה- I2C:
sudo apt install -y i2c-tools
- התקן ספריות פייתון לתקשורת 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.
דוגמה לקוד פיתון
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
- מעקב אחר תנועה: עקוב אחר תנועה והתמצאות ברובוטיקה או לבישים.
- מערכות ייצוב: יישום ייצוב גירוסקופי למל"טים או גימבלס.
- משחק: צור בקרי משחק מבוססי תנועה.
- פרויקטים של IoT: השתמש בנתוני תנועה כדי להפעיל אירועי אוטומציה.
פתרון בעיות
-
המכשיר לא זוהה:
- אמת חיבורי SDA ו- SCL.
- ודא שממשק ה- i2c מופעל ב- Raspberry Pi.
- בדוק את ספק הכוח ל- MPU-6050.
-
קריאות לא מדויקות:
- כיול את החיישן על ידי יישום קיזוז לכל ציר.
- ודא שהחיישן ממוקם על משטח יציב.
-
שגיאות i2c:
- ודא שאין מכשירים סותרים באוטובוס i2c.
מַסְקָנָה
MPU-6050 הוא חיישן תנועה רב-תכליתי שיכול להוסיף יכולות מעקב אחר תנועה מדויקות לפרויקטים של Raspberry Pi שלך. על ידי ביצוע מדריך זה, תוכלו להגדיר ולהשתמש ב- MPU-6050 ליישומים כמו רובוטיקה, מערכות ייצוב ואוטומציה של IoT. התנסו בקנה מידה וסינון נתונים כדי לכוונן את החיישן לצרכים שלכם!