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

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

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

חיישן טמפרטורה ולחות — הלוח מרגיש את החדר

מה בשיעור?

  • להסביר מה זו לחות ומה ההבדל בינה לבין טמפרטורה
  • לזהות את רגלי חיישן ה-DHT11 ולחבר אותן נכון
  • להשתמש בבלוק humiture ולהחליף בין temperature ל-humidity
  • לחבר טקסט ומספר יחד עם הבלוק join
  • להדפיס שורות למסך הסריאל ולקרוא אותן
  • לדעת מה הטווח והדיוק של החיישן ומתי לא לסמוך עליו

מה נלמד כאן

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

הלוח לומד להרגיש

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

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

חממה חקלאית, חדר אחסון מזון וחיישן טמפרטורה ולחות

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

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


הרכיבים

חיישן DHT11

זה רכיב פלסטיק כחול קטן עם חורים בחזית וארבע רגליים מתכת למטה.

חיישן 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

humiture [5] [temperature]

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

יש לו שתי תיבות בחירה:

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

תיבת הבחירה פתוחה ומציגה את שתי האפשרויות temperature ו-humidity

  • temperature — מחזיר את הטמפרטורה במעלות צלזיוס
  • humidity — מחזיר את הלחות באחוזים

אותו בלוק, אותו חיישן, אותו פין — רק תיבת בחירה אחרת. זה כל ההבדל בין השניים.

הבלוק שמדביק טקסט

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

בשביל זה קיים join — בלוק ירוק מקטגוריית Operators:

הבלוק הירוק join עם שתי תיבות שבהן כתוב apple ו-banana

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

יש לו רק שני חורים. אבל אנחנו רוצים שלושה חלקים: את המילה ״Temperature:״, את המספר, ואת היחידה ״°C״. הפתרון הוא לתקוע join אחד בתוך השני:

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

הסדר הוא:

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

וזאת התוצאה:

בלוק join מורכב שמחבר את המילה Temperature עם קריאת החיישן ועם היחידה מעלות צלזיוס

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

בלוק join מורכב עבור הלחות, עם המילה Humidity וסימן האחוז


החיבור

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

תרשים חשמלי של DHT11: Vcc לחמישה וולט, Data לפין IO05, רגל NC לא מחוברת, GND לאדמה

  • רגל 1 — Vcc5V
  • רגל 2 — Data → פין IO5
  • רגל 3 — NCלא מחברים כלום. NC זה ראשי תיבות של ״לא מחובר״. הרגל הזאת קיימת רק כדי שהרכיב יעמוד יציב.
  • רגל 4 — GNDGND

מכניסים את החיישן ללוח הניסוי כך שכל רגל בשורה משלה, ומושכים ממנו שלושה חוטים ללוח:

חיישן DHT11 נעוץ בלוח ניסוי ומחובר בשלושה חוטים ללוח ESP32

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


התוכנית

תוכנית הבלוקים המלאה: לולאת forever עם שני בלוקי serial print והמתנה של שתי שניות

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.


מה קרה כאן

חיישן אחד, בלוק אחד, שתי אפשרויות:

הבלוק humiture במצב temperature

הבלוק humiture במצב humidity

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

הבלוק הירוק join עם שתי תיבות טקסט

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


תרגילים

1. קצב אחר. שנו את wait (2) seconds ל-5. עכשיו השורות מגיעות לאט יותר וקל יותר לעקוב אחריהן. נסו גם 1 — זה הכי מהר שכדאי לבקש מ-DHT11.

2. בעברית. שנו את הטקסט בתיבה של ה-join מ-Temperature: ל-Temp. כל מה שתכתבו בתיבה הלבנה יופיע במסך בדיוק כמו שהוא.

3. רק לחות. גררו החוצה את בלוק ה-serial print של הטמפרטורה. עכשיו המסך מראה רק שורות לחות — ניסוי נקי יותר כשרוצים לבדוק מה קורה כשנושפים.

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

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

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

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