מדריך חיבור חיישן מרחק אולטרסוניק HC-SR04 ל-Arduino ו-ESP32:

במדריך זה נלמד כיצד לחבר חיישן מרחק אולטרסוניק HC-SR04 לבקר Arduino UNO ולבקר ESP32.
נראה איך למדוד מרחק ללא מגע, איך לחשב את המרחק לפי זמן החזרת ההד,
ואיך להציג את הערך ב-Serial Monitor.

מהו חיישן HC-SR04?

HC-SR04 הוא חיישן מרחק אולטרסוניק. החיישן שולח גל קול בתדר גבוה,
מחכה להחזרת ההד מהעצם שמולו, ומאפשר לחשב את המרחק לפי זמן החזרה.

החיישן מתאים לפרויקטים של רובוטיקה, זיהוי מכשולים, מדידת מרחק,
מערכות חניה, מדידת מפלס מים וניסויים עם Arduino ו-ESP32.

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

כדי להתחיל מדידה, הבקר שולח לפין Trig פולס קצר.
לאחר מכן החיישן שולח גל אולטרסוניק ומחזיר בפין Echo פולס שאורך הזמן שלו תלוי במרחק מהעצם.

החישוב הבסיסי הוא:

  • הגל יוצא מהחיישן, פוגע בעצם וחוזר חזרה.
  • הזמן שנמדד הוא זמן הלוך וחזור.
  • לכן מחלקים את התוצאה ב-2 כדי לקבל את המרחק בכיוון אחד.

בפרויקטים עם Arduino משתמשים לרוב בנוסחה פשוטה:
משך פולס Echo במיקרו-שניות חלקי 58 נותן מרחק משוער בסנטימטרים.

פינים במודול HC-SR04

פיןתפקיד
VCCמתח הזנה למודול, בדרך כלל 5V
Trigכניסת Trigger להפעלת מדידה
Echoיציאת Echo למדידת זמן החזרת ההד
GNDאדמה

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

  • חיישן מרחק אולטרסוניק HC-SR04
  • Arduino UNO או ESP32
  • Breadboard
  • חוטי Dupont
  • כבל USB
  • עבור ESP32: שני נגדים למחלק מתח עבור פין Echo

חיבור HC-SR04 ל-Arduino UNO

HC-SR04Arduino UNO
VCC5V
GNDGND
TrigD9
EchoD10

הסבר חיבור

ב-Arduino UNO מחברים את פין Trig לפין דיגיטלי שיוציא פולס קצר,
ואת פין Echo לפין דיגיטלי שימדוד את משך הפולס החוזר.

מכיוון ש-Arduino UNO עובד בדרך כלל בלוגיקה של 5V, ניתן לחבר את Echo ישירות לפין דיגיטלי של Arduino.

קוד Arduino בסיסי למדידת מרחק

const int trigPin = 9;
const int echoPin = 10;

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

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH, 30000);

  if (duration == 0) {
    Serial.println("No echo detected");
  } else {
    float distanceCm = duration / 58.0;

    Serial.print("Distance: ");
    Serial.print(distanceCm);
    Serial.println(" cm");
  }

  delay(500);
}

הסבר הקוד

הקוד שולח פולס קצר לפין Trig, ואז מודד כמה זמן פין Echo נשאר במצב HIGH.
משך הפולס מייצג את זמן ההלוך והחזור של גל הקול.

לאחר מכן הקוד מחלק את משך הזמן ב-58 כדי לקבל מרחק משוער בסנטימטרים.
אם לא מתקבל Echo בזמן שהוגדר, הקוד מציג הודעה שלא התקבל החזר.

חיבור HC-SR04 ל-ESP32

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

מודול HC-SR04 עובד בדרך כלל עם מתח הזנה של 5V, ופין Echo יכול להחזיר אות ברמת 5V.
לעומת זאת, כניסות ESP32 מיועדות לרמת 3.3V.

לכן אין לחבר את Echo ישירות ל-ESP32. מומלץ להשתמש במחלק מתח פשוט כדי להוריד את רמת המתח.

מחלק מתח עבור Echo ל-ESP32

נגדחיבור
R1 = 10kΩבין Echo של HC-SR04 לבין GPIO18
R2 = 20kΩבין GPIO18 לבין GND

כך מתקבל מתח נמוך יותר בכניסה של ESP32, המתאים יותר לקריאה בטוחה.

HC-SR04ESP32
VCC5V / VIN
GNDGND
TrigGPIO5
EchoGPIO18 דרך מחלק מתח

הסבר חיבור

ב-ESP32 פין Trig מחובר לפין GPIO רגיל, לדוגמה GPIO5.
פין Echo מחובר ל-GPIO18 דרך מחלק מתח כדי להגן על כניסת ESP32.

אם משתמשים בלוח HC-SR04 שעובד ישירות ב-3.3V, ייתכן שלא יהיה צורך במחלק מתח,
אך במודול HC-SR04 הרגיל עדיף להתייחס ל-Echo כאות 5V ולהשתמש בהורדת מתח.

קוד ESP32 בסיסי למדידת מרחק

const int trigPin = 5;
const int echoPin = 18;

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

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH, 30000);

  if (duration == 0) {
    Serial.println("No echo detected");
  } else {
    float distanceCm = duration / 58.0;

    Serial.print("Distance: ");
    Serial.print(distanceCm);
    Serial.println(" cm");
  }

  delay(500);
}

הסבר הקוד

הקוד עבור ESP32 דומה לקוד Arduino.
ההבדל העיקרי הוא בחיבור החשמלי: יש להוריד את רמת המתח של Echo לפני הכניסה ל-ESP32.

הערך שמתקבל הוא מרחק משוער בסנטימטרים.
דיוק המדידה תלוי בזווית העצם, גודל העצם, פני השטח, רעשי סביבה וטמפרטורת האוויר.

טיפים לעבודה נכונה

  • לא מומלץ למדוד עצמים רכים מאוד או בעלי זווית חדה, כי ההד עלול לא לחזור היטב.
  • כדאי להמתין לפחות כמה עשרות מילישניות בין מדידות כדי למנוע הפרעות בין פולסים.
  • החיישן מתאים במיוחד למרחקים קצרים ובינוניים, לא למדידה מדויקת מאוד.
  • בעבודה עם ESP32 יש להגן על פין Echo בעזרת מחלק מתח או Level Shifter.

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

חיישן חניה עם HC-SR04 ו-Buzzer

בפרויקט זה משתמשים בחיישן HC-SR04 יחד עם Arduino ו-Buzzer כדי לבנות מערכת חניה בסיסית.
כאשר עצם מתקרב לחיישן, המערכת מפעילה צפצוף אזהרה.
ככל שהמרחק קטן יותר, ניתן לשנות את קצב הצפצוף כדי להתריע שהעצם קרוב מדי.

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

סיכום

חיישן HC-SR04 הוא מודול נוח למדידת מרחק ללא מגע בפרויקטים עם Arduino ו-ESP32.
בעזרת פיני Trig ו-Echo ניתן לחשב את המרחק לפי זמן החזרת ההד,
ולהשתמש במדידה בפרויקטים של רובוטיקה, זיהוי מכשולים, חיישן חניה או מדידת מפלס.

בעבודה עם ESP32 חשוב במיוחד לא לחבר את Echo ישירות לבקר כאשר המודול מוזן מ-5V.
יש להשתמש במחלק מתח או בהתאמת רמות מתח כדי לשמור על כניסות ESP32.

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

דילוג לתוכן