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

מה שקרה שם הוא אור. אור שהעיניים שלנו פשוט לא בנויות לראות. הוא נקרא אינפרה-אדום (Infrared), ובקיצור IR.
בשיעור הזה נבנה בעצמנו את הצד השני של הסיפור: נחבר ל-ESP32 מקלט אינפרה-אדום קטן, נלחץ על כפתורים בשלט, והלוח יגיד לנו בדיוק על איזה כפתור לחצנו. זה הבסיס לכל פרויקט שאפשר להפעיל משלט — מאוורר, מנוע, אורות.
הידע שצריך
מה זה אור אינפרה-אדום
אור הוא גל. לכל צבע שאנחנו רואים יש אורך גל משלו — אדום הוא הגל הארוך ביותר שהעין שלנו יודעת לקלוט. מתחת לאדום ממשיכים גלים ארוכים עוד יותר, והם כבר מחוץ לטווח של העין. אלה גלי האינפרה-אדום.
חשבו על זה כמו על פסנתר: יש תווים נמוכים מדי בשביל האוזן שלנו. גם הם קיימים, גם הם צליל — פשוט לא שומעים אותם. אינפרה-אדום זה בדיוק אותו דבר, רק עם אור.
💡 טריק לבדיקה בבית: כוונו את השלט למצלמה של הטלפון ולחצו על כפתור. בתמונה במסך תראו את הנורית של השלט מהבהבת בסגול-לבן. המצלמה רואה אינפרה-אדום, העין שלכם לא.
איך שלט שולח פקודה
בכל שלט יש נורית אינפרה-אדום קטנה. כשלוחצים על כפתור קורים ארבעה דברים, מהר מאוד:
- לכל כפתור יש מספר משלו. מספר קבוע, שנקרא הקוד של הכפתור.
- השלט הופך את המספר להבהובים. הנורית נדלקת ונכבית בקצב של 38,000 פעמים בשנייה. רצף ההבהובים הזה הוא הקוד.
- ההבהובים טסים באוויר אל המכשיר.
- המקלט בצד השני מפענח את הרצף בחזרה למספר, והמכשיר עושה מה שצריך.
למה 38,000 פעמים בשנייה? כדי שהמקלט יידע להבדיל בין הודעה אמיתית לבין אור אינפרה-אדום שקיים ממילא בחדר — מהשמש, מהמנורה, אפילו מהגוף שלכם. רק הבהוב בקצב המדויק הזה נחשב בעיניו "הודעה".
הרכיבים

השלט — שלט שטוח ודק עם 17 כפתורים: חיצים למעלה, למטה, ימינה ושמאלה, כפתור OK באמצע, הספרות 0 עד 9, וכוכבית וסולמית.
המקלט — הרכיב הכסוף-שחור הקטן עם שלוש רגליים. בתוכו יש עין אינפרה-אדום ומעגל קטן שמנקה את הרעש ומשאיר רק את ההודעה. שלוש הרגליים שלו מסומנות:
- S (Signal) — הרגל שמוציאה את המידע, מתחברת לפין בלוח
- − (GND) — חיבור לאדמה
- + (VCC) — חיבור למתח 5V
החיבור

החיבור קצר ופשוט — שלושה חוטים בלבד:
| רגל במקלט | לאן מחברים |
|---|---|
| S | פין IO5 בלוח |
| − | GND |
| + | 5V |
נעצו את המקלט בלוח הניסוי כך שכל רגל תהיה בשורה נפרדת, ורק אז חברו את החוטים.

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

הבלוקים

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

set [data] data type [String] — בלוק כתום מקבוצת Variables.
משתנה הוא תיבה עם שם, ובתוכה שומרים ערך. כאן התיבה נקראת data. הבלוק הזה אומר ללוח איזה סוג של דבר ישב בתיבה.
בתפריט הנפתח יש כמה אפשרויות — למשל float למספר עם נקודה עשרונית. אצלנו בוחרים String, כלומר מחרוזת: רצף של תווים, כמו מילה. הקוד שהשלט שולח נראה כך: 0xBF40FF00 — יש בו גם ספרות וגם אותיות, ולכן הוא מחרוזת ולא מספר.
הבלוק הזה יושב פעם אחת בראש התוכנית, מיד אחרי start the program. מכינים את התיבה, וממשיכים.
2. לקרוא את השלט

IR module [5] — בלוק כחול עגול מקבוצת Robots.
הצורה העגולה שלו מספרת לכם מה הוא: בלוק שמחזיר ערך. הוא לא עושה פעולה בעצמו — הוא נכנס לתוך חור עגול של בלוק אחר ומביא לשם מספר או מילה.
מה הוא מביא? את הקוד של הכפתור שנלחץ עכשיו בשלט. הספרה בתפריט היא הפין שאליו חיברתם את רגל S — אצלנו 5. אם תחברו לפין אחר, פשוט תשנו כאן את המספר.
ואם אף אחד לא לוחץ על כלום? הבלוק מחזיר את המחרוזת 0. זו התשובה שלו ל"לא קרה כלום".
הוא יושב בתוך הבלוק set [data] to ( ) — כלומר: "קח את מה שה-IR module מחזיר, ותכניס לתיבה data".
3. לבדוק אם באמת נלחץ משהו

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. כוונו את השלט אל המקלט ולחצו על כפתור. בכל לחיצה תיווצר שורה חדשה:

השורות הראשונות במסך, אלה שמתחילות ב-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, התנאי מתקיים — והקוד מודפס למסך.
זה הצעד הראשון של כל שלט אמיתי. בשיעור על המאוורר בשלט רחוק נוסיף את הצעד השני: במקום להדפיס את הקוד, נשווה אותו לקוד מסוים ונפעיל בעזרתו רכיב.
תרגילים
בנו טבלת קודים. לחצו על כל אחד מ-17 הכפתורים, אחד-אחד, ורשמו במחברת איזה קוד הופיע. עכשיו יש לכם מפה של השלט שלכם. שמרו אותה — תצטרכו אותה בשיעורים הבאים.
מה הטווח? התרחקו מהלוח צעד-צעד ולחצו בכל פעם. באיזה מרחק הלחיצות מפסיקות להופיע? עכשיו נסו ללחוץ בזווית של 90 מעלות מהצד. מה קורה?
שנו את הפין. העבירו את חוט ה-S מפין 5 לפין 17, ושנו בבלוק IR module [5] את התפריט ל-17. צרבו שוב. עובד? עכשיו אתם יודעים שהמספר בבלוק ואיפה שהחוט נעוץ חייבים תמיד להתאים.
חסמו את הקרן. החזיקו דף נייר בין השלט למקלט ולחצו. ואז נסו לכוון את השלט אל קיר לבן קרוב, כך שהאור יוחזר ממנו אל המקלט. מה למדתם על ההתנהגות של אינפרה-אדום?


