# מדידת טמפרטורה - חומרה וירטואלית ל-IoT בחלק זה של השיעור, תוסיפו חיישן טמפרטורה למכשיר ה-IoT הווירטואלי שלכם. ## חומרה וירטואלית מכשיר ה-IoT הווירטואלי ישתמש בחיישן Grove Digital Humidity and Temperature מדומה. זה שומר על המעבדה זהה לשימוש ב-Raspberry Pi עם חיישן Grove DHT11 פיזי. החיישן משלב **חיישן טמפרטורה** עם **חיישן לחות**, אך במעבדה זו אתם מתמקדים רק ברכיב חיישן הטמפרטורה. במכשיר IoT פיזי, חיישן הטמפרטורה יהיה [תרמיסטור](https://wikipedia.org/wiki/Thermistor) שמודד טמפרטורה על ידי זיהוי שינוי בהתנגדות כאשר הטמפרטורה משתנה. חיישני טמפרטורה הם בדרך כלל חיישנים דיגיטליים שממירים את ההתנגדות הנמדדת לטמפרטורה במעלות צלזיוס (או קלווין, או פרנהייט). ### הוספת החיישנים ל-CounterFit כדי להשתמש בחיישן לחות וטמפרטורה וירטואלי, עליכם להוסיף את שני החיישנים לאפליקציית CounterFit. #### משימה - הוספת החיישנים ל-CounterFit הוסיפו את חיישני הלחות והטמפרטורה לאפליקציית CounterFit. 1. צרו אפליקציית Python חדשה במחשב שלכם בתיקייה בשם `temperature-sensor` עם קובץ יחיד בשם `app.py` וסביבת עבודה וירטואלית של Python, והוסיפו את חבילות ה-pip של CounterFit. > ⚠️ ניתן לעיין [בהוראות ליצירת והגדרת פרויקט Python של CounterFit בשיעור 1 במידת הצורך](../../../1-getting-started/lessons/1-introduction-to-iot/virtual-device.md). 1. התקינו חבילת Pip נוספת להתקנת shim של CounterFit עבור חיישן DHT11. ודאו שאתם מתקינים זאת מתוך טרמינל שבו סביבת העבודה הווירטואלית מופעלת. ```sh pip install counterfit-shims-seeed-python-dht ``` 1. ודאו שאפליקציית הווב של CounterFit פועלת. 1. צרו חיישן לחות: 1. בתיבה *Create sensor* בלשונית *Sensors*, פתחו את התפריט הנפתח של *Sensor type* ובחרו *Humidity*. 1. השאירו את *Units* על *Percentage*. 1. ודאו שה-*Pin* מוגדר ל-5. 1. לחצו על כפתור **Add** כדי ליצור את חיישן הלחות על Pin 5. ![הגדרות חיישן הלחות](../../../../../translated_images/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.he.png) חיישן הלחות ייווצר ויופיע ברשימת החיישנים. ![חיישן הלחות שנוצר](../../../../../translated_images/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.he.png) 1. צרו חיישן טמפרטורה: 1. בתיבה *Create sensor* בלשונית *Sensors*, פתחו את התפריט הנפתח של *Sensor type* ובחרו *Temperature*. 1. השאירו את *Units* על *Celsius*. 1. ודאו שה-*Pin* מוגדר ל-6. 1. לחצו על כפתור **Add** כדי ליצור את חיישן הטמפרטורה על Pin 6. ![הגדרות חיישן הטמפרטורה](../../../../../translated_images/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.he.png) חיישן הטמפרטורה ייווצר ויופיע ברשימת החיישנים. ![חיישן הטמפרטורה שנוצר](../../../../../translated_images/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.he.png) ## תכנות אפליקציית חיישן הטמפרטורה כעת ניתן לתכנת את אפליקציית חיישן הטמפרטורה באמצעות החיישנים של CounterFit. ### משימה - תכנות אפליקציית חיישן הטמפרטורה תכנתו את אפליקציית חיישן הטמפרטורה. 1. ודאו שאפליקציית `temperature-sensor` פתוחה ב-VS Code. 1. פתחו את הקובץ `app.py`. 1. הוסיפו את הקוד הבא לראש הקובץ `app.py` כדי לחבר את האפליקציה ל-CounterFit: ```python from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000) ``` 1. הוסיפו את הקוד הבא לקובץ `app.py` כדי לייבא את הספריות הנדרשות: ```python import time from counterfit_shims_seeed_python_dht import DHT ``` הפקודה `from seeed_dht import DHT` מייבאת את מחלקת `DHT` כדי לעבוד עם חיישן Grove טמפרטורה וירטואלי באמצעות shim מהמודול `counterfit_shims_seeed_python_dht`. 1. הוסיפו את הקוד הבא אחרי הקוד לעיל כדי ליצור מופע של המחלקה שמנהלת את חיישן הלחות והטמפרטורה הווירטואלי: ```python sensor = DHT("11", 5) ``` זה מגדיר מופע של מחלקת `DHT` שמנהלת את חיישן ה-**D**igital **H**umidity and **T**emperature הווירטואלי. הפרמטר הראשון מציין שהחיישן בשימוש הוא חיישן *DHT11* וירטואלי. הפרמטר השני מציין שהחיישן מחובר ליציאה `5`. > 💁 CounterFit מדמה את החיישן המשולב של לחות וטמפרטורה על ידי חיבור לשני חיישנים: חיישן לחות על ה-pin שניתן בעת יצירת מחלקת `DHT`, וחיישן טמפרטורה שפועל על ה-pin הבא. אם חיישן הלחות נמצא על pin 5, ה-shim מצפה שחיישן הטמפרטורה יהיה על pin 6. 1. הוסיפו לולאה אינסופית אחרי הקוד לעיל כדי לקרוא את ערך חיישן הטמפרטורה ולהדפיס אותו לקונסול: ```python while True: _, temp = sensor.read() print(f'Temperature {temp}°C') ``` הקריאה ל-`sensor.read()` מחזירה זוג ערכים (tuple) של לחות וטמפרטורה. אתם זקוקים רק לערך הטמפרטורה, ולכן מתעלמים מהלחות. ערך הטמפרטורה מודפס לאחר מכן לקונסול. 1. הוסיפו השהיה קצרה של עשר שניות בסוף ה-loop, מכיוון שאין צורך לבדוק את רמות הטמפרטורה באופן רציף. השהיה מפחיתה את צריכת האנרגיה של המכשיר. ```python time.sleep(10) ``` 1. מתוך הטרמינל של VS Code עם סביבת העבודה הווירטואלית מופעלת, הריצו את הפקודה הבאה כדי להפעיל את אפליקציית ה-Python שלכם: ```sh python app.py ``` 1. מתוך אפליקציית CounterFit, שנו את ערך חיישן הטמפרטורה שייקרא על ידי האפליקציה. ניתן לעשות זאת באחת משתי דרכים: * הזינו מספר בתיבה *Value* של חיישן הטמפרטורה, ואז לחצו על כפתור **Set**. המספר שתזינו יהיה הערך שיוחזר על ידי החיישן. * סמנו את תיבת הסימון *Random*, והזינו ערכי *Min* ו-*Max*, ואז לחצו על כפתור **Set**. בכל פעם שהחיישן יקרא ערך, הוא יקרא מספר אקראי בין *Min* ל-*Max*. אתם אמורים לראות את הערכים שהגדרתם מופיעים בקונסול. שנו את *Value* או את הגדרות *Random* כדי לראות את הערך משתנה. ```output (.venv) ➜ temperature-sensor python app.py Temperature 28.25°C Temperature 30.71°C Temperature 25.17°C ``` > 💁 ניתן למצוא את הקוד הזה בתיקייה [code-temperature/virtual-device](../../../../../2-farm/lessons/1-predict-plant-growth/code-temperature/virtual-device). 😀 תוכנית חיישן הטמפרטורה שלכם הצליחה! --- **כתב ויתור**: מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.