דלגו לתוכן המרכזי
KitLab
שיעור קודם
חיישן אולטרסוני — מודדים מרחק עם הד· 16 / 41
חיישן אולטרסוני — מודדים מרחק עם הד
🎬

הסרטון בדרך אלינו

בינתיים — התמלול המלא של השיעור מחכה לכם למטה

חיישן אולטרסוני — מודדים מרחק עם הד

מה בשיעור?

  • להסביר מה זה גל על-קולי ולמה אנחנו לא שומעים אותו
  • לתאר איך מודדים מרחק לפי זמן ההד
  • לזהות את ארבע הרגליים VCC, Trig, Echo ו-GND ולחבר אותן
  • להשתמש בבלוק ultrasonic ולהגדיר בו שני פינים
  • להדפיס מרחק בסנטימטרים למסך הסריאל
  • לדעת באיזה טווח וזווית החיישן אמין ומתי הוא טועה

מה נלמד כאן

  • מה זה גל על-קולי ואיך עטלפים משתמשים בו
  • איך אפשר למדוד מרחק בלי לגעת בכלום
  • ארבע הרגליים של החיישן — ולמה שתיים מהן צריכות פין משלהן
  • הבלוק ultrasonic(cm) trig [5] echo [16]
  • לבנות מד מרחק שמדווח כל שנייה

איך עטלף רואה בחושך

עטלף עף בלילה במערה חשוכה לגמרי, בין סלעים ובין עטלפים אחרים, ותופס פרפר קטן באוויר. בלי אור. איך?

עטלף שולח גלי על-קול אל פרפר, והגלים חוזרים אליו כהד

הוא צועק. צעקה חדה מאוד, גבוהה כל כך שאוזן אנושית לא קולטת אותה. הצעקה מתפשטת באוויר, פוגעת בפרפר, וחוזרת אליו כהד. העטלף מודד כמה זמן לקח להד לחזור — וככה הוא יודע כמה רחוק הפרפר נמצא. הד שחוזר מהר = משהו קרוב. הד שחוזר לאט = משהו רחוק.

זה בדיוק הרעיון של החיישן שנחבר היום. הוא לא מכשיר מסובך — הוא עטלף קטן מפלסטיק כחול.

בשיעור הזה נבנה מד מרחק שמדווח לנו, כל שנייה, כמה סנטימטרים יש בינו לבין המכשול שמולו.


הרכיבים

מה זה גל על-קולי

אוזן אנושית שומעת צלילים עד בערך 20,000 הרץ (20 קילוהרץ). הרץ אומר ״כמה פעמים בשנייה הגל רוטט״. ככל שהמספר גבוה יותר, הצליל דק וגבוה יותר.

גל על-קולי (אולטרסאונד) הוא גל קול שרוטט מהר יותר מזה. הוא באמת קיים, הוא באמת נע באוויר — אנחנו פשוט לא בנויים לשמוע אותו. החיישן שלנו עובד ב-40,000 הרץ, פי שניים מהגבול שלנו.

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

מודול HC-SR04

הרכיב שלנו הוא לוח כחול קטן עם שני גלילי מתכת שנראים כמו זוג עיניים:

מודול אולטרסוני HC-SR04 עם שני גלילי מתכת וארבע רגליים מסומנות vcc, trig, echo ו-gnd

הם לא עיניים ולא רמקולים רגילים. אחד מהם — המסומן T — הוא המשדר ששולח את הצעקה. השני — R — הוא המקלט שמקשיב להד.

למטה יש ארבע רגליים:

רגל התפקיד
VCC חשמל. חייב 5V — לא 3.3
Trig ההדק. הלוח אומר דרכו ״שגר עכשיו״
Echo ההד. דרכו החיישן עונה ״ההד חזר״
GND אדמה

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

מה קורה בפועל

תרשים שמראה משדר ששולח גלים אל מכשול, והגלים המוחזרים חוזרים אל המקלט

כל מדידה בנויה משלושה שלבים שקורים תוך פחות מאלפית השנייה:

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

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

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

מה החיישן יודע ומה לא

מה הערך
מתח 5 וולט
תדר 40 קילוהרץ
טווח 2 ס״מ עד 450 ס״מ
זווית גילוי בערך 15 מעלות

שתי שורות כאן שוות תשומת לב. טווח מינימלי של 2 ס״מ — אם תקרבו את היד ממש צמוד, המספרים ישתגעו, כי ההד חוזר לפני שהחיישן סיים לשלוח. ו-זווית של 15 מעלות — החיישן רואה רק בחרוט צר מולו, לא לצדדים. חפץ שנמצא בצד פשוט לא קיים מבחינתו.

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


הבלוק

בלוק אחד עושה את כל העבודה. הוא נמצא בקטגוריה Robots, כחול ובעל קצוות מעוגלים:

הבלוק הכחול ultrasonic עם תיבת trig על פין 5 ותיבת echo על פין 16

ultrasonic(cm) trig [5] echo [16]

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

שתי תיבות בחירה:

  1. trig [5] — לאיזה פין חיברתם את רגל ה-Trig
  2. echo [16] — לאיזה פין חיברתם את רגל ה-Echo

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

הכיתוב (cm) בשם הבלוק אומר שהתשובה כבר מגיעה בסנטימטרים. לא צריך להמיר כלום.


החיבור

מנתקים חשמל לפני שנוגעים. הנה תרשים החשמל:

תרשים חשמלי של החיישן האולטרסוני: VCC לחמישה וולט, Trig לפין IO05, Echo לפין IO16 ו-GND לאדמה

  • VCC5V
  • Trig → פין IO5
  • Echo → פין IO16
  • GNDGND

ארבעה חוטים, ישר מהחיישן ללוח — לא צריך לוח ניסוי ולא צריך נגדים:

החיישן האולטרסוני מחובר בארבעה חוטים אל לוח ה-ESP32

⚠️ VCC חייב להיות 5V. אם תחברו אותו ל-3.3V החיישן אולי ידלק, אבל המדידות יהיו רעועות או שלא יהיו בכלל. זאת התקלה השנייה הכי נפוצה כאן.

ועוד טיפ מעשי: תעמידו את החיישן ישר, כששתי ה״עיניים״ פונות אופקית קדימה. אם הוא נשען אלכסונית, הוא ימדוד את המרחק לשולחן במקום את המרחק ליד שלכם.


הבלוקים

תוכנית הבלוקים המלאה: לולאת forever עם בלוק serial print שמחבר את המילה Distance לקריאת החיישן ולסיומת cm

התוכנית קצרה ואפשר לקרוא אותה מלמעלה למטה.

start the program — הכובע הצהוב. מתחת אליו הכול מתחיל כשהלוח נדלק.

forever — הבלוק הכתום עם הפה הפתוח בצד. כל מה שמניחים בתוכו חוזר על עצמו בלי סוף.

serial print [115200] (…) — הבלוק הכחול ששולח שורת טקסט אל המחשב דרך כבל ה-USB. המספר 115200 הוא קצב השידור, וחייב להיות זהה למספר שבחלון מסך הסריאל. אם הם שונים — תראו ג׳יבריש.

בתוך החור העגול שלו יושבים שני בלוקי join ירוקים, אחד בתוך השני:

  • ה-join החיצוני מדביק את המילה Distance: למה שיוצא מהפנימי
  • ה-join הפנימי מדביק את ultrasonic(cm) trig [5] echo [16] לאותיות cm

התוצאה היא שורה קריאה כמו Distance:13.05cm במקום סתם 13.05. שלושה חלקים — טקסט, מספר ויחידה — מחוברים לשורה אחת.

wait (1) seconds — המתנה של שנייה. בלעדיה היו נשלחות אלפי שורות בשנייה, והמסך היה בלתי קריא לחלוטין.


מריצים

⬇ להורדת הקובץ Ultrasonic.sb3 — גוררים אותו לתוך ACECode ולוחצים Upload.

ההסבר המלא על צריבה נמצא בשיעור ההתקנה.

אחרי הצריבה פותחים את מסך הסריאל ומוודאים שקצב השידור מוגדר ל-115200. תוך שנייה מתחילות לרוץ שורות:

מסך סריאל עם שורות Distance בסנטימטרים, ומתחתיו תמונה של החיישן מחובר ללוח

עכשיו תזיזו את כף היד מול החיישן. תקרבו — המספרים יורדים. תרחיקו — עולים. תורידו את היד לגמרי והמספר יקפוץ למשהו גדול, כי ההד חוזר מהקיר שמאחור.

שימו לב לשורה הראשונה בצילום: 281.97. היא נמדדה לפני שמישהו שם יד — זה המרחק לקיר הרחוק בחדר.

אם כל המספרים אפס: כמעט תמיד זה החלפה בין Trig ל-Echo, או VCC שמחובר ל-3.3V במקום ל-5V.

אם המספרים קופצים בפראות: תבדקו שהיד לא צמודה מדי (מתחת ל-2 ס״מ), ושהחיישן עומד ישר.


מה קרה כאן

הבלוק הכחול ultrasonic עם פיני trig ו-echo

ultrasonic(cm) trig [5] echo [16] — מאחורי הבלוק הקטן הזה מסתתר תהליך שלם: הלוח מדליק את Trig לרגע, החיישן משגר שמונה פולסים ומקשיב, ההד חוזר, רגל ה-Echo נדלקת למשך זמן הנסיעה, והלוח מחשב מרחק. כל זה קורה בפחות מאלפית השנייה, ואתם מקבלים מספר אחד נקי בסנטימטרים.

וזה בדיוק הכוח של בלוקים: מישהו כבר עשה את החישוב הקשה, ואתם מקבלים את התוצאה.

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


תרגילים

1. דיווח מהיר. שנו את wait (1) seconds ל-0.2. עכשיו המספרים מתעדכנים חמש פעמים בשנייה, וקל בהרבה לראות את השינוי כשמזיזים את היד.

2. סרגל אמיתי. קחו סרגל, שימו ספר במרחק 10 ס״מ מהחיישן, ובדקו מה כתוב במסך. ואז 20 ס״מ, ואז 30. תרשמו את ההפרשים. האם החיישן מדויק לאורך כל הטווח, או שהוא סוטה יותר במרחקים גדולים?

3. בדיקת חומרים. מדדו את אותו מרחק בדיוק מול שלושה דברים: ספר קשיח, כרית וסוודר. תראו במו עיניכם שמשטח רך נותן מדידה פחות יציבה — כי הוא בולע חלק מההד.

4. אתגר — החלפת פינים. העבירו את Trig ל-IO18 ואת Echo ל-IO19, ועדכנו את שתי תיבות הבחירה בבלוק ultrasonic. ואז, בכוונה, החליפו ביניהן — שימו 19 ב-trig ו-18 ב-echo. תראו מיד מה קורה, ותזכרו את זה לפעם הבאה שהמדידה תחזיר אפס.

🧰 הרכיבים לשיעור הזה

רוצים את חומרי הקורס והעדכונים?

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