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

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

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

פנס רחוב חכם — נורית שנדלקת לבד כשחשוך

מה בשיעור?

  • להסביר איך פנס רחוב יודע לבד מתי להידלק
  • לקרוא מספר מחיישן האור בעזרת בלוק read analog pin
  • להבין מה זה סף (threshold) ואיך בוחרים אותו
  • להרכיב תנאי בתוך החריץ המשושה של בלוק if
  • להשתמש ב-if / else כדי לבחור בין שתי אפשרויות
  • לשנות את הסף כדי שהמנורה תהיה רגישה יותר או פחות

מה נלמד כאן

  • איך עובד פנס רחוב שנדלק לבד בחושך
  • לחבר יחד שני רכיבים שכבר הכרתם — חיישן אור ונורית
  • הבלוק if ... then ... else ולמה הוא נראה כמו מזלג
  • מה זה סף ואיך מספר אחד קובע מתי האור נדלק
  • לשנות את הסף ולראות מיד מה קרה

הפנס ברחוב לא מחכה לאף אחד

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

רחוב ביום ובלילה — פנסי הרחוב כבויים באור ודולקים בחושך

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

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

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


הרכיבים

חיישן האור (Photoresistor)

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

  • הרבה אור → ההתנגדות קטנה
  • מעט אור → ההתנגדות גדולה

הלוח לא יודע לקרוא התנגדות ישירות, אז מחברים את החיישן יחד עם נגד 10kΩ ומקבלים מחלק מתח. הנקודה שבאמצע — בין הנגד לחיישן — היא זו שמתחברת לפין 32 של הלוח.

תרשים המעגל — נגד 10 קילו-אוהם וחיישן אור בטור, והנקודה שביניהם מחוברת לפין 32

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

ככל שחשוך יותר — המספר גדול יותר.

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

הנורית

הנורית היא ה״מנורה״ שלנו. היא מחוברת דרך נגד 220Ω לפין 5. פין 5 על high — הנורית נדלקת. פין 5 על low — היא נכבית. בדיוק כמו בשיעור הראשון.


החיבור

חיבור על לוח הניסוי — נורית עם נגד 220 אוהם לפין 5, חיישן אור עם נגד 10 קילו-אוהם לפין 32

צריכים: לוח ESP32, לוח ניסוי, נורית אחת, חיישן אור אחד, נגד 220Ω ונגד 10kΩ.

  1. הנורית — הרגל הארוכה (פלוס) דרך נגד 220Ω אל פין 5. הרגל הקצרה אל GND.
  2. חיישן האור — רגל אחת אל 5V, דרך נגד 10kΩ. הרגל השנייה אל GND.
  3. הנקודה שבין הנגד לחיישן — חוט אל פין 32. זו הנקודה שהלוח מודד.
  4. חשמל ללוח הניסוי — פס אדום אל 5V, פס כחול אל GND.

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


הבלוקים

תוכנית הבלוקים — start the program, forever, ובתוכו if read analog pin 32 גדול או שווה ל-2000 then set digital pin 5 to high else set digital pin 5 to low

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

1. start the program

הכובע הצהוב שבראש הערימה. כל תוכנית ב-ACECode מתחילה ממנו. אפשר לחשוב עליו כמו על הכפתור ״התחל״ — מה שנמצא מתחתיו הוא מה שיקרה.

2. forever

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

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

3. if ... then ... else

הבלוק הזה הוא לב השיעור. יש לו חריץ משושה בראש — לשם נכנס התנאי — ושני פיות פתוחים:

  • הפה העליון (then) — מה לעשות אם התנאי נכון
  • הפה התחתון (else) — מה לעשות אם התנאי לא נכון

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

4. התנאי: read analog pin [32] >= [2000]

בתוך החריץ המשושה יושב בלוק ירוק בצורת משושה — בלוק ההשוואה >= (גדול או שווה). משמאלו נכנס בלוק כחול עגלגל:

read analog pin [32] — הבלוק שקורא את המספר מחיישן האור. התפריט הנפתח בוחר את הפין. אצלנו 32, כי לשם חיברנו את החיישן. אם תחברו לפין אחר, תשנו כאן.

מימין ל->= יש חלון לבן עם המספר 2000. זה הסף — הגבול שמפריד בין ״יש מספיק אור״ ל״חשוך״.

אז התנאי כולו אומר: האם המספר שמגיע מהחיישן הוא 2000 או יותר? כלומר — האם חשוך?

5. הפעולות: set digital pin [5] to [high] ו-set digital pin [5] to [low]

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

  • ב-then (חשוך): set digital pin [5] to [high] — מדליק את הנורית
  • ב-else (מואר): set digital pin [5] to [low] — מכבה אותה

התפריט הראשון בוחר את מספר הפין, התפריט השני בוחר בין high (מתח גבוה, נדלק) ל-low (מתח נמוך, כבוי).

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


מריצים

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

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

המעגל המורכב — לוח ESP32, נורית וחיישן אור על לוח הניסוי

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

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

לא עובד? שתי בדיקות מהירות:

  • הנורית דולקת כל הזמן → כנראה החיישן לא מחובר לפין 32, או שהחדר שלכם חשוך יחסית. נסו סף גבוה יותר.
  • הנורית כבויה גם כשמכסים → בדקו שהנגד 10kΩ באמת מחובר ל-5V ושהחיישן באמת מחובר ל-GND.

מה קרה כאן

הלוח עושה שלושה דברים, אלפי פעמים בשנייה, בלי לעצור:

  1. קורא מספר מחיישן האור — בלוק read analog pin [32]
  2. משווה אותו לסף 2000 — בלוק ה->= הירוק
  3. מחליט — נורית דולקת או כבויה, לפי איזה פה של ה-if נבחר

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

שיניתם רק מספר אחד — 2000 — וכל ההתנהגות של המכשיר משתנה. זה הכוח של תכנות.


תרגילים

  1. הזיזו את הסף. שנו את החלון הלבן מ-2000 ל-1000. העלו מחדש. עכשיו צריך להיות הרבה יותר חשוך כדי שהנורית תידלק. עכשיו נסו 3000 — היא תידלק כמעט תמיד. מה הסף הכי מתאים לחדר שלכם?

  2. הפכו את הכיוון. החליפו בין השניים: high ב-else ו-low ב-then. קיבלתם מנורה שנדלקת דווקא באור — כמו התראה שאומרת ״מישהו פתח את הדלת והכניס אור״.

  3. הוסיפו זמזם. הוסיפו לתוך ה-then בלוק set digital pin נוסף לפין של הזמזם הפעיל משיעור 8. עכשיו כשחשוך — גם אור וגם צליל.

  4. אזור ביניים. גררו בלוק if ... then ... else נוסף לתוך ה-else של הראשון, עם סף של 1200. כך תקבלו שלוש מדרגות: חשוך מאוד, חצי-חושך ומואר. תוכלו להדליק שתי נוריות במקום אחת ולתת לכל מדרגה מראה משלה.

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

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

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