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

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

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

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

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

הבלוק שמודד
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 !!!.
מה קרה כאן
בניתם מכשיר אמיתי, מהסוג שנמכר בחנויות. ומה שמרשים בו הוא לא רכיב מסוים אלא השרשרת:
מודדים → מציגים → משווים לסף → מחליטים → מפעילים.
השרשרת הזאת היא הלב של כמעט כל מכשיר חכם בעולם. מזגן מודד טמפרטורה ומחליט מתי לעבוד. שער חניון מודד מרחק ומחליט מתי לעצור. אתם בדיוק בניתם אחד כזה, בשבעה בלוקים.
תרגילים
שנו את הסף. בבלוק ה-if, החליפו את המספר 15 ל-30. עכשיו האזעקה תתחיל כבר מחצי מטר. מדדו עם סרגל — האם המספר על המסך מדויק?
הודעה משלכם. בבלוק LCD x [0] y [1] show string, החליפו את
WARNING !!!בטקסט שלכם באנגלית — למשלSTOP THE CAR. זכרו: מקסימום 16 תווים בשורה.תגובה מהירה. שנו את wait [1000] milliseconds ל-200. המערכת תגיב פי חמישה יותר מהר. מה קרה למסך? לפעמים מהיר יותר הוא לא טוב יותר.
שתי רמות התרעה. הכניסו בלוק if / else נוסף בתוך החלק של else: אם המרחק קטן מ-40 אבל גדול מ-15 — רק הנורית תידלק, בלי הזמזם. ככה בניתם ״התקרבתם״ ו״עצרו!״ בשתי רמות, בדיוק כמו במכונית אמיתית.


