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

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

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

שלט רחוק — לדבר עם הלוח באור שלא רואים

מה בשיעור?

  • להסביר מה זה אור אינפרה-אדום ולמה העין לא רואה אותו
  • לתאר איך שלט רחוק שולח פקודה בהבהובים
  • לחבר מקלט אינפרה-אדום ללוח ה-ESP32
  • להשתמש בבלוק IR module כדי לקרוא קוד של כפתור
  • להדפיס את הקוד למסך הטורי ולזהות כל כפתור
  • לבנות טבלת קודים אישית לשלט שלכם

מה נלמד כאן

  • איך שלט רחוק מדבר עם הטלוויזיה בלי חוט ובלי צליל
  • מה זה אור אינפרה-אדום ולמה אי אפשר לראות אותו
  • מה עושה מקלט האינפרה-אדום הקטן שבערכה
  • הבלוק IR module [5] — הבלוק שקורא איזה כפתור נלחץ
  • לבנות טבלת קודים משלכם לכל כפתור בשלט

הקסם שקורה בסלון

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

שלט רחוק שולח פקודה לטלוויזיה בסלון

מה שקרה שם הוא אור. אור שהעיניים שלנו פשוט לא בנויות לראות. הוא נקרא אינפרה-אדום (Infrared), ובקיצור IR.

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


הידע שצריך

מה זה אור אינפרה-אדום

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

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

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

איך שלט שולח פקודה

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

  1. לכל כפתור יש מספר משלו. מספר קבוע, שנקרא הקוד של הכפתור.
  2. השלט הופך את המספר להבהובים. הנורית נדלקת ונכבית בקצב של 38,000 פעמים בשנייה. רצף ההבהובים הזה הוא הקוד.
  3. ההבהובים טסים באוויר אל המכשיר.
  4. המקלט בצד השני מפענח את הרצף בחזרה למספר, והמכשיר עושה מה שצריך.

למה 38,000 פעמים בשנייה? כדי שהמקלט יידע להבדיל בין הודעה אמיתית לבין אור אינפרה-אדום שקיים ממילא בחדר — מהשמש, מהמנורה, אפילו מהגוף שלכם. רק הבהוב בקצב המדויק הזה נחשב בעיניו "הודעה".

הרכיבים

שלט רחוק של ACEBOTT ולידו מקלט אינפרה-אדום בעל שלוש רגליים

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

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

  • S (Signal) — הרגל שמוציאה את המידע, מתחברת לפין בלוח
  • (GND) — חיבור לאדמה
  • + (VCC) — חיבור למתח 5V

החיבור

סכמת חיבור — רגל S למקלט אל פין IO05, מינוס ל-GND ופלוס ל-5V

החיבור קצר ופשוט — שלושה חוטים בלבד:

רגל במקלט לאן מחברים
S פין IO5 בלוח
GND
+ 5V

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

תרשים חיווט — מקלט האינפרה-אדום נעוץ בלוח הניסוי ומחובר בשלושה חוטים ללוח ESP32

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

תצלום המעגל המורכב — לוח ESP32 מחובר למקלט אינפרה-אדום על לוח ניסוי


הבלוקים

תוכנית הבלוקים המלאה — set data type String, ואחריו forever עם IR module, if ו-serial print

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

1. להכין את התיבה

הבלוק set data data type — בחירת סוג המידע של המשתנה

set [data] data type [String] — בלוק כתום מקבוצת Variables.

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

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

הבלוק הזה יושב פעם אחת בראש התוכנית, מיד אחרי start the program. מכינים את התיבה, וממשיכים.

2. לקרוא את השלט

הבלוק IR module עם בחירת פין 5

IR module [5] — בלוק כחול עגול מקבוצת Robots.

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

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

ואם אף אחד לא לוחץ על כלום? הבלוק מחזיר את המחרוזת 0. זו התשובה שלו ל"לא קרה כלום".

הוא יושב בתוך הבלוק set [data] to ( ) — כלומר: "קח את מה שה-IR module מחזיר, ותכניס לתיבה data".

3. לבדוק אם באמת נלחץ משהו

הבלוק string — יצירת מחרוזת קבועה

string ( ) — בלוק ירוק מקבוצת Operators. כותבים בתוכו טקסט, והוא מחזיר אותו כמחרוזת.

עכשיו מחברים אותו לתנאי:

if < (data) != (string [0]) > then

הסימן != אומר "לא שווה ל". אז התנאי כולו קורא: "אם מה שיש בתיבה data הוא לא המחרוזת 0 — כלומר אם באמת נלחץ כפתור — אז תעשה את מה שבפנים".

שימו לב לצורה: התנאי הוא משושה (שש צלעות), והוא נכנס לחור המשושה של בלוק ה-if. בלוקים משושים תמיד עונים רק "כן" או "לא".

4. להדפיס למסך

serial print [115200] (data) — בלוק כחול שמדפיס ערך אל המסך הטורי במחשב.

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

5. העטיפה

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

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


מריצים

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

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

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

המסך הטורי מציג את הקודים 0xBF40FF00, 0xE619FF00 ו-0xA15EFF00 אחרי לחיצות על השלט

השורות הראשונות במסך, אלה שמתחילות ב-ets ו-rst, הן הודעות ההתנעה של הלוח. התעלמו מהן. מה שמעניין אתכם מתחיל אחריהן.

מה זה 0xBF40FF00? ה-0x בהתחלה אומר שזה מספר בשיטת הקסדצימלי — שיטת ספירה שבה סופרים בקבוצות של 16 במקום 10, ולכן משתמשים גם באותיות A עד F. זו צורת כתיבה נוחה למחשבים. לא צריך לדעת להמיר אותה; צריך רק לדעת שלכל כפתור יש קוד קבוע ושונה.

אלה 17 הקודים של השלט בערכה:

0xB946FF00 · 0xE718FF00 · 0xBB44FF00 · 0xA15EFF00 · 0xBC43FF00 · 0xF708FF00 · 0xEA15FF00 · 0xE31CFF00 · 0xBF40FF00 · 0xA55AFF00 · 0xE916FF00 · 0xBD42FF00 · 0xE619FF00 · 0xAD52FF00 · 0xF20DFF00 · 0xB54AFF00 · 0xF30CFF00

איזה קוד שייך לאיזה כפתור? תגלו בעצמכם. זו בדיוק המשימה הראשונה.


מה קרה כאן

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

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


תרגילים

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

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

  3. שנו את הפין. העבירו את חוט ה-S מפין 5 לפין 17, ושנו בבלוק IR module [5] את התפריט ל-17. צרבו שוב. עובד? עכשיו אתם יודעים שהמספר בבלוק ואיפה שהחוט נעוץ חייבים תמיד להתאים.

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

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

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

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