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

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

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

מערכת ראדאר ואזעקה — חיישן חניה שבניתם לבד

מה בשיעור?

  • להסביר איך מערכת אזעקת קרבה מזהה שמשהו מתקרב
  • לחבר יחד חיישן אולטרסוני, מסך LCD, נורית וזמזם
  • להשתמש בבלוק ultrasonic(cm) כמספר בתוך תנאי
  • לבנות בלוק if/else שמפעיל ומכבה שני רכיבים יחד
  • לכתוב שתי שורות שונות על שתי השורות של המסך
  • לשנות את סף האזעקה ולבדוק מה קורה

מה נלמד כאן

  • מה זו מערכת אזעקת קרבה ואיפה פוגשים אותה בחיים
  • איך מחברים חמישה רכיבים שלמדנו לפרויקט אחד
  • הבלוק ultrasonic(cm) — מספר שאפשר להשוות אליו
  • בלוק if / else שמפעיל אזעקה ומכבה אותה
  • להציג מרחק חי על מסך LCD1602

למה המכונית מצפצפת כשאתם חונים

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

ילד נוהג במכונית ומקבל התרעת קרבה מחיישן החניה

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

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


הרכיבים

החיישן האולטרסוני

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

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

מסך LCD1602

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

הזמזם האקטיבי והנורית

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


התרשים החשמלי

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

תרשים חשמלי — מסך LCD1602 על SDA ו-SCL, חיישן אולטרסוני על IO17 ו-IO18, ונורית LED דרך נגד 200 אוהם ל-IO16

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

תרשים חשמלי של הזמזם — פין IO5 דרך נגד 1 קילואוהם אל טרנזיסטור S8050 שמפעיל את הזמזם

אז הסיכום קצר וכדאי לזכור אותו:

הרכיב פין ב-ESP32
חיישן אולטרסוני — Trig 17
חיישן אולטרסוני — Echo 18
זמזם אקטיבי 5
נורית LED (דרך נגד) 16
מסך LCD1602 SDA ו-SCL

החיבור

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

  1. קודם מתח: קו אדום ל-5V וקו שחור ל-GND לאורך לוח הניסוי. כל רכיב יתחבר לקווים האלה.
  2. עכשיו המסך — ארבעה חוטים: VCC, GND, SDA, SCL.
  3. אחר כך החיישן האולטרסוני — VCC ל-5V, GND ל-GND, Trig לפין 17, Echo לפין 18.
  4. הנורית עם נגד 220Ω מפין 16, והרגל הקצרה ל-GND.
  5. ולבסוף הזמזם — שימו לב לסימן הפלוס שעליו.

חיבור מלא על לוח הניסוי — מסך LCD, חיישן אולטרסוני, זמזם ונורית מחוברים ללוח ESP32

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


הבלוקים

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

תוכנית הבלוקים המלאה של מערכת הראדאר ב-ACECode

הבלוק שמודד

ultrasonic(cm) trig [17] echo [18] הוא הבלוק הירוק. שימו לב לצורה שלו: הוא עגול, לא מלבני. בלוק עגול הוא ערך — הוא לא עושה פעולה בעצמו, הוא נכנס לתוך חור בבלוק אחר ומביא לשם מספר. בדיוק כמו שהמילה ״שבע״ לא עושה כלום לבד, אבל בתוך משפט היא אומרת כמה.

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

השורה שמציגה

LCD x [0] y [0] show string (join [Dist:] (join [ultrasonic...] [cm]))

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

x ו-y הם המיקום על המסך. x=0 הוא התו הראשון משמאל, y=0 היא השורה העליונה ו-y=1 היא השורה התחתונה.

הבלוק שמחליט

if <(ultrasonic(cm) trig [17] echo [18]) < (15)> then … else …

לבלוק if / else יש חור משושה (בצורת יהלום מוארך) בראש. לשם נכנסים רק בלוקים של ״נכון או לא נכון״. הבלוק שנמצא שם הוא הסימן < (קטן מ-), ובתוכו משמאל נמצא החיישן ומימין המספר 15.

תרגמו את זה למילים: ״אם המרחק שהחיישן מודד קטן מ-15 סנטימטרים.״

  • ב-then — החלק העליון — יש set digital pin [5] to [high] (הזמזם מצפצף), set digital pin [16] to [high] (הנורית נדלקת), ו-LCD x [0] y [1] show string [WARNING !!!].
  • ב-else — החלק התחתון — אותם שני בלוקים בדיוק, אבל עם [low] במקום [high], והמסך כותב Safe Distance.

זה החלק החשוב: else הוא לא קישוט. בלי לכבות במפורש, הזמזם היה ממשיך לצפצף לנצח אחרי ההתרעה הראשונה.

הבלוק שמחכה

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

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


מריצים

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

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

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

מערכת הראדאר עובדת — המסך מציג מרחק בטוח, וכשיד מתקרבת מופיעה התרעה

מעל 15 ס״מ המסך אומר Safe Distance והכול שקט. ברגע שחוצים את הקו — הנורית נדלקת, הזמזם מצפצף, והמסך צועק WARNING !!!.


מה קרה כאן

בניתם מכשיר אמיתי, מהסוג שנמכר בחנויות. ומה שמרשים בו הוא לא רכיב מסוים אלא השרשרת:

מודדים → מציגים → משווים לסף → מחליטים → מפעילים.

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


תרגילים

  1. שנו את הסף. בבלוק ה-if, החליפו את המספר 15 ל-30. עכשיו האזעקה תתחיל כבר מחצי מטר. מדדו עם סרגל — האם המספר על המסך מדויק?

  2. הודעה משלכם. בבלוק LCD x [0] y [1] show string, החליפו את WARNING !!! בטקסט שלכם באנגלית — למשל STOP THE CAR. זכרו: מקסימום 16 תווים בשורה.

  3. תגובה מהירה. שנו את wait [1000] milliseconds ל-200. המערכת תגיב פי חמישה יותר מהר. מה קרה למסך? לפעמים מהיר יותר הוא לא טוב יותר.

  4. שתי רמות התרעה. הכניסו בלוק if / else נוסף בתוך החלק של else: אם המרחק קטן מ-40 אבל גדול מ-15 — רק הנורית תידלק, בלי הזמזם. ככה בניתם ״התקרבתם״ ו״עצרו!״ בשתי רמות, בדיוק כמו במכונית אמיתית.

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

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

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