מדריך חיבור חיישן מרחק לייזר GY-530 VL53L0X ל-Arduino ו-ESP32:
במדריך זה נלמד כיצד לחבר מודול חיישן מרחק GY-530 המבוסס על VL53L0X
לבקר Arduino UNO ולבקר ESP32.
נראה איך החיישן מודד מרחק באמצעות טכנולוגיית Time-of-Flight,
איך לקרוא את התוצאה במילימטרים דרך I2C,
ואיך להשתמש בנתונים בפרויקטים של רובוטיקה וזיהוי מכשולים.
מהו חיישן GY-530 VL53L0X?
GY-530 הוא מודול המבוסס על חיישן המרחק VL53L0X.
החיישן משתמש בלייזר אינפרא-אדום בלתי נראה ובטכנולוגיית Time-of-Flight,
או בקיצור ToF, כדי למדוד את המרחק אל אובייקט.
בניגוד לחיישן אולטרסוניק שמודד את זמן החזרת גל הקול,
VL53L0X שולח פולסי אור אינפרא-אדום ומודד את זמן החזרה שלהם.
התוצאה מתקבלת כערך מרחק דיגיטלי ונקראת על ידי הבקר דרך תקשורת I2C.
החיישן מתאים לפרויקטים של רובוטיקה, זיהוי מכשולים, מדידת מפלס,
זיהוי נוכחות, מדידת מרחק ומערכות אוטומציה עם Arduino ו-ESP32.
בתנאים מתאימים החיישן יכול למדוד מרחקים של עד כ-2 מטר.
הטווח בפועל תלוי בתאורת הסביבה, במצב המדידה, בגודל האובייקט
וביכולת שלו להחזיר אור אינפרא-אדום.
איך החיישן עובד?
בתוך VL53L0X נמצא מקור אור מסוג VCSEL שפולט אור אינפרא-אדום באורך גל של 940 ננומטר.
האור פוגע באובייקט וחלק ממנו חוזר אל החיישן.
מערך גלאים מסוג SPAD קולט את האור החוזר,
והמעבד הפנימי מחשב את זמן המעוף של הפוטונים.
לפי הזמן הזה מתקבל המרחק אל האובייקט.
- VCSEL — מקור האור האינפרא-אדום.
- SPAD — מערך גלאים לקליטת הפוטונים החוזרים.
- I2C — ממשק התקשורת עם Arduino או ESP32.
- XSHUT — כניסה לכיבוי ולאיפוס החיישן.
- GPIO1 — יציאת פסיקה אופציונלית.
עבור פרויקט בסיסי משתמשים בדרך כלל רק בארבעה חיבורים:
VIN, GND, SDA ו-SCL.
פינים במודול GY-530
| פין | תפקיד |
|---|---|
| VIN | מתח הזנה למודול |
| GND | אדמה |
| SDA | קו נתונים בתקשורת I2C |
| SCL | קו שעון בתקשורת I2C |
| XSHUT | כיבוי ואיפוס החיישן, פעיל במצב LOW |
| GPIO1 | יציאת פסיקה אופציונלית |
רכיבים נדרשים
- מודול חיישן מרחק GY-530 VL53L0X
- Arduino UNO או ESP32
- Breadboard
- חוטי Dupont
- כבל USB
- Arduino IDE
- ספריית Adafruit VL53L0X
חיבור GY-530 VL53L0X ל-Arduino UNO

הערה חשובה לפני החיבור
קיימות מספר גרסאות של מודולי GY-530.
בחלק מהגרסאות קיימים מייצב מתח והתאמת רמות לוגיקה,
ובגרסאות אחרות מבנה הלוח עשוי להיות שונה.
לפני חיבור VIN ל-5V יש לוודא שמפרט המודול הספציפי מאשר הזנה של 5V.
אם אין מידע ברור על גרסת הלוח, עדיף להשתמש במתח 3.3V
ולוודא שרמות התקשורת מתאימות לבקר.
| GY-530 | Arduino UNO |
| VIN | 5V רק אם גרסת המודול מאשרת זאת |
| GND | GND |
| SDA | A4 |
| SCL | A5 |
הסבר חיבור
ב-Arduino UNO קווי I2C נמצאים בפינים A4 ו-A5.
מחברים את SDA של החיישן ל-A4 ואת SCL ל-A5.
עבור חיישן יחיד אין צורך להשתמש ב-XSHUT או ב-GPIO1.
הספרייה מתקשרת עם החיישן ישירות דרך I2C.
לאחר החיבור יש לפתוח את Library Manager ב-Arduino IDE
ולהתקין את הספרייה Adafruit VL53L0X.
קוד Arduino בסיסי למדידת מרחק
#include <Wire.h>
#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
void setup() {
Serial.begin(115200);
if (!lox.begin()) {
Serial.println("VL53L0X was not found");
while (1);
}
Serial.println("VL53L0X sensor ready");
}
void loop() {
VL53L0X_RangingMeasurementData_t measure;
lox.rangingTest(&measure, false);
if (measure.RangeStatus != 4) {
Serial.print("Distance: ");
Serial.print(measure.RangeMilliMeter);
Serial.println(" mm");
} else {
Serial.println("Out of range");
}
delay(200);
}הסבר הקוד
בתחילת התוכנית הספרייה מנסה לזהות ולאתחל את החיישן.
אם החיישן אינו נמצא, התוכנית נעצרת ומוצגת הודעת שגיאה.
בכל מחזור מתבצעת מדידת מרחק חדשה.
התוצאה נמצאת במשתנה RangeMilliMeter ומתקבלת ישירות במילימטרים.
כאשר החיישן אינו מצליח לקבל מדידה תקינה,
לדוגמה כאשר האובייקט רחוק מדי,
מוצגת ההודעה Out of range.
כתובת I2C של החיישן
בספריות Arduino הכתובת הרגילה של VL53L0X היא:
0x29
במסמכים טכניים מסוימים ניתן לראות גם את הערך 0x52.
זו אינה כתובת של חיישן אחר:
0x29 היא כתובת 7-bit שבה משתמשות ספריות Arduino,
ו-0x52 היא אותה כתובת כאשר היא מוצגת בפורמט 8-bit.
אם החיישן אינו מזוהה, ניתן להריץ I2C Scanner
ולבדוק אם מופיע התקן בכתובת 0x29.
חיבור GY-530 VL53L0X ל-ESP32

הערה חשובה לפני החיבור
ESP32 עובד ברמת לוגיקה של 3.3V.
לכן בחיבור ל-ESP32 מומלץ להזין את המודול מ-3V3
ולשמור על רמות תקשורת שמתאימות לבקר.
| GY-530 | ESP32 |
| VIN | 3V3 |
| GND | GND |
| SDA | GPIO21 |
| SCL | GPIO22 |
הסבר חיבור
ב-ESP32 מקובל להשתמש ב-GPIO21 עבור SDA וב-GPIO22 עבור SCL.
שני הפינים מוגדרים בקוד לפני אתחול החיישן.
החיישן מתקשר עם ESP32 דרך I2C,
ולכן אין צורך להשתמש בכניסה אנלוגית או למדוד פולס כמו בחיישן HC-SR04.
קוד ESP32 בסיסי למדידת מרחק
#include <Wire.h>
#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
void setup() {
Serial.begin(115200);
Wire.begin(21, 22);
if (!lox.begin(0x29, false, &Wire)) {
Serial.println("VL53L0X was not found");
while (1);
}
Serial.println("VL53L0X sensor ready");
}
void loop() {
VL53L0X_RangingMeasurementData_t measure;
lox.rangingTest(&measure, false);
if (measure.RangeStatus != 4) {
Serial.print("Distance: ");
Serial.print(measure.RangeMilliMeter);
Serial.println(" mm");
} else {
Serial.println("Out of range");
}
delay(200);
}הסבר הקוד
הקוד עבור ESP32 עובד באותו עיקרון כמו הקוד עבור Arduino.
ההבדל העיקרי הוא הגדרה מפורשת של פיני I2C באמצעות Wire.begin.
הכתובת 0x29 מועברת לפונקציית האתחול,
והחיישן מחזיר את המרחק במילימטרים.
מצבי מדידה
VL53L0X מאפשר להשתמש בהגדרות שונות לפי הצורך בפרויקט.
לדוגמה, ניתן לבחור בין מצב רגיל, טווח ארוך,
מדידה מהירה או דיוק גבוה.
- Default — איזון בין מהירות, טווח ודיוק.
- Long Range — מיועד לטווח גדול יותר בתנאים מתאימים.
- High Speed — מקצר את זמן המדידה.
- High Accuracy — משתמש בזמן מדידה ארוך יותר לשיפור הדיוק.
אין מצב אחד שמתאים לכל פרויקט.
לדוגמה, רובוט שנוסע במהירות עשוי להעדיף מדידות מהירות,
בעוד שמדידה של אובייקט קבוע יכולה להשתמש בזמן מדידה ארוך יותר.
שימוש במספר חיישנים
כל חיישני VL53L0X מתחילים בדרך כלל עם אותה כתובת I2C.
לכן אי אפשר לחבר מספר חיישנים לאותו קו I2C ולהפעיל את כולם מיד באותה כתובת.
הפתרון הוא להשתמש בפין XSHUT:
מכבים את כל החיישנים, מפעילים בכל פעם חיישן אחד,
נותנים לו כתובת חדשה דרך התוכנה,
ולאחר מכן מפעילים את החיישן הבא.
עבור חיישן יחיד אין צורך לחבר את XSHUT.
טיפים לעבודה נכונה
- יש לשמור על החלק האופטי של החיישן נקי מאבק ולכלוך.
- אין לכסות את אזור הלייזר או הגלאי בדבק אטום.
- עצמים כהים מאוד או קטנים יכולים להקטין את טווח המדידה.
- אור אינפרא-אדום חזק בסביבה יכול להשפיע על הטווח.
- יש להתקין את החיישן כך שהאובייקט הרצוי נמצא בתוך שדה הראייה.
- אם הקריאות קופצות, ניתן לבצע מספר מדידות ולחשב ממוצע.
- יש לבדוק את מתח ההזנה המתאים לגרסת מודול GY-530 הספציפית.
בטיחות הלייזר
VL53L0X משתמש בלייזר אינפרא-אדום בלתי נראה
ומסווג כמוצר Class 1 כאשר משתמשים בו בהתאם למפרט היצרן.
אין לפרק את החיישן, לשנות את המערכת האופטית
או לבצע שינוי שעלול להשפיע על פעולת מקור האור.
פרויקט לדוגמה
רכב אוטונומי להימנעות ממכשולים עם VL53L0X

בפרויקט זה בונים רכב אוטונומי המבוסס על Arduino UNO
וחיישן מרחק VL53L0X.
החיישן מודד את המרחק לפני הרכב,
והבקר משתמש בנתונים כדי לזהות מכשולים ולשנות את תנועת המנועים.
כך הרכב יכול לנוע באופן עצמאי ולהגיב לעצמים שנמצאים במסלול שלו.
מעבר לחיישן עצמו, הפרויקט כולל Arduino UNO,
מערכת הנעה, מנועים ובקרת תנועה,
ולכן הוא מתאים ללמידה על חיישני ToF,
רובוטיקה וקבלת החלטות לפי נתוני מרחק.
סיכום
מודול GY-530 VL53L0X הוא חיישן מרחק מתקדם המבוסס על טכנולוגיית Time-of-Flight.
הוא מאפשר לקבל מדידת מרחק דיגיטלית במילימטרים דרך תקשורת I2C,
ללא צורך למדוד מתח אנלוגי או לחשב משך פולס Echo.
בעזרת Arduino או ESP32 ניתן להשתמש בחיישן בפרויקטים של רובוטיקה,
זיהוי מכשולים, מדידת מפלס, זיהוי נוכחות ומערכות אוטומציה.
כדי לקבל תוצאות טובות חשוב לבחור מצב מדידה מתאים,
לשמור על אזור אופטי נקי ולבדוק את מתח ההזנה המתאים לגרסת מודול GY-530 שבה משתמשים.