You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/he/1-getting-started/lessons/2-deeper-dive/README.md

277 lines
37 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "9dd7f645ad1c6f20b72fee512987f772",
"translation_date": "2025-08-27T22:10:33+00:00",
"source_file": "1-getting-started/lessons/2-deeper-dive/README.md",
"language_code": "he"
}
-->
# צלילה עמוקה יותר לעולם ה-IoT
![סקיצה של השיעור](../../../../../translated_images/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.he.jpg)
> סקיצה מאת [ניטיה נאראסימהאן](https://github.com/nitya). לחצו על התמונה לגרסה גדולה יותר.
השיעור הזה נלמד כחלק מסדרת [Hello IoT](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) של [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn). השיעור הועבר בשני סרטונים - שיעור של שעה אחת ושעה נוספת של שאלות ותשובות עם העמקה בנושאים מהשיעור.
[![שיעור 2: צלילה עמוקה יותר לעולם ה-IoT](https://img.youtube.com/vi/t0SySWw3z9M/0.jpg)](https://youtu.be/t0SySWw3z9M)
[![שיעור 2: צלילה עמוקה יותר לעולם ה-IoT - שאלות ותשובות](https://img.youtube.com/vi/tTZYf9EST1E/0.jpg)](https://youtu.be/tTZYf9EST1E)
> 🎥 לחצו על התמונות למעלה לצפייה בסרטונים
## שאלון לפני השיעור
[שאלון לפני השיעור](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/3)
## מבוא
בשיעור הזה נעמיק בכמה מהנושאים שנלמדו בשיעור הקודם.
במהלך השיעור נעסוק בנושאים הבאים:
* [רכיבי יישום IoT](../../../../../1-getting-started/lessons/2-deeper-dive)
* [צלילה עמוקה יותר למיקרו-בקרים](../../../../../1-getting-started/lessons/2-deeper-dive)
* [צלילה עמוקה יותר למחשבים חד-לוחיים](../../../../../1-getting-started/lessons/2-deeper-dive)
## רכיבי יישום IoT
שני הרכיבים המרכזיים של יישום IoT הם ה-*אינטרנט* וה-*דבר* (Thing). בואו נבחן את שני הרכיבים הללו בפירוט.
### הדבר (The Thing)
![Raspberry Pi 4](../../../../../translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.he.jpg)
ה**דבר** ב-IoT מתייחס למכשיר שיכול לתקשר עם העולם הפיזי. מכשירים אלו הם בדרך כלל מחשבים קטנים וזולים, הפועלים במהירויות נמוכות וצורכים מעט אנרגיה - לדוגמה, מיקרו-בקרים פשוטים עם קילובייטים של זיכרון RAM (בניגוד לג'יגה-בייטים במחשב אישי) הפועלים בכמה מאות מגה-הרץ (בניגוד לג'יגה-הרץ במחשב אישי), אך צורכים כל כך מעט אנרגיה שהם יכולים לפעול שבועות, חודשים ואפילו שנים על סוללות.
מכשירים אלו מתקשרים עם העולם הפיזי, או באמצעות חיישנים לאיסוף נתונים מהסביבה שלהם, או על ידי שליטה בפלטים או מפעילים (actuators) כדי לבצע שינויים פיזיים. דוגמה טיפוסית לכך היא תרמוסטט חכם - מכשיר שיש לו חיישן טמפרטורה, אמצעי לקביעת טמפרטורה רצויה כמו חוגה או מסך מגע, וחיבור למערכת חימום או קירור שניתן להפעיל כאשר הטמפרטורה הנמדדת חורגת מהטווח הרצוי. חיישן הטמפרטורה מזהה שהחדר קר מדי, והמפעיל מדליק את החימום.
![תרשים המראה טמפרטורה וחוגה כקלטים למכשיר IoT, ושליטה על תנור כחלק מהפלט](../../../../../translated_images/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.he.png)
יש מגוון עצום של דברים שיכולים לשמש כמכשירי IoT, החל מחומרה ייעודית שמזהה דבר אחד, ועד מכשירים כלליים, אפילו הטלפון החכם שלכם! טלפון חכם יכול להשתמש בחיישנים כדי לזהות את העולם סביבו, ובמפעילים כדי לתקשר עם העולם - לדוגמה, שימוש בחיישן GPS כדי לזהות את מיקומכם ורמקול כדי לתת הוראות ניווט ליעד.
✅ חשבו על מערכות אחרות סביבכם שקוראות נתונים מחיישן ומשתמשות בהם כדי לקבל החלטות. דוגמה אחת יכולה להיות התרמוסטט בתנור. האם תוכלו למצוא עוד?
### האינטרנט
הצד של ה**אינטרנט** ביישום IoT כולל יישומים שהמכשיר יכול להתחבר אליהם כדי לשלוח ולקבל נתונים, כמו גם יישומים אחרים שיכולים לעבד את הנתונים מהמכשיר ולעזור לקבל החלטות על אילו בקשות לשלוח למפעילים של המכשיר.
תצורה טיפוסית תהיה שירות ענן כלשהו שהמכשיר מתחבר אליו, ושירות הענן הזה מטפל בדברים כמו אבטחה, קבלת הודעות מהמכשיר ושליחת הודעות חזרה אליו. שירות הענן הזה יתחבר ליישומים אחרים שיכולים לעבד או לאחסן נתוני חיישנים, או להשתמש בנתוני החיישנים יחד עם נתונים ממערכות אחרות כדי לקבל החלטות.
מכשירים לא תמיד מתחברים ישירות לאינטרנט בעצמם באמצעות WiFi או חיבורים חוטיים. חלק מהמכשירים משתמשים ברשתות Mesh כדי לתקשר זה עם זה באמצעות טכנולוגיות כמו Bluetooth, ומתחברים דרך מכשיר מרכזי שיש לו חיבור לאינטרנט.
לדוגמה, בתרמוסטט חכם, התרמוסטט יתחבר באמצעות WiFi ביתי לשירות ענן. הוא ישלח את נתוני הטמפרטורה לשירות הענן, ומשם הנתונים ייכתבו למסד נתונים כלשהו, מה שיאפשר לבעל הבית לבדוק את הטמפרטורה הנוכחית והעברית באמצעות אפליקציה בטלפון. שירות נוסף בענן יידע מהי הטמפרטורה הרצויה לבעל הבית, וישלח הודעות חזרה למכשיר IoT דרך שירות הענן כדי להפעיל או לכבות את מערכת החימום.
![תרשים המראה טמפרטורה וחוגה כקלטים למכשיר IoT, המכשיר עם תקשורת דו-כיוונית לענן, שמתקשר גם עם טלפון, ומפעיל תנור כחלק מהפלט](../../../../../translated_images/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.he.png)
גרסה חכמה יותר יכולה להשתמש בבינה מלאכותית בענן עם נתונים מחיישנים אחרים המחוברים למכשירי IoT אחרים, כמו חיישני נוכחות שמזהים אילו חדרים בשימוש, כמו גם נתונים כמו מזג האוויר ואפילו לוח השנה שלכם, כדי לקבל החלטות על הגדרת הטמפרטורה בצורה חכמה. לדוגמה, היא יכולה לכבות את החימום אם היא מזהה מלוח השנה שאתם בחופשה, או לכבות את החימום לפי חדרים בהתאם לשימוש שלכם, וללמוד מהנתונים כדי להיות מדויקת יותר עם הזמן.
![תרשים המראה חיישני טמפרטורה מרובים וחוגה כקלטים למכשיר IoT, המכשיר עם תקשורת דו-כיוונית לענן, שמתקשר גם עם טלפון, לוח שנה ושירות מזג אוויר, ומפעיל תנור כחלק מהפלט](../../../../../translated_images/smarter-thermostat.a75855f15d2d9e63d5da9d7ba5847a987f6c9d98e96e770c203532275194e27d.he.png)
✅ אילו נתונים נוספים יכולים לעזור להפוך תרמוסטט מחובר לאינטרנט לחכם יותר?
### IoT בקצה (Edge)
למרות שהאות I ב-IoT מייצגת אינטרנט, המכשירים הללו לא חייבים להתחבר לאינטרנט. במקרים מסוימים, מכשירים יכולים להתחבר למכשירי 'קצה' - מכשירי שער שפועלים ברשת המקומית שלכם, מה שמאפשר עיבוד נתונים מבלי לבצע שיחה דרך האינטרנט. זה יכול להיות מהיר יותר כשיש לכם הרבה נתונים או חיבור אינטרנט איטי, מאפשר לכם לפעול במצב לא מקוון כשחיבור אינטרנט אינו אפשרי, כמו על ספינה או באזור אסון, ומאפשר לכם לשמור על פרטיות הנתונים. חלק מהמכשירים יכילו קוד עיבוד שנוצר באמצעות כלים בענן ויריצו אותו מקומית כדי לאסוף ולהגיב לנתונים מבלי להשתמש בחיבור אינטרנט כדי לקבל החלטה.
דוגמה לכך היא מכשיר בית חכם כמו Apple HomePod, Amazon Alexa או Google Home, שמאזין לקול שלכם באמצעות מודלים של AI שאומנו בענן, אך פועלים מקומית על המכשיר. מכשירים אלו 'מתעוררים' כאשר נאמרת מילה או ביטוי מסוים, ורק אז שולחים את הדיבור שלכם לעיבוד באינטרנט. המכשיר יפסיק לשלוח דיבור בנקודה המתאימה, כמו כאשר הוא מזהה הפסקה בדיבור שלכם. כל מה שאתם אומרים לפני שהמכשיר מתעורר עם מילת ההפעלה, וכל מה שאתם אומרים לאחר שהמכשיר הפסיק להאזין, לא יישלח לאינטרנט לספק המכשיר, ולכן יישאר פרטי.
✅ חשבו על תרחישים נוספים שבהם פרטיות חשובה ולכן עיבוד הנתונים עדיף שייעשה בקצה ולא בענן. כרמז - חשבו על מכשירי IoT עם מצלמות או מכשירי דימות אחרים.
### אבטחת IoT
עם כל חיבור לאינטרנט, אבטחה היא שיקול חשוב. יש בדיחה ישנה שאומרת ש"האות S ב-IoT מייצגת אבטחה" - אין S ב-IoT, מה שמרמז שזה לא מאובטח.
מכשירי IoT מתחברים לשירות ענן, ולכן הם מאובטחים רק כמו שירות הענן - אם שירות הענן שלכם מאפשר לכל מכשיר להתחבר, אז ניתן לשלוח נתונים זדוניים או לבצע התקפות וירוסים. זה יכול להיות בעל השלכות אמיתיות מאוד, שכן מכשירי IoT מתקשרים ושולטים במכשירים אחרים. לדוגמה, [תולעת Stuxnet](https://wikipedia.org/wiki/Stuxnet) שיבשה שסתומים בצנטריפוגות כדי לגרום להם נזק. האקרים גם ניצלו [אבטחה לקויה כדי לגשת למוניטורים לתינוקות](https://www.npr.org/sections/thetwo-way/2018/06/05/617196788/s-c-mom-says-baby-monitor-was-hacked-experts-say-many-devices-are-vulnerable) ומכשירי מעקב ביתיים אחרים.
> 💁 לפעמים מכשירי IoT ומכשירי קצה פועלים ברשת מבודדת לחלוטין מהאינטרנט כדי לשמור על פרטיות ואבטחת הנתונים. זה נקרא [air-gapping](https://wikipedia.org/wiki/Air_gap_(networking)).
## צלילה עמוקה יותר למיקרו-בקרים
בשיעור הקודם, הצגנו את המיקרו-בקרים. עכשיו נעמיק בהם.
### מעבד (CPU)
המעבד הוא ה'מוח' של המיקרו-בקר. הוא המעבד שמריץ את הקוד שלכם ויכול לשלוח נתונים ולקבל נתונים מכל מכשיר מחובר. מעבדים יכולים להכיל ליבה אחת או יותר - למעשה, מעבדים שיכולים לעבוד יחד כדי להריץ את הקוד שלכם.
מעבדים מסתמכים על שעון שמתקתק מיליוני או מיליארדי פעמים בשנייה. כל תקתוק, או מחזור, מסנכרן את הפעולות שהמעבד יכול לבצע. בכל תקתוק, המעבד יכול לבצע הוראה מתוכנית, כמו לאחזר נתונים ממכשיר חיצוני או לבצע חישוב מתמטי. מחזור קבוע זה מאפשר לכל הפעולות להסתיים לפני שההוראה הבאה מעובדת.
ככל שמחזור השעון מהיר יותר, כך ניתן לעבד יותר הוראות בשנייה, ולכן המעבד מהיר יותר. מהירות המעבד נמדדת ב-[הרץ (Hz)](https://wikipedia.org/wiki/Hertz), יחידת מידה סטנדרטית שבה 1 הרץ משמעו תקתוק אחד או מחזור שעון בשנייה.
> 🎓 מהירויות מעבד ניתנות לעיתים קרובות במגה-הרץ (MHz) או ג'יגה-הרץ (GHz). 1MHz הוא מיליון הרץ, 1GHz הוא מיליארד הרץ.
> 💁 מעבדים מבצעים תוכניות באמצעות [מחזור אחזור-פענוח-ביצוע](https://wikipedia.org/wiki/Instruction_cycle). בכל תקתוק שעון, המעבד יאחזר את ההוראה הבאה מהזיכרון, יפענח אותה, ואז יבצע אותה, כמו שימוש ביחידת לוגיקה אריתמטית (ALU) כדי לחבר שני מספרים. חלק מהביצועים ייקחו מספר תקתוקים, ולכן המחזור הבא יפעל בתקתוק הבא לאחר שההוראה הושלמה.
![מחזור אחזור-פענוח-ביצוע המראה את אחזור ההוראה מהתוכנית המאוחסנת ב-RAM, ואז פענוחה וביצועה על המעבד](../../../../../translated_images/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.he.png)
למיקרו-בקרים יש מהירויות שעון נמוכות בהרבה ממחשבים שולחניים או ניידים, או אפילו מרוב הטלפונים החכמים. לדוגמה, למיקרו-בקר Wio Terminal יש מעבד שפועל במהירות של 120MHz או 120,000,000 מחזורים בשנייה.
✅ מחשב אישי או Mac ממוצע כולל מעבד עם מספר ליבות הפועל במהירויות של מספר ג'יגה-הרץ, כלומר השעון מתקתק מיליארדי פעמים בשנייה. חקרו את מהירות השעון של המחשב שלכם והשוו כמה פעמים הוא מהיר יותר מה-Wio Terminal.
כל מחזור שעון צורך אנרגיה ומייצר חום. ככל שהתקתוקים מהירים יותר, כך נצרכת יותר אנרגיה ונוצר יותר חום. מחשבים אישיים כוללים גופי קירור ומאווררים לפיזור החום, בלעדיהם הם יתחממו יתר על המידה ויכבו תוך שניות. למיקרו-בקרים לרוב אין את אלו, שכן הם פועלים בטמפרטורות נמוכות יותר ולכן במהירויות נמוכות יותר. מחשבים אישיים פועלים על חשמל מהשקע או על סוללות גדולות למספר שעות, בעוד שמיקרו-בקרים יכולים לפעול ימים, חודשים או אפילו שנים על סוללות קטנות. למיקרו-בקרים יכולים גם להיות ליבות שפועלות במהירויות שונות, ועוברים לליבות איטיות יותר כאשר הדרישה מהמעבד נמוכה כדי להפחית את צריכת האנרגיה.
> 💁 חלק מהמחשבים האישיים וה-Mac מאמצים את אותו שילוב של ליבות מהירות וחזקות וליבות איטיות וחסכוניות, ועוברים ביניהן כדי לחסוך בסוללה. לדוגמה, שבב ה-M1 במחשבים הניידים האחרונים של Apple יכול לעבור בין 4 ליבות ביצועים ל-4 ליבות יעילות כדי לאזן בין חיי סוללה למהירות בהתאם למשימה שמבוצעת.
✅ בצעו מחקר קטן: קראו על מעבדים במאמר [CPU בוויקיפדיה](https://wikipedia.org/wiki/Central_processing_unit)
#### משימה
חקרו את ה-Wio Terminal.
אם אתם משתמשים ב-Wio Terminal לשיעורים הללו, נסו למצוא את המעבד. מצאו את החלק *Hardware Overview* בדף המוצר של [Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) לתמונה של החלקים הפנימיים, ונסו למצוא את המעבד דרך החלון השקוף בגב המכשיר.
### זיכרון
למיקרו-בקרים יש בדרך כלל שני סוגי זיכרון - זיכרון תוכנה וזיכרון גישה אקראית (RAM).
זיכרון תוכנה הוא לא נדיף, כלומר מה שנכתב אליו נשאר גם כאשר אין חשמל למכשיר. זהו הזיכרון שמאחסן את קוד התוכנית שלכם.
RAM הוא הזיכרון שבו התוכנית משתמשת בזמן הריצה, והוא מכיל משתנים שהוקצו על ידי התוכנית שלכם ונתונים שנאספו מהתקנים חיצוניים. RAM הוא נדיף, כלומר כאשר החשמל כבה התוכן שלו נמחק, מה שמוביל לאיפוס התוכנית.
🎓 זיכרון התוכנית מאחסן את הקוד שלך ונשאר גם כאשר אין חשמל.
🎓 זיכרון RAM משמש להרצת התוכנית שלך ומאופס כאשר אין חשמל
בדומה ל-CPU, הזיכרון במיקרו-בקר קטן בסדרי גודל לעומת מחשב אישי או Mac. מחשב טיפוסי עשוי לכלול 8 ג'יגה-בייט (GB) של RAM, או 8,000,000,000 בתים, כאשר כל בית מספיק לאחסון אות בודד או מספר בין 0 ל-255. מיקרו-בקר יכלול רק קילובייטים (KB) של RAM, כאשר קילובייט הוא 1,000 בתים. ה-Wio Terminal שהוזכר לעיל כולל 192KB של RAM, או 192,000 בתים - פחות פי 40,000 ממחשב ממוצע!
התרשים למטה מציג את ההבדל בגודל היחסי בין 192KB ל-8GB - הנקודה הקטנה במרכז מייצגת 192KB.
![השוואה בין 192KB ל-8GB - יותר מפי 40,000 גדול יותר](../../../../../translated_images/ram-comparison.6beb73541b42ac6ffde64cdf79fc925a84b932ce7ebd4d41d5fd7afc1257a696.he.png)
גם אחסון התוכניות קטן יותר ממחשב אישי. מחשב טיפוסי עשוי לכלול כונן קשיח של 500GB לאחסון תוכניות, בעוד שמיקרו-בקר עשוי לכלול רק קילובייטים או אולי כמה מגה-בייטים (MB) של אחסון (1MB הוא 1,000KB, או 1,000,000 בתים). ל-Wio Terminal יש 4MB של אחסון תוכניות.
✅ בצעו מחקר קטן: כמה RAM ואחסון יש למחשב שבו אתם משתמשים לקרוא את זה? איך זה משתווה למיקרו-בקר?
### קלט/פלט
מיקרו-בקרים זקוקים לחיבורי קלט ופלט (I/O) כדי לקרוא נתונים מחיישנים ולשלוח אותות בקרה למפעילים. הם בדרך כלל מכילים מספר פינים כלליים לקלט/פלט (GPIO). ניתן להגדיר פינים אלו בתוכנה כקלט (כלומר הם מקבלים אות) או כפלט (הם שולחים אות).
🧠⬅️ פיני קלט משמשים לקריאת ערכים מחיישנים
🧠➡️ פיני פלט שולחים הוראות למפעילים
✅ תלמדו יותר על כך בשיעור הבא.
#### משימה
חקור את ה-Wio Terminal.
אם אתם משתמשים ב-Wio Terminal לשיעורים אלו, מצאו את פיני ה-GPIO. מצאו את סעיף *Pinout diagram* בעמוד המוצר של [Wio Terminal](https://www.seeedstudio.com/Wio-Terminal-p-4509.html) כדי ללמוד אילו פינים הם אילו. ה-Wio Terminal מגיע עם מדבקה שניתן להדביק על הגב עם מספרי הפינים, אז הוסיפו אותה עכשיו אם עדיין לא עשיתם זאת.
### גודל פיזי
מיקרו-בקרים הם בדרך כלל קטנים בגודלם, כאשר הקטן ביותר, [Freescale Kinetis KL03 MCU קטן מספיק כדי להתאים לשקע של כדור גולף](https://www.edn.com/tiny-arm-cortex-m0-based-mcu-shrinks-package/). רק ה-CPU במחשב אישי יכול למדוד 40 מ"מ על 40 מ"מ, וזה לא כולל את צלעות הקירור והמאווררים הנדרשים כדי להבטיח שה-CPU יוכל לפעול יותר מכמה שניות מבלי להתחמם יתר על המידה, גדול משמעותית ממיקרו-בקר שלם. ערכת המפתחים של Wio Terminal עם מיקרו-בקר, מארז, מסך ומגוון חיבורים ורכיבים אינה גדולה בהרבה מ-CPU של Intel i9 חשוף, וקטנה משמעותית מ-CPU עם צלעות קירור ומאוורר!
| מכשיר | גודל |
| ------------------------------- | --------------------- |
| Freescale Kinetis KL03 | 1.6 מ"מ x 2 מ"מ x 1 מ"מ |
| Wio Terminal | 72 מ"מ x 57 מ"מ x 12 מ"מ |
| Intel i9 CPU, צלעות קירור ומאוורר | 136 מ"מ x 145 מ"מ x 103 מ"מ |
### מסגרות עבודה ומערכות הפעלה
בשל המהירות הנמוכה וגודל הזיכרון הקטן, מיקרו-בקרים אינם מריצים מערכת הפעלה (OS) במובן של מחשב שולחני. מערכת ההפעלה שמפעילה את המחשב שלכם (Windows, Linux או macOS) דורשת הרבה זיכרון וכוח עיבוד כדי להריץ משימות שאינן נחוצות כלל למיקרו-בקר. זכרו שמיקרו-בקרים בדרך כלל מתוכנתים לבצע משימה אחת או יותר מאוד ספציפיות, בניגוד למחשב כללי כמו PC או Mac שצריך לתמוך בממשק משתמש, לנגן מוזיקה או סרטים, לספק כלים לכתיבת מסמכים או קוד, לשחק משחקים או לגלוש באינטרנט.
כדי לתכנת מיקרו-בקר ללא מערכת הפעלה, אתם זקוקים לכלים שיאפשרו לכם לבנות את הקוד שלכם בצורה שהמיקרו-בקר יוכל להריץ, תוך שימוש ב-APIs שיכולים לתקשר עם כל רכיב חיצוני. כל מיקרו-בקר שונה, ולכן יצרנים בדרך כלל תומכים במסגרות עבודה סטנדרטיות שמאפשרות לכם לעקוב אחר 'מתכון' סטנדרטי לבניית הקוד שלכם ולהריץ אותו על כל מיקרו-בקר שתומך באותה מסגרת עבודה.
ניתן לתכנת מיקרו-בקרים באמצעות מערכת הפעלה - לעיתים קרובות מכונה מערכת הפעלה בזמן אמת (RTOS), שכן אלו נועדו לטפל בשליחת נתונים אל ומרכיבים חיצוניים בזמן אמת. מערכות הפעלה אלו קלות מאוד ומספקות תכונות כגון:
* ריבוי משימות, המאפשר לקוד שלכם להריץ יותר מבלוק קוד אחד בו-זמנית, או על מספר ליבות או בתור על ליבה אחת
* רשתות לתקשורת מאובטחת דרך האינטרנט
* רכיבי ממשק משתמש גרפי (GUI) לבניית ממשקי משתמש (UI) על מכשירים עם מסכים.
✅ קראו על כמה מערכות RTOS שונות: [Azure RTOS](https://azure.microsoft.com/services/rtos/?WT.mc_id=academic-17441-jabenn), [FreeRTOS](https://www.freertos.org), [Zephyr](https://www.zephyrproject.org)
#### Arduino
![לוגו Arduino](../../../../../images/arduino-logo.svg)
[Arduino](https://www.arduino.cc) היא כנראה מסגרת העבודה הפופולרית ביותר למיקרו-בקרים, במיוחד בקרב סטודנטים, חובבים ויוצרים. Arduino היא פלטפורמת אלקטרוניקה בקוד פתוח שמשלבת תוכנה וחומרה. ניתן לרכוש לוחות תואמי Arduino מ-Arduino עצמם או מיצרנים אחרים, ואז לקודד באמצעות מסגרת העבודה של Arduino.
לוחות Arduino מקודדים ב-C או C++. שימוש ב-C/C++ מאפשר לקוד שלכם להיות קטן מאוד ולרוץ מהר, דבר נחוץ במכשיר מוגבל כמו מיקרו-בקר. הליבה של יישום Arduino מכונה סקיצה והיא קוד C/C++ עם שתי פונקציות - `setup` ו-`loop`. כאשר הלוח מופעל, קוד מסגרת העבודה של Arduino יריץ את הפונקציה `setup` פעם אחת, ואז יריץ את הפונקציה `loop` שוב ושוב, באופן רציף עד שהמכשיר יכבה.
אתם תכתבו את קוד ההגדרות שלכם בפונקציה `setup`, כמו התחברות ל-WiFi ושירותי ענן או אתחול פינים לקלט ופלט. קוד הלולאה שלכם יכיל קוד עיבוד, כמו קריאה מחיישן ושליחת הערך לענן. בדרך כלל תכללו עיכוב בכל לולאה, לדוגמה, אם אתם רוצים לשלוח נתוני חיישן רק כל 10 שניות, תוסיפו עיכוב של 10 שניות בסוף הלולאה כך שהמיקרו-בקר יוכל לישון, לחסוך באנרגיה, ואז להריץ את הלולאה שוב כעבור 10 שניות.
![סקיצה של Arduino שמריצה את setup תחילה, ואז מריצה את loop שוב ושוב](../../../../../translated_images/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.he.png)
✅ ארכיטקטורת תוכנה זו מכונה *לולאת אירועים* או *לולאת הודעות*. יישומים רבים משתמשים בזה מאחורי הקלעים וזהו הסטנדרט עבור רוב יישומי שולחן העבודה שמריצים מערכות הפעלה כמו Windows, macOS או Linux. הפונקציה `loop` מאזינה להודעות מרכיבי ממשק משתמש כמו כפתורים, או מכשירים כמו מקלדת, ומגיבה אליהם. תוכלו לקרוא עוד במאמר זה על [לולאת אירועים](https://wikipedia.org/wiki/Event_loop).
Arduino מספקת ספריות סטנדרטיות לאינטראקציה עם מיקרו-בקרים ופיני I/O, עם יישומים שונים מאחורי הקלעים כדי לפעול על מיקרו-בקרים שונים. לדוגמה, הפונקציה [`delay`](https://www.arduino.cc/reference/en/language/functions/time/delay/) תעצור את התוכנית למשך זמן נתון, הפונקציה [`digitalRead`](https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/) תקרא ערך של `HIGH` או `LOW` מהפין הנתון, ללא קשר לאיזה לוח הקוד מופעל. ספריות סטנדרטיות אלו מאפשרות לקוד Arduino שנכתב עבור לוח אחד להיות מקומפל מחדש עבור כל לוח Arduino אחר ולרוץ, בהנחה שהפינים זהים והלוחות תומכים באותן תכונות.
קיים אקוסיסטם רחב של ספריות Arduino צד שלישי שמאפשרות להוסיף תכונות נוספות לפרויקטים שלכם, כמו שימוש בחיישנים ומפעילים או התחברות לשירותי IoT בענן.
##### משימה
חקור את ה-Wio Terminal.
אם אתם משתמשים ב-Wio Terminal לשיעורים אלו, קראו שוב את הקוד שכתבתם בשיעור הקודם. מצאו את הפונקציות `setup` ו-`loop`. עקבו אחר הפלט הסדרתי עבור קריאות חוזרות לפונקציה `loop`. נסו להוסיף קוד לפונקציה `setup` כדי לכתוב לפורט הסדרתי וראו שקוד זה נקרא רק פעם אחת בכל פעם שהמכשיר מופעל מחדש. נסו להפעיל מחדש את המכשיר עם מתג ההפעלה בצד כדי להראות שזה נקרא בכל פעם שהמכשיר מופעל מחדש.
## מבט מעמיק יותר על מחשבים חד-לוחיים
בשיעור הקודם, הצגנו מחשבים חד-לוחיים. עכשיו נעמיק בהם.
### Raspberry Pi
![לוגו Raspberry Pi](../../../../../translated_images/raspberry-pi-logo.4efaa16605cee05489d8fa53941e991b3757aa24c20a95abdcf8cfd761953596.he.png)
[קרן Raspberry Pi](https://www.raspberrypi.org) היא עמותה מבריטניה שהוקמה בשנת 2009 לקידום לימודי מדעי המחשב, במיוחד ברמת בית הספר. כחלק ממשימה זו, הם פיתחו מחשב חד-לוחי, שנקרא Raspberry Pi. מחשבי Raspberry Pi זמינים כיום בשלושה סוגים - גרסה בגודל מלא, גרסת Pi Zero קטנה יותר, ומודול מחשוב שניתן לשלב במכשיר IoT סופי.
![Raspberry Pi 4](../../../../../translated_images/raspberry-pi-4.fd4590d308c3d456db1327e86b395ddcd735513267aafd4879ea2785f7792eac.he.jpg)
הגרסה האחרונה של Raspberry Pi בגודל מלא היא Raspberry Pi 4B. יש לה מעבד מרובע ליבות (4 ליבות) במהירות 1.5GHz, 2, 4 או 8GB של RAM, Ethernet במהירות ג'יגה, WiFi, 2 יציאות HDMI התומכות במסכים 4k, יציאת אודיו ווידאו קומפוזיט, יציאות USB (2 USB 2.0, 2 USB 3.0), 40 פיני GPIO, מחבר מצלמה למודול מצלמת Raspberry Pi, וחריץ לכרטיס SD. כל זה על לוח בגודל 88 מ"מ x 58 מ"מ x 19.5 מ"מ שמופעל על ידי ספק כוח USB-C של 3A. המחיר מתחיל ב-35 דולר, זול משמעותית ממחשב אישי או Mac.
> 💁 יש גם Pi400, מחשב הכל-באחד עם Pi4 מובנה בתוך מקלדת.
![Raspberry Pi Zero](../../../../../translated_images/raspberry-pi-zero.f7a4133e1e7d54bb3dbb32319b217a53c5b94871995a54647f2894b54206b8d8.he.jpg)
ה-Pi Zero קטן בהרבה, עם צריכת חשמל נמוכה יותר. יש לו מעבד ליבה אחת במהירות 1GHz, 512MB של RAM, WiFi (בדגם Zero W), יציאת HDMI אחת, יציאת micro-USB אחת, 40 פיני GPIO, מחבר מצלמה למודול מצלמת Raspberry Pi, וחריץ לכרטיס SD. הוא בגודל 65 מ"מ x 30 מ"מ x 5 מ"מ, וצורך מעט מאוד חשמל. ה-Zero עולה 5 דולר, והגרסה עם WiFi (Zero W) עולה 10 דולר.
> 🎓 המעבדים בשני אלו הם מעבדי ARM, בניגוד למעבדי Intel/AMD x86 או x64 שתמצאו ברוב המחשבים האישיים וה-Mac. אלו דומים למעבדים שתמצאו בחלק מהמיקרו-בקרים, כמו גם כמעט בכל הטלפונים הניידים, Microsoft Surface X, וה-Mac החדשים מבוססי Apple Silicon.
כל סוגי Raspberry Pi מריצים גרסה של Debian Linux שנקראת Raspberry Pi OS. זו זמינה כגרסה קלה ללא שולחן עבודה, שמתאימה לפרויקטים 'ללא ראש' שבהם אין צורך במסך, או גרסה מלאה עם סביבת שולחן עבודה מלאה, כולל דפדפן אינטרנט, יישומי משרד, כלי קידוד ומשחקים. מכיוון שהמערכת היא גרסה של Debian Linux, ניתן להתקין כל יישום או כלי שפועל על Debian ונבנה עבור מעבד ARM שבתוך ה-Pi.
#### משימה
חקור את ה-Raspberry Pi.
אם אתם משתמשים ב-Raspberry Pi לשיעורים אלו, קראו על הרכיבים השונים של החומרה בלוח.
* תוכלו למצוא פרטים על המעבדים המשמשים בעמוד [תיעוד החומרה של Raspberry Pi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/). קראו על המעבד המשמש ב-Pi שבו אתם משתמשים.
* מצאו את פיני ה-GPIO. קראו עוד עליהם בתיעוד [GPIO של Raspberry Pi](https://www.raspberrypi.org/documentation/hardware/raspberrypi/gpio/README.md). השתמשו במדריך [שימוש בפיני GPIO](https://www.raspberrypi.org/documentation/usage/gpio/README.md) כדי לזהות את הפינים השונים ב-Pi שלכם.
### תכנות מחשבים חד-לוחיים
מחשבים חד-לוחיים הם מחשבים מלאים, שמריצים מערכת הפעלה מלאה. משמעות הדבר היא שיש מגוון רחב של שפות תכנות, מסגרות עבודה וכלים שניתן להשתמש בהם לקידוד, בניגוד למיקרו-בקרים שתלויים בתמיכה בלוח במסגרות עבודה כמו Arduino. רוב שפות התכנות כוללות ספריות שיכולות לגשת לפיני GPIO כדי לשלוח ולקבל נתונים מחיישנים ומפעילים.
✅ אילו שפות תכנות אתם מכירים? האם הן נתמכות על Linux?
שפת התכנות הנפוצה ביותר לבניית יישומי IoT על Raspberry Pi היא Python. יש אקוסיסטם רחב של חומרה שתוכננה עבור ה-Pi, וכמעט כולן כוללות את הקוד הדרוש לשימוש בהן כספריות Python. חלק מהאקוסיסטם מבוסס על 'כובעים' - כך נקראים משום שהם יושבים על ה-Pi כמו כובע ומתחברים עם שקע גדול ל-40 פיני GPIO. כובעים אלו מספקים יכולות נוספות, כמו מסכים, חיישנים, מכוניות נשלטות מרחוק, או מתאמים שמאפשרים לחבר חיישנים עם כבלים סטנדרטיים.
### שימוש במחשבים חד-לוחיים בפריסות IoT מקצועיות
מחשבים חד-לוחיים משמשים בפריסות IoT מקצועיות, ולא רק כערכות פיתוח. הם יכולים להוות דרך עוצמתית לשלוט בחומרה ולהריץ משימות מורכבות כמו הפעלת מודלים של למידת מכונה. לדוגמה, ישנו [מודול מחשוב Raspberry Pi 4](https://www.raspberrypi.org/blog/raspberry-pi-compute-module-4/) שמספק את כל העוצמה של Raspberry Pi 4 אך בצורה קומפקטית וזולה יותר, ללא רוב החיבורים, והוא מיועד להתקנה בחומרה מותאמת אישית.
---
## 🚀 אתגר
האתגר בשיעור האחרון היה לרשום כמה שיותר מכשירי IoT שנמצאים בבית, בבית הספר או במקום העבודה שלך. עבור כל מכשיר ברשימה זו, האם לדעתך הם מבוססים על מיקרו-בקרים או מחשבים חד-לוחיים, או אולי שילוב של שניהם?
## שאלון לאחר השיעור
[שאלון לאחר השיעור](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/4)
## סקירה ולימוד עצמי
* קרא את [מדריך ההתחלה של Arduino](https://www.arduino.cc/en/Guide/Introduction) כדי להבין יותר על פלטפורמת Arduino.
* קרא את [ההקדמה ל-Raspberry Pi 4](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) כדי ללמוד יותר על Raspberry Pi.
* למד יותר על כמה מהקונספטים והראשי תיבות במאמר [What the FAQ are CPUs, MPUs, MCUs, and GPUs בכתב העת להנדסת חשמל](https://www.eejournal.com/article/what-the-faq-are-cpus-mpus-mcus-and-gpus/).
✅ השתמש במדריכים אלו, יחד עם העלויות המוצגות על ידי הקישורים במדריך [החומרה](../../../hardware.md), כדי להחליט על איזו פלטפורמת חומרה אתה רוצה להשתמש, או אם אתה מעדיף להשתמש במכשיר וירטואלי.
## משימה
[השווה והבדל בין מיקרו-בקרים למחשבים חד-לוחיים](assignment.md)
---
**כתב ויתור**:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). בעוד שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור הסמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.