מאמר:

מדריך חיבור חיישן תאוצה וג׳ירוסקופ GY-521 ל-Arduino ול-ESP32:

במדריך זה נלמד כיצד לחבר את מודול GY-521 המבוסס על MPU-6050 לבקר Arduino UNO ולבקר ESP32.
נראה איך לקרוא נתוני תאוצה, ג׳ירוסקופ וטמפרטורה דרך ממשק I2C ולהציג אותם ב-Serial Monitor.

מהו חיישן GY-521?

GY-521 הוא מודול IMU המבוסס על השבב MPU-6050.
המודול משלב מד תאוצה תלת-צירי (3-Axis Accelerometer) וג׳ירוסקופ תלת-צירי (3-Axis Gyroscope).

החיישן מתאים לפרויקטים של רובוטיקה, איזון, מדידת זווית, זיהוי תנועה, רטט ורחפנים.
בעזרת החיישן ניתן למדוד תאוצה בצירי X, Y, Z ולמדוד מהירות סיבובית סביב אותם צירים.

איך החיישן עובד?

בתוך השבב MPU-6050 נמצאים חיישני MEMS זעירים שמודדים שינויי תנועה וסיבוב.
המידע נשלח לבקר דרך ממשק I2C, בעזרת שני קווי תקשורת עיקריים:

  • SDA — קו נתונים של I2C.
  • SCL — קו שעון של I2C.

כתובת ה-I2C של החיישן היא בדרך כלל 0x68. בעזרת פין AD0 ניתן לשנות את הכתובת ל-0x69.
זה שימושי כאשר מחברים יותר ממודול אחד על אותו קו I2C.

פינים במודול GY-521

פיןתפקיד
VCCמתח הזנה למודול
GNDאדמה
SCLקו שעון I2C
SDAקו נתונים I2C
XDA / XCLחיבור I2C נוסף לחיישנים חיצוניים
AD0בחירת כתובת I2C: 0x68 או 0x69
INTפין Interrupt, אופציונלי

רכיבים נדרשים

  • חיישן GY-521 / MPU-6050
  • Arduino UNO או ESP32
  • Breadboard
  • חוטי Dupont
  • כבל USB
  • Arduino IDE
  • ספריית Adafruit MPU6050

חיבור GY-521 ל-Arduino UNO

GY-521Arduino UNO
VCC5V
GNDGND
SDAA4
SCLA5

הסבר חיבור

ב-Arduino UNO קווי I2C נמצאים בדרך כלל בפינים A4 ו-A5.
את פין SDA של המודול מחברים ל-A4, ואת פין SCL מחברים ל-A5.

ברוב מודולי GY-521 קיימת רגולציית מתח על המודול, ולכן ניתן להזין את המודול מ-5V של Arduino.
אם משתמשים במודול שונה, יש לבדוק את סימוני המתח על הלוח לפני החיבור.

קוד Arduino בסיסי לקריאת החיישן

#include <Wire.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>

Adafruit_MPU6050 mpu;

void setup() {
  Serial.begin(9600);

  if (!mpu.begin()) {
    Serial.println("MPU6050 not found");
    while (1) {
      delay(10);
    }
  }

  Serial.println("MPU6050 ready");
}

void loop() {
  sensors_event_t accel;
  sensors_event_t gyro;
  sensors_event_t temp;

  mpu.getEvent(&accel, &gyro, &temp);

  Serial.print("Accel X: ");
  Serial.print(accel.acceleration.x);
  Serial.print(" Y: ");
  Serial.print(accel.acceleration.y);
  Serial.print(" Z: ");
  Serial.println(accel.acceleration.z);

  Serial.print("Gyro X: ");
  Serial.print(gyro.gyro.x);
  Serial.print(" Y: ");
  Serial.print(gyro.gyro.y);
  Serial.print(" Z: ");
  Serial.println(gyro.gyro.z);

  Serial.print("Temperature: ");
  Serial.println(temp.temperature);

  Serial.println("-------------------");
  delay(500);
}

הסבר הקוד

הקוד מפעיל את החיישן דרך ספריית Adafruit_MPU6050 וקורא שלושה סוגי נתונים:
תאוצה, ג׳ירוסקופ וטמפרטורה.

ערכי התאוצה מתקבלים בצירי X, Y, Z. ערכי הג׳ירוסקופ מציגים את מהירות הסיבוב סביב כל ציר.
הנתונים מוצגים ב-Serial Monitor כל חצי שנייה.

חיבור GY-521 ל-ESP32

הערה חשובה לפני החיבור

ESP32 עובד ברמת לוגיקה של 3.3V. לכן מומלץ להזין את מודול GY-521 מ-3V3 כאשר עובדים עם ESP32.

אם משתמשים במודול GY-521 שמוזן מ-5V, יש לוודא שקווי SDA ו-SCL אינם מוציאים רמת מתח גבוהה מדי עבור ESP32.
בחיבור בסיסי ובטוח מומלץ להשתמש ב-3V3.

GY-521ESP32
VCC3V3
GNDGND
SDAGPIO21
SCLGPIO22

הסבר חיבור

ב-ESP32 ניתן להשתמש בפיני I2C נפוצים: GPIO21 עבור SDA ו-GPIO22 עבור SCL.
החיבור מתבצע דרך אותו ממשק I2C כמו ב-Arduino, אך חשוב לשמור על רמת מתח מתאימה ל-ESP32.

קוד ESP32 בסיסי לקריאת החיישן

#include <Wire.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>

Adafruit_MPU6050 mpu;

void setup() {
  Serial.begin(115200);

  Wire.begin(21, 22);

  if (!mpu.begin()) {
    Serial.println("MPU6050 not found");
    while (1) {
      delay(10);
    }
  }

  Serial.println("MPU6050 ready");
}

void loop() {
  sensors_event_t accel;
  sensors_event_t gyro;
  sensors_event_t temp;

  mpu.getEvent(&accel, &gyro, &temp);

  Serial.print("Accel X: ");
  Serial.print(accel.acceleration.x);
  Serial.print(" Y: ");
  Serial.print(accel.acceleration.y);
  Serial.print(" Z: ");
  Serial.println(accel.acceleration.z);

  Serial.print("Gyro X: ");
  Serial.print(gyro.gyro.x);
  Serial.print(" Y: ");
  Serial.print(gyro.gyro.y);
  Serial.print(" Z: ");
  Serial.println(gyro.gyro.z);

  Serial.print("Temperature: ");
  Serial.println(temp.temperature);

  Serial.println("-------------------");
  delay(500);
}

הסבר הקוד

הקוד עבור ESP32 דומה לקוד Arduino, אך כאן מגדירים במפורש את פיני I2C בעזרת
Wire.begin(21, 22). לאחר מכן הקוד קורא את נתוני התאוצה, הג׳ירוסקופ והטמפרטורה.

פרויקט לדוגמה

ייצוב ציר אחד עם GY-521 ו-Servo Motor

בפרויקט זה משתמשים בחיישן GY-521 / MPU-6050 יחד עם Servo Motor כדי לבנות מערכת ייצוב פשוטה בציר אחד.
החיישן מזהה שינוי בזווית, והבקר משתמש בנתונים כדי להזיז את ה-Servo ולשמור על מיקום יציב יותר.
זהו פרויקט מתאים ללמידת Motion Sensing, בקרת זווית ומערכות ייצוב בסיסיות.

מעבר לפרויקט לדוגמה

סיכום

חיישן GY-521 הוא מודול שימושי למדידת תנועה, תאוצה וסיבוב.
בעזרת Arduino או ESP32 ניתן לקרוא ממנו נתוני Accelerometer ו-Gyroscope דרך I2C
ולהשתמש בהם בפרויקטים של רובוטיקה, איזון, מדידת זווית, רטט ורחפנים.

קישור חזרה למוצר

דילוג לתוכן