מדריך חיבור חיישן מרחק אולטרסוניק 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-SR04 | Arduino UNO |
| VCC | 5V |
| GND | GND |
| Trig | D9 |
| Echo | D10 |
הסבר חיבור
ב-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-SR04 | ESP32 |
| VCC | 5V / VIN |
| GND | GND |
| Trig | GPIO5 |
| Echo | GPIO18 דרך מחלק מתח |
הסבר חיבור
ב-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.