C, מבוטא *איי בריבוע סי*, הוא פרוטוקול רב-בקר ורב-היקפי, שבו כל מכשיר מחובר יכול לשמש כבקר או כהיקף שמתקשר דרך אוטובוס ה-I²C (השם למערכת תקשורת שמעבירה נתונים). נתונים נשלחים כקבוצות ממוענות, כאשר כל קבוצה מכילה את כתובת המכשיר המחובר שאליו היא מיועדת. > 💁 מודל זה היה מכונה בעבר מאסטר/סלייב, אך מונח זה נזנח בשל הקשר שלו לעבדות. [האגודה לחומרה בקוד פתוח אימצה את המונחים בקר/היקף](https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/), אך ייתכן שעדיין תיתקלו בהתייחסויות למונחים הישנים. למכשירים יש כתובת שמשמשת אותם כשהם מתחברים לאוטובוס ה-I²C, והיא בדרך כלל מקודדת מראש במכשיר. לדוגמה, לכל סוג של חיישן Grove מ-Seeed יש אותה כתובת, כך שלכל חיישני האור יש אותה כתובת, לכל הכפתורים יש כתובת שונה מזו של חיישן האור. לחלק מהמכשירים יש דרכים לשנות את הכתובת, על ידי שינוי הגדרות ג'אמפר או הלחמת פינים יחד. ל-I²C יש אוטובוס שמורכב מ-2 חוטים עיקריים, יחד עם 2 חוטי חשמל: | חוט | שם | תיאור | | ---- | --------- | ----------- | | SDA | נתונים סריאליים | חוט זה מיועד לשליחת נתונים בין מכשירים. | | SCL | שעון סריאלי | חוט זה שולח אות שעון בקצב שנקבע על ידי הבקר. | | VCC | אספן מתח משותף | ספק הכוח למכשירים. זה מחובר לחוטי SDA ו-SCL כדי לספק להם כוח דרך נגד משיכה שמכבה את האות כאשר אין מכשיר שמשמש כבקר. | | GND | קרקע | מספק קרקע משותפת למעגל החשמלי. | ![אוטובוס I2C עם 3 מכשירים המחוברים לחוטי SDA ו-SCL, ומשתפים חוט קרקע משותף](../../../../../translated_images/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.he.png) כדי לשלוח נתונים, מכשיר אחד יפעיל תנאי התחלה כדי להראות שהוא מוכן לשלוח נתונים. הוא יהפוך אז לבקר. הבקר שולח את כתובת המכשיר שאליו הוא רוצה לתקשר, יחד עם מידע אם הוא רוצה לקרוא או לכתוב נתונים. לאחר שהנתונים הועברו, הבקר שולח תנאי עצירה כדי להצביע על כך שסיים. לאחר מכן מכשיר אחר יכול להפוך לבקר ולשלוח או לקבל נתונים. ל-I2C יש מגבלות מהירות, עם 3 מצבים שונים שפועלים במהירויות קבועות. המהיר ביותר הוא מצב מהירות גבוהה עם מהירות מקסימלית של 3.4Mbps (מגה ביט לשנייה), אם כי מעט מאוד מכשירים תומכים במהירות זו. לדוגמה, Raspberry Pi מוגבל למצב מהיר במהירות של 400Kbps (קילו ביט לשנייה). מצב סטנדרטי פועל במהירות של 100Kbps. > 💁 אם אתם משתמשים ב-Raspberry Pi עם כובע בסיס Grove כחומרת IoT שלכם, תוכלו לראות מספר שקעים של I2C על הלוח שניתן להשתמש בהם לתקשורת עם חיישני I2C. חיישני Grove אנלוגיים גם משתמשים ב-I2C עם ממיר ADC כדי לשלוח ערכים אנלוגיים כנתונים דיגיטליים, כך שחיישן האור שבו השתמשתם סימולץ ככניסה אנלוגית, עם הערך שנשלח דרך I2C, מכיוון ש-Raspberry Pi תומך רק בכניסות דיגיטליות. ### מקלט-משדר אוניברסלי אסינכרוני (UART) UART כולל מעגלים פיזיים שמאפשרים לשני מכשירים לתקשר. לכל מכשיר יש 2 פינים לתקשורת - שידור (Tx) וקבלה (Rx), כאשר פין ה-Tx של המכשיר הראשון מחובר לפין ה-Rx של המכשיר השני, ופין ה-Tx של המכשיר השני מחובר לפין ה-Rx של המכשיר הראשון. זה מאפשר שליחת נתונים בשני הכיוונים. * מכשיר 1 משדר נתונים מפין ה-Tx שלו, שמתקבלים על ידי מכשיר 2 בפין ה-Rx שלו * מכשיר 1 מקבל נתונים בפין ה-Rx שלו שמשודרים על ידי מכשיר 2 מפין ה-Tx שלו ![UART עם פין Tx על שבב אחד המחובר לפין Rx על שבב אחר, ולהפך](../../../../../translated_images/uart.d0dbd3fb9e3728c6ee1995c8206f3cdb13cdfd208f13745e8ef6854cab75e421.he.png) > 🎓 הנתונים נשלחים ביט אחד בכל פעם, וזה נקרא תקשורת *סדרתית*. רוב מערכות ההפעלה והבקרים כוללים *יציאות סדרתיות*, כלומר חיבורים שיכולים לשלוח ולקבל נתונים סדרתיים הזמינים לקוד שלכם. מכשירי UART כוללים [קצב באוד](https://wikipedia.org/wiki/Symbol_rate) (המכונה גם קצב סמלים), שהוא מהירות שליחת וקבלת הנתונים בביטים לשנייה. קצב באוד נפוץ הוא 9,600, כלומר 9,600 ביטים (0s ו-1s) של נתונים נשלחים בכל שנייה. UART משתמש בביטים התחלה וסיום - כלומר הוא שולח ביט התחלה כדי לציין שהוא עומד לשלוח בית (8 ביטים) של נתונים, ואז ביט סיום לאחר שהוא שולח את 8 הביטים. מהירות UART תלויה בחומרה, אך גם היישומים המהירים ביותר אינם עולים על 6.5 Mbps (מגה ביט לשנייה, או מיליוני ביטים, 0 או 1, שנשלחים בכל שנייה). ניתן להשתמש ב-UART דרך פיני GPIO - ניתן להגדיר פין אחד כ-Tx ואחר כ-Rx, ואז לחבר אותם למכשיר אחר. > 💁 אם אתם משתמשים ב-Raspberry Pi עם כובע בסיס Grove כחומרת IoT שלכם, תוכלו לראות שקע UART על הלוח שניתן להשתמש בו לתקשורת עם חיישנים שמשתמשים בפרוטוקול UART. ### ממשק היקפי סדרתי (SPI) SPI מיועד לתקשורת למרחקים קצרים, כמו על בקר מיקרו לתקשורת עם התקן אחסון כמו זיכרון פלאש. הוא מבוסס על מודל בקר/היקפי עם בקר יחיד (בדרך כלל המעבד של מכשיר ה-IoT) שמתקשר עם מספר התקנים היקפיים. הבקר שולט בכל על ידי בחירת התקן היקפי ושליחת או בקשת נתונים. > 💁 כמו ב-I2C, המונחים בקר והיקפי הם שינויים עדכניים, כך שייתכן שתראו עדיין את המונחים הישנים בשימוש. בקרי SPI משתמשים ב-3 חוטים, יחד עם חוט נוסף לכל התקן היקפי. התקנים היקפיים משתמשים ב-4 חוטים. החוטים הם: | חוט | שם | תיאור | | ---- | --------- | ----------- | | COPI | יציאת בקר, כניסת היקפי | חוט זה מיועד לשליחת נתונים מהבקר להתקן ההיקפי. | | CIPO | כניסת בקר, יציאת היקפי | חוט זה מיועד לשליחת נתונים מההתקן ההיקפי לבקר. | | SCLK | שעון סדרתי | חוט זה שולח אות שעון בקצב שנקבע על ידי הבקר. | | CS | בחירת שבב | לבקר יש מספר חוטים, אחד לכל התקן היקפי, וכל חוט מתחבר לחוט CS על ההתקן ההיקפי המתאים. | ![SPI עם בקר אחד ושני התקנים היקפיים](../../../../../translated_images/spi.297431d6f98b386b4ff88aea44ce9c1e7acfb1ef69c7e4e388a7aa97b6948e24.he.png) חוט ה-CS משמש להפעלת התקן היקפי אחד בכל פעם, לתקשורת דרך חוטי COPI ו-CIPO. כאשר הבקר צריך להחליף התקן היקפי, הוא משבית את חוט ה-CS המחובר להתקן ההיקפי הפעיל כרגע, ואז מפעיל את החוט המחובר להתקן ההיקפי הבא שהוא רוצה לתקשר איתו. SPI הוא *דו-כיווני מלא*, כלומר הבקר יכול לשלוח ולקבל נתונים בו-זמנית מאותו התקן היקפי באמצעות חוטי COPI ו-CIPO. SPI משתמש באות שעון על חוט SCLK כדי לשמור על סנכרון בין המכשירים, כך שבניגוד לשליחה ישירה דרך UART אין צורך בביטים התחלה וסיום. אין מגבלות מהירות מוגדרות ל-SPI, עם יישומים שיכולים לעיתים קרובות לשדר מספר מגה-בייטים של נתונים בשנייה. ערכות פיתוח IoT תומכות לעיתים קרובות ב-SPI דרך חלק מפיני GPIO. לדוגמה, ב-Raspberry Pi ניתן להשתמש בפיני GPIO 19, 21, 23, 24 ו-26 עבור SPI. ### אלחוטי חלק מהחיישנים יכולים לתקשר דרך פרוטוקולים אלחוטיים סטנדרטיים, כמו Bluetooth (בעיקר Bluetooth Low Energy, או BLE), LoRaWAN (פרוטוקול רשת חסכוני באנרגיה לטווח ארוך), או WiFi. אלה מאפשרים לחיישנים מרוחקים שאינם מחוברים פיזית למכשיר IoT. דוגמה אחת לכך היא בחיישני לחות קרקע מסחריים. אלה מודדים את לחות הקרקע בשדה, ואז שולחים את הנתונים דרך LoRaWAN למכשיר מרכזי, שמעבד את הנתונים או שולח אותם דרך האינטרנט. זה מאפשר לחיישן להיות רחוק ממכשיר ה-IoT שמנהל את הנתונים, מפחית את צריכת האנרגיה ואת הצורך ברשתות WiFi גדולות או כבלים ארוכים. BLE פופולרי עבור חיישנים מתקדמים כמו צמידי כושר שעובדים על פרק היד. אלה משלבים מספר חיישנים ושולחים את נתוני החיישנים למכשיר IoT בצורה של הטלפון שלכם דרך BLE. ✅ האם יש לכם חיישני Bluetooth עליכם, בביתכם או בבית הספר שלכם? אלה עשויים לכלול חיישני טמפרטורה, חיישני תפוסה, עוקבי מכשירים ומכשירי כושר. דרך פופולרית אחת לחיבור מכשירים מסחריים היא Zigbee. Zigbee משתמש ב-WiFi כדי ליצור רשתות רשת בין מכשירים, שבהן כל מכשיר מתחבר לכמה שיותר מכשירים סמוכים, ויוצר מספר רב של חיבורים כמו רשת עכביש. כאשר מכשיר אחד רוצה לשלוח הודעה לאינטרנט, הוא יכול לשלוח אותה למכשירים הקרובים ביותר, שמעבירים אותה הלאה למכשירים סמוכים אחרים וכך הלאה, עד שהיא מגיעה למתאם וניתן לשלוח אותה לאינטרנט. > 🐝 השם Zigbee מתייחס לריקוד הניעור של דבורי דבש לאחר חזרתן לכוורת. ## מדידת רמות לחות בקרקע ניתן למדוד את רמת הלחות בקרקע באמצעות חיישן לחות קרקע, מכשיר IoT וצמח ביתי או חלקת קרקע סמוכה. ### משימה - מדידת לחות קרקע עבדו דרך המדריך הרלוונטי למדידת לחות קרקע באמצעות מכשיר ה-IoT שלכם: * [Arduino - Wio Terminal](wio-terminal-soil-moisture.md) * [מחשב לוח יחיד - Raspberry Pi](pi-soil-moisture.md) * [מחשב לוח יחיד - מכשיר וירטואלי](virtual-device-soil-moisture.md) ## כיול חיישנים חיישנים מסתמכים על מדידת תכונות חשמליות כמו התנגדות או קיבול. > 🎓 התנגדות, נמדדת באוהם (Ω), היא כמה התנגדות יש לזרם החשמלי שעובר דרך משהו. כאשר מתח מוחל על חומר, כמות הזרם שעוברת דרכו תלויה בהתנגדות החומר. ניתן לקרוא עוד על [עמידות חשמלית בויקיפדיה](https://wikipedia.org/wiki/Electrical_resistance_and_conductance). > 🎓 קיבול, נמדד בפרד (F), הוא היכולת של רכיב או מעגל לאסוף ולאחסן אנרגיה חשמלית. ניתן לקרוא עוד על קיבול בעמוד [קיבול בויקיפדיה](https://wikipedia.org/wiki/Capacitance). מדידות אלה לא תמיד שימושיות - דמיינו חיישן טמפרטורה שנותן לכם מדידה של 22.5KΩ! במקום זאת, הערך הנמדד צריך להיות מומר ליחידה שימושית על ידי כיול - כלומר התאמת הערכים הנמדדים לכמות הנמדדת כדי לאפשר המרת מדידות חדשות ליחידה הנכונה. חלק מהחיישנים מגיעים מכוילים מראש. לדוגמה, חיישן הטמפרטורה שבו השתמשתם בשיעור הקודם כבר היה מכויל כך שהוא יכול להחזיר מדידת טמפרטורה ב-°C. במפעל, החיישן הראשון שנוצר היה נחשף לטווח של טמפרטורות ידועות וההתנגדות נמדדת. זה היה משמש לבניית חישוב שיכול להמיר מהערך הנמדד ב-Ω (יחידת ההתנגדות) ל-°C. > 💁 הנוסחה לחישוב התנגדות מטמפרטורה נקראת [משוואת Steinhart–Hart](https://wikipedia.org/wiki/Steinhart–Hart_equation). ### כיול חיישן לחות קרקע לחות קרקע נמדדת באמצעות תכולת מים גרבימטרית או נפחית. * גרבימטרית היא משקל המים ביחידת משקל של קרקע נמדדת, כמספר הקילוגרמים של מים לקילוגרם של קרקע יבשה * נפחית היא נפח המים ביחידת נפח של קרקע נמדדת, כמספר המטרים המעוקבים של מים למטרים מעוקבים של קרקע יבשה > 🇺🇸 עבור אמריקאים, בשל עקביות היחידות, ניתן למדוד זאת בפאונדים במקום קילוגרמים או רגל מעוקבת במקום מטרים מעוקבים. חיישני לחות קרקע מודדים התנגדות או קיבול חשמלי - זה לא רק משתנה לפי לחות הקרקע, אלא גם לפי סוג הקרקע, שכן הרכיבים בקרקע יכולים לשנות את התכונות החשמליות שלה. באופן אידיאלי, יש לכייל את החיישנים - כלומר לקחת קריאות מהחיישן ולהשוות אותן למדידות שנמצאו באמצעות גישה מדעית יותר. לדוגמה, מעבדה יכולה לחשב את לחות הקרקע הגרבימטרית באמצעות דגימות משדה מסוים שנלקחות כמה פעמים בשנה, ומספרים אלה משמשים לכיול החיישן, התאמת קריאת החיישן ללחות הקרקע הגרבימטרית. ![גרף של מתח מול תכולת לחות קרקע](../../../../../translated_images/soil-moisture-to-voltage.df86d80cda1587008f312431ed5f79eb6c50c58d4fbc25a6763c5e9127c3106b.he.png) הגרף למעלה מראה כיצד לכייל חיישן. המתח נלכד עבור דגימת קרקע שנמדדת לאחר מכן במעבדה על ידי השוואת המשקל הרטוב למשקל היבש (על ידי מדידת המשקל רטוב, ואז ייבוש בתנור ומדידה יבש). לאחר שנלקחו כמה קריאות, ניתן לשרטט אותן על גרף ולהתאים קו לנקודות. קו זה יכול לשמש להמרת קריאות חיישן לחות קרקע שנלקחו על ידי מכשיר IoT למדידות לחות קרקע בפועל. 💁 עבור חיישני לחות קרקע התנגדותיים, המתח עולה ככל שלחות הקרקע עולה. עבור חיישני לחות קרקע קיבוליים, המתח יורד ככל שלחות הקרקע עולה, כך שהגרפים עבורם ינטו כלפי מטה, לא כלפי מעלה. ![ערך לחות קרקע מחושב מתוך הגרף](../../../../../translated_images/soil-moisture-to-voltage-with-reading.681cb3e1f8b68caf5547dbf1415851c82e201edfb78face16fc98da4051ed9b2.he.png) הגרף למעלה מראה קריאת מתח מחיישן לחות קרקע, ועל ידי מעקב אחריה לקו על הגרף, ניתן לחשב את לחות הקרקע בפועל. גישה זו מאפשרת לחקלאי לקבל רק כמה מדידות מעבדה עבור שדה, ואז הוא יכול להשתמש במכשירי IoT למדידת לחות הקרקע - מה שמאיץ באופן דרסטי את הזמן שלוקח לבצע מדידות. --- ## 🚀 אתגר לחיישני לחות קרקע התנגדותיים וקיבוליים יש מספר הבדלים. מהם ההבדלים הללו, ואיזה סוג (אם בכלל) הוא הטוב ביותר עבור חקלאי להשתמש בו? האם התשובה משתנה בין מדינות מתפתחות למפותחות? ## חידון לאחר השיעור [חידון לאחר השיעור](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/12) ## סקירה ולימוד עצמי קראו על החומרה והפרוטוקולים שבהם משתמשים חיישנים ומפעילים: * [עמוד GPIO בויקיפדיה](https://wikipedia.org/wiki/General-purpose_input/output) * [עמוד UART בויקיפדיה](https://wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter) * [עמוד SPI בויקיפדיה](https://wikipedia.org/wiki/Serial_Peripheral_Interface) * [עמוד I2C בויקיפדיה](https://wikipedia.org/wiki/I²C) * [עמוד Zigbee בויקיפדיה](https://wikipedia.org/wiki/Zigbee) ## משימה [כיול החיישן שלכם](assignment.md) --- **כתב ויתור**: מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.