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

הידע שצריך
1. הבסיס
בשיעור 5 למדנו שאינפרה-אדום היא קרינה אלקטרומגנטית באורכי גל 0.7 עד 1000 מיקרון, שהעין לא רואה. אבל מצלמה כן רואה אותה — כוונו את מצלמת הטלפון אל השלט ולחצו על כפתור. תראו הבזק סגלגל.
השלט משדר דרך דיודת LED אינפרה-אדומה, והמקלט קולט ומפענח.
2. ארבעת שלבי התהליך

1. קידוד ושידור — לכל כפתור יש קוד משלו (בדרך כלל מספר הקסדצימלי). בלחיצה, השלט הופך את הקוד לסדרת פולסים.
2. שידור — האור המאופנן נע באוויר אל המכשיר.
3. קליטה ופענוח — המקלט הופך את הפולסים לשינויי מתח, והתוכנית מפענחת אותם חזרה לפקודה.
4. ביצוע — הלוח מזהה איזה כפתור נלחץ ומבצע.
3. תדר הנשא 38kHz — הפרט שהופך את זה לעובד
וכאן הנקודה היפה באמת.
הבעיה: אינפרה-אדום נמצא בכל מקום — השמש פולטת אותו, נורות פולטות אותו, גוף אדם פולט אותו. איך המקלט מבדיל בין השלט לבין כל הרעש הזה?
הפתרון: השלט לא סתם מדליק את הדיודה — הוא מהבהב אותה 38,000 פעמים בשנייה. המקלט מכוונן לתדר הזה בדיוק ומתעלם מכל מה שלא מהבהב ככה.
זה נקרא תדר נשא, וזה אותו עיקרון שמאפשר לרדיו לקלוט תחנה אחת מתוך עשרות.
וזו גם הסיבה שהשלט לא עובד דרך מכשולים — האור פשוט נחסם. נזכור את זה בשיעור הבלוטות'.
4. טבלת קודי הכפתורים

לכל כפתור בשלט של הערכה יש קוד קבוע:
| קוד | קוד |
|---|---|
0xB946FF00 |
0xE718FF00 |
0xBB44FF00 |
0xA15EFF00 |
0xBC43FF00 |
0xF708FF00 |
0xEA15FF00 |
0xE31CFF00 |
0xBF40FF00 |
0xA55AFF00 |
0xE916FF00 |
0xBD42FF00 |
0xE619FF00 |
0xAD52FF00 |
0xF20DFF00 |
0xB54AFF00 |
0xF30CFF00 |
אל תשננו את הטבלה. הניסוי בשיעור הזה הוא בדיוק הכלי שיגלה לכם את הקוד של כל כפתור — לחצו וקראו.
⚠️ דרוש ספריית IRremote בגרסה 3.0 ומעלה. התקנתם אותה בשיעור ההתקנה של פרק 1.
הניסוי
המטרה: ללחוץ על כפתור ולראות את הקוד שלו ב-Serial Monitor.
רשימת רכיבים
| הרכיב | כמות |
|---|---|
| לוח ESP32 | 1 |
| לוח ניסוי 400 נקודות | 1 |
| מקלט אינפרה-אדום | 1 |
| שלט רחוק | 1 |
התרשים החשמלי

החיבור

הקוד
#include <IRremote.h>
#define IR_RECEIVE_PIN 5
void setup() {
Serial.begin(115200);
IrReceiver.begin(IR_RECEIVE_PIN);
Serial.println("IR Receiver ready. Please press a button on the remote.");
}
void loop() {
if (IrReceiver.decode()) {
Serial.print("Received IR Code: 0x");
Serial.println(IrReceiver.decodedIRData.command, HEX);
IrReceiver.resume(); // מתכוננים לאות הבא
}
}
IrReceiver.resume()הוא לא אופציונלי. בלעדיו המקלט נשאר "תקוע" על האות הראשון ולא יקלוט שום דבר נוסף. זו התקלה הנפוצה ביותר בשיעור הזה.
שימו לב ל-HEX בסוף ה-println — הוא אומר להדפיס את המספר בבסיס 16 במקום בעשרוני.
מה אמור לקרות

לחצו על כל כפתור בשלט ורשמו את הקוד שלו. זו הטבלה שתשתמשו בה בכל פרויקט עם שלט.
הפקודות שלמדנו
| הפקודה | מה היא עושה |
|---|---|
IrReceiver.begin(pin) |
מאתחלת את המקלט |
IrReceiver.decode() |
מחזירה true אם התקבל אות שלם |
IrReceiver.decodedIRData.command |
הקוד של הכפתור |
IrReceiver.resume() |
מתכוננת לאות הבא |
נסו בעצמכם
- כוונו מצלמת טלפון אל השלט ולחצו. רואים את ההבזק?
- לחצו והחזיקו כפתור. מה מודפס — קוד אחד או הרבה?
- שימו יד בין השלט למקלט. עובד?
- בדקו את הטווח: מאיזה מרחק זה מפסיק?
- שלבו עם שיעור 1: כפתור אחד מדליק נורית, אחר מכבה אותה.


