מה נלמד כאן
- מה מודד חיישן טמפרטורה ולחות ואיך הוא עושה את זה
- איך מחברים את ה-DHT11 ללוח הניסוי ולפינים
- הבלוק humiture [5] [temperature] ושתי האפשרויות שלו
- הבלוק join — איך מדביקים טקסט למספר
- לקרוא את המדידות במסך הסריאל בזמן אמת
הלוח לומד להרגיש
עד עכשיו הלוח שלכם ידע לעשות דברים: להדליק נורית, לזמזם, לסובב מנוע. עכשיו הוא הולך ללמוד משהו אחר לגמרי — להרגיש.
תחשבו על חממה של עגבניות. אם יהיה בה חם מדי הצמחים יתייבשו, ואם יהיה לח מדי יופיע עובש. מי שמנהל את החממה לא יכול לעמוד שם כל היום עם מדחום. הוא שם חיישן, והחיישן מדווח בלי הפסקה.

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

החורים שבחזית הם לא קישוט — דרכם האוויר נכנס פנימה ונוגע בחלקים המודדים. לעולם אל תכסו אותם באצבע או בנייר דבק, אחרת החיישן ימדוד את עצמו במקום את החדר.
בתוך הקופסה הזאת יש שני מכשירי מדידה שונים:
איך הוא מודד לחות
לחות היא כמה אדי מים יש באוויר. אי אפשר לראות אותם, אבל מרגישים אותם — יום לח בקיץ מרגיש דביק, ויום יבש בחורף גורם לשפתיים להיסדק.
בתוך החיישן יש חומר מיוחד שסופג מים מהאוויר. כשהחומר סופג יותר מים, התכונה החשמלית שלו משתנה — והשבב הפנימי מתרגם את השינוי הזה למספר.
התוצאה נמדדת ב-%RH, כלומר אחוז לחות יחסית. 0% זה אוויר יבש לגמרי, 100% זה אוויר רווי לגמרי. בחדר רגיל בישראל תראו בדרך כלל משהו בין 40 ל-70.
איך הוא מודד טמפרטורה
כאן עובד רכיב אחר, שנקרא תרמיסטור. זה נגד שההתנגדות שלו משתנה לפי החום:
- כשמתחמם → ההתנגדות יורדת
- כשמתקרר → ההתנגדות עולה
השבב מודד את ההתנגדות, ומתרגם אותה למעלות צלזיוס.
מה החיישן יודע ומה לא
| מה | הערך |
|---|---|
| מתח הפעלה | 3.3 עד 5.5 וולט |
| טווח טמפרטורה | מינוס 20 עד 60 מעלות |
| טווח לחות | 5% עד 95% |
| דיוק טמפרטורה | בערך 2 מעלות |
| דיוק לחות | בערך 5 אחוזים |
זה חשוב: הדיוק הוא בערך 2 מעלות. אם החיישן מראה 25.4 ובאמת יש 24 — הוא לא מקולקל, הוא פשוט DHT11. הוא חיישן זול ועמיד, מצוין ללמידה ולפרויקטים בבית, אבל לא מכשיר מעבדה.
וחשוב לא פחות: DHT11 מודד לאט. הוא מסוגל לתת מדידה טרייה בערך פעם בשנייה. בגלל זה בתוכנית שלנו יש המתנה של שתי שניות בין קריאה לקריאה.
הבלוקים
הבלוק שקורא מהחיישן
הבלוק נמצא בקטגוריה Robots, והוא כחול ובעל קצוות מעוגלים:

humiture [5] [temperature]
הצורה המעוגלת שלו מספרת לכם משהו: הוא לא פקודה — הוא מספר. אי אפשר לשים אותו לבד בערימת פקודות. הוא נועד להיכנס בתוך חור עגול של בלוק אחר, בדיוק כמו שמכניסים מספר.
יש לו שתי תיבות בחירה:
- [5] — הפין שאליו חיברתם את רגל ה-Data של החיישן.
- [temperature] — מה בדיוק לקרוא. לוחצים על החץ ונפתחות שתי אפשרויות:

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

join (apple) (banana) — הוא לוקח שני דברים ומדביק אותם לטקסט אחד: apple ועוד banana ביחד הם applebanana. הוא גם ירוק וגם מעוגל — כלומר גם הוא ערך, לא פקודה, ואפשר לתחוב אותו לתוך בלוקים אחרים.
יש לו רק שני חורים. אבל אנחנו רוצים שלושה חלקים: את המילה ״Temperature:״, את המספר, ואת היחידה ״°C״. הפתרון הוא לתקוע join אחד בתוך השני:

הסדר הוא:
- גוררים את humiture [5] [temperature] לתוך החור הראשון של ה-join הפנימי, במקום המילה apple. בחור השני של אותו join מקלידים °C.
- גוררים את כל ה-join הפנימי לתוך החור השני של ה-join החיצוני, במקום banana. בחור הראשון של החיצוני מקלידים Temperature: — עם נקודתיים.
וזאת התוצאה:

בדיוק אותו דבר עושים ללחות — רק שתיבת הבחירה היא humidity, המילה היא Humidity: והיחידה היא סימן האחוז:

החיבור
מנתקים חשמל, ואז מחברים. ל-DHT11 יש ארבע רגליים, אבל רק שלוש מהן בשימוש:

- רגל 1 — Vcc → 5V
- רגל 2 — Data → פין IO5
- רגל 3 — NC → לא מחברים כלום. NC זה ראשי תיבות של ״לא מחובר״. הרגל הזאת קיימת רק כדי שהרכיב יעמוד יציב.
- רגל 4 — GND → GND
מכניסים את החיישן ללוח הניסוי כך שכל רגל בשורה משלה, ומושכים ממנו שלושה חוטים ללוח:

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

start the program — הכובע הצהוב שמתחתיו הכול מתחיל.
forever — הבלוק הכתום עם הפה הפתוח. כל מה שבפנים חוזר שוב ושוב.
serial print [115200] (…) — בלוק כחול ששולח שורת טקסט מהלוח אל המחשב, דרך כבל ה-USB. המספר 115200 הוא קצב השידור — כמה מהר הלוח מדבר. חשוב: המספר הזה חייב להיות זהה למספר שמוגדר בחלון מסך הסריאל. אם הם לא שווים, תראו על המסך ג׳יבריש של סימנים מוזרים.
בתוך החור של ה-serial print הראשון יושב בלוק ה-join של הטמפרטורה, ובשני יושב זה של הלחות.
wait (2) seconds — ההמתנה. בלעדיה הלוח היה שולח מאות שורות בשנייה, המסך היה מתמלא בקצב מטורף, והחיישן ממילא לא מספיק לעדכן את עצמו כל כך מהר.
מריצים
⬇ להורדת הקובץ Temperature_and_Humidity_Sensor.sb3 — גוררים אותו לתוך ACECode ולוחצים Upload.
ההסבר המלא על צריבה נמצא בשיעור ההתקנה.
אחרי שהצריבה הסתיימה, פותחים את מסך הסריאל (Serial Monitor) ומוודאים שקצב השידור שם מוגדר ל-115200. תוך שתי שניות מתחילות להופיע שורות:

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


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

בשיעורים הבאים נשתמש באותו מספר בדיוק — אבל במקום להדפיס אותו, נשווה אותו למספר אחר ונחליט לפי זה אם להדליק מאוורר.
תרגילים
1. קצב אחר. שנו את wait (2) seconds ל-5. עכשיו השורות מגיעות לאט יותר וקל יותר לעקוב אחריהן. נסו גם 1 — זה הכי מהר שכדאי לבקש מ-DHT11.
2. בעברית. שנו את הטקסט בתיבה של ה-join מ-Temperature: ל-Temp. כל מה שתכתבו בתיבה הלבנה יופיע במסך בדיוק כמו שהוא.
3. רק לחות. גררו החוצה את בלוק ה-serial print של הטמפרטורה. עכשיו המסך מראה רק שורות לחות — ניסוי נקי יותר כשרוצים לבדוק מה קורה כשנושפים.
4. אתגר — מדידה כפולה. העבירו את רגל ה-Data ל-IO18, ושנו את שתי תיבות ה-[5] בשני בלוקי ה-humiture ל-[18]. שימו לב שצריך לשנות את שניהם: אם תשנו רק אחד, שורת הטמפרטורה תעבוד ושורת הלחות תראה אפס — וזאת דרך מצוינת להבין שכל בלוק humiture מדבר עם הפין שלו בנפרד.


