הרצאה 1 — מה זה ארדואינו?
טוען נגן…
תמלול
## מבוא לסדנה
שלום. ברוכים הבאים לסדנת מייקרים. הרעיון של הסדנה הזאת, עוד מעט אני גם אעבור על הלו"ז ועל מה נעשה, אני גם אציג את עצמנו ומה עומד מאחורי כל הדבר הזה. הרעיון של הסדנה הוא בעצם להקנות לכם את כל הידע הנדרש שקשור איכשהו ל-Arduino ולסביבתו. זאת אומרת, כשתסיימו את הסדנה, המטרה שלי ושל שחף, השותף שלי שחלקכם דיברתם איתו, היא שתהיו מומחים ל-Arduino ולכל הסביבה, לכל הרכיבים הנפוצים וכולי.
## הצגת המרצים
אני אציג את עצמנו קודם כול. אני רון, אני בהכשרתי מהנדס חשמל ומחשבים, עשיתי תואר בבן-גוריון. עבדתי כמה שנים ב-Intel, הייתי מהנדס מעבדים ועד לתפקידי ניהול.
שחף הוא מהנדס חומרים תואר ראשון, מכונות תואר שני. עשה גם קורס Full Stack, אוהב לאסוף תארים מאוניברסיטאות שונות. עבד ב-HP, גם כן תפקידי ניהול וכולי.
שנינו מגיעים מרקע מאוד רחב גם בתעשייה בכלל וב-Arduino ומייקרים בפרט. אנחנו חבר'ה שמאוד אוהבים להעביר את הידע ולהעביר את המקל. כיף לנו ללמד. זה שלנו מאז שאנחנו צעירים. דרך אגב, את שחף אני מכיר כבר איזה 20 שנה, עוד לפני שהיה לו זקן. הוא לא פה עכשיו כי הבחור בוונציה ואנחנו פה בארץ, אבל בסדר, נסלח לו על זה, שייהנה.
## הנחיות וציפיות מהסדנה
לפני שאני מתחיל, אני רק רוצה להגיד שאנחנו הולכים ללמוד פה חומר שחלקו הוא חומר של מייקרים, דברים שהם קצת פשוטים וטריוויאליים, וחלקו הבאתי אישית מהתואר שלי בהנדסת חשמל ומהעבודה שלי ב-Intel. הבאתי את זה כי אני רואה את זה כבסיס מאוד חשוב כדי להיות מייקר טוב ולעשות באמת מה שאתה רוצה. הראייה שלי היא שברגע שבתאוריה אתה שולט ברמה מאוד גבוהה ויש לך קצת ניסיון מעשי, השמיים הם הגבול. והמטרה שלי היא שאתם תדעו אחד לאחד מה שאני יודע, שלא יהיה לי שום יתרון מקצועי עליכם או יתרון בידע. אני באמת רוצה להעביר לכם כל מה שאפשר.
וזה בסדר אם יש משהו שהוא לא בסדר לכם. זאת אומרת, אם יש חומר שהוא קצת קשה וקצת לא מובן בפעם הראשונה שאתם שומעים את זה, אז אל תהססו, תשאלו. אל תפחדו לתת לחומר קצת לשקוע. לפעמים דברים שאומרים, גם אנחנו מדברים על חומר שהוא לא תמיד נוח לעיכול, וגם אנחנו מדברים ב-8-9 בערב, לפעמים צריך איזה יום-יומיים כדי שהדבר הזה ייפול. לשאול דברים ב-WhatsApp חופשי. אנחנו 24/7 ב-WhatsApp איתכם לשאלות.
שוב, המטרה שלנו כשנסיים את הסדנה הזאתי, אתם תהיו ספצים ותעשו פרויקטים ב-Arduino בשליטה כמה שיותר מלאה. עוד מעט אני גם אדבר מה קורה אחרי הסדנה, מה בדרך כלל החבר'ה עושים אחרי הסדנה.
## סבב היכרות
לפני שאני מתחיל, הייתי שמח, בגלל שיש אנשים – אנחנו עובדים עם כל קצוות הקשת מה שנקרא. יש לנו מישהו במועדון חברים שהוא עושה דוקטורט ב-Machine Learning, ויש לנו מישהו שבחיים לא נגע ב-Arduino לפני שהוא הגיע אלינו. זאת אומרת, רוצים לראות את כל הטווח המקצועי מה שנקרא. והייתי שמח לדעת במילה, שתיים, שלוש על עצמכם. הייתי שמח אם נעבור אחד-אחד כזה. טל, אולי תעשה לנו סיפתח? תן באיזה שתי מילים עליך, ואם יש לך רקע, אם לא, ומאיפה הגעת אלינו.
- **טל:** תודה רבה. קודם כול, אני טל. אני מגיע ממודיעין, מילואימניק. סיימתי מילואים לפני חודש וחצי בערך, ואני מאמין שנחזור לשם, מקווה שזה לא יהיה כמה שיותר מהר. בכל אופן, סטודנט להנדסת חשמל ואלקטרוניקה, שנה ד' לקראת סיום תואר.
- **רון:** איפה? באריאל?
- **טל:** באריאל. בהתמחות במחשבים, קצת נוגע בחומרה וב-RF. סליחה, בתקשורת, אבל אני מכוון בעיקר לעולם של RF, מאוד מעניין אותי, אם מישהו מכיר, תחום הרדיו והגלים. בנושא Arduino, האמת לא יצא לי לגעת לאורך התואר אפילו פעם אחת. יצא לי קצת לגעת בשפות תכנות, בתחילת ולאורך התואר, C++ למדתי שנה ראשונה. ואמרתי, אולי אם אני קצת אדחוף את עצמי בכוח לעולם ה-Arduino, אז לא תהיה לי ברירה, אצבור ניסיון וגם לחזור לעבוד עם שפות, שאני בטוח שזה שימושי, גם לא רק ל-Arduino, ופשוט ייתן לי קצת סטירה ויעורר אותי ויחזיר לי את המוטיבציה.
- **רון:** אתה שנה אחרונה, לקראת חיפוש עבודה וכאלה?
- **טל:** לקראת חיפוש עבודה, אני כבר שנתיים מחפש עבודה.
- **רון:** בסדר, Welcome to the club. אני יכול לעודד אותך שאני, לפני שהתקבלתי ל-Intel, שלחתי משהו כמו, לא מגזים איתך, 1,400 קורות חיים.
- **טל:** אם הייתי סופר, אני לא יודע. קורות חיים היו הורגים אותי.
- **רון:** כן, אלה הימים, מה לעשות. אבל כן, אני מסכים איתך חד משמעית שקצת חידוד שפות ואלגוריתמיקה זה מעולה, גם לעבודה. בעיקר C++, כי זה מאוד דומה גם לשפה שמשתמשים בה, Verilog, VHDL, דומות לשפה הזאת. סבבה לגמרי, מגניב. תודה רבה. מי לוקח? רותי? אביב?
- **אביב:** אני אציג את עצמי. היי, אני אביב. ברקע יש לי טכנאי אלקטרוניקה וחשמל. נגעתי קצת במעגלים וב-Assembly, שפת C. בהמשך עשיתי תואר במערכות מידע, כיום אני מתעסק בתחום הסייבר והטכנולוגיה. אני אוהב ליצור דברים, לבנות כל מיני דברים עם Raspberry Pi, יותר בשכבות הגבוהות. ועכשיו ככה רוצה להעמיק את הידע בתחום של Arduino, ב-ESP32, STM32 גם ראיתי שיש. למדל דברים שהייתי רוצה שלא להשתמש באמצעות Raspberry Pi וללקחת משימות גדולות ולהלביש אותן על איזשהו Arduino, איזשהו ESP32 ולרוץ עם זה קדימה.
- **רון:** מדהים. אביב, מאיפה אתה בארץ דרך אגב?
- **אביב:** אני מחריש. במקור מחולון, אבל מכיר את אזור המרכז טוב. ב-4 שנים האחרונות בחריש.
- **רון:** חריש אחלה עיר.
- **אביב:** היא גדלה מאוד והיא עדיין מהווה פוטנציאל טוב למי שרוצה לעבור לגור או להשקיע.
- **רון:** להשקעה, להשקעה.
- **אביב:** כן.
- **רון:** מגניב. רותי? אני מכיר, אבל תציגי לאחרים.
- **רותי:** היי, אני רותי, סטודנטית למתמטיקה, לומדת כרגע Full Stack. תמיד אהבתי לבנות, לתקן מחשבים, לעבוד עם חלקים ודברים כאלה. ובכל מקרה, רציתי לקחת את זה לתחום קצת יותר מקצועי ולהבין איך אני לוקחת את זה הלאה.
- **רון:** יאללה, מגניב לגמרי חברים.
נעוף על מה שבעצם אנחנו הולכים לעשות. הסדנה מורכבת מחמש הרצאות. היום אנחנו ניכנס לכל מה שקשור לחשמל, ל-Arduino וסביבתו. זאת אומרת, נדבר על מבוא למעגלים חשמליים, מה זה חשמל, יסודות, רכיבים וכולי, ובסוף נסתכל גם על ה-Arduino, על ה-board עצמו, נפרק אותו לרכיבים. המטרה היא שאתם תסתכלו היום על ה-board ותראו כל חלק וחלק ותבינו מה הדבר הזה ומה השימוש שלו. כמובן שיהיה את הרקע המספיק כדי להבין קצת חשמל, שוב, לאלה שלא נמצאים פה, ניכנס לזה.
## נושאי ההרצאות
בשיעורים הבאים אנחנו נדבר על סביבת Arduino, שזה Arduino IDE, שזו התוכנה שעובדים איתה, והקוד ++C שמשתמשים בו כדי לעשות תוכניות כאלה ואחרות, להפעיל פונקציות כאלה ואחרות, רכיבים וכולי.
בשיעור השלישי והרביעי כבר תקבלו... אם אין לכם את זה עדיין, לדעתי לרובכם יש, אבל אם למישהו אין נשלים לו את זה, ממש תקחו את החיישנים בידיים שלכם ותשתרכיבו, ותכניסו קוד ותפעילו. נעבור רכיב רכיב, נעבור אחד אחד, נראה את הפונקציה שלו, נראה את הפיזיקה מאחורי אותו רכיב ונפעיל את הדבר הזה. הרעיון הוא שבשני שיעורים נעבור על כל החיישנים המרכזיים והחשובים שיש בפרויקטים של Arduino, הנפוצים ביותר.
בשיעור החמישי נעשה פרויקט עם כלל החיישנים. זאת אומרת, נעשה קוד שמפעיל לנו את כל החיישנים. זה יכול להיות משהו סינכרוני, זה יכול להיות איזשהו sequence שמפעיל חיישן אחד אחרי השני, זה יכול להיות כמה דברים. זה יכול להיות 1001 דברים, לאן שנרצה לקחת את זה.
הרעיון בסדנה הזאת היא לא רק להקנות לכם ידע ולהפוך אתכם למקצוענים בתחום, אלא גם ליישר לכם קו למי שירצה אחרי זה להצטרף למועדון המייקרים שלנו. היום יש לנו מועדון מייקרים של חבר'ה שיש להם רקע כזה או אחר ב-Arduino ובפרויקטים. לא יודע אם יצא לכם לראות, אבל היה לנו ממש מפגש פרונטלי ביום ראשון האחרון. פרסמנו את זה נראה לי בקבוצה.
אנחנו נפגשים בדרך כלל פעם בחודש, פעם בחודש וחצי, וב-Zoom אנחנו עושים מפגש כל שבוע. בתכלס אנחנו בונים פרויקטים, מדברים קלים כמו זרועות רובוטיות או עוקב שמש, כל מיני דברים כאלה, עד דברים סבוכים כמו לבנות רחפן או מדפסת תלת-ממדית. וגם אנחנו עושים דברים להעשרה, כמו ללכת למקומות ממש להדפיס בתלת-ממד, או לתכנן board-ים חשמליים, ממש הלחמות. זה יכול ללכת ל-1001 מקומות.
אבל שוב, הרעיון הוא שמי שירצה לסיים את הסדנה הזאת ולהמשיך ולהעמיק ולעשות פרויקטים ולמלא את הבית שלו במה שנקרא בגאדג'טים ובבית חכם וכל הדברים האלה, אז חד משמעית מועדון המייקרים יוכל לתת לו את המקום הזה. זאת אומרת, אנחנו פה בסדנה נותנים את הרקע כדי שאם תרצו תוכלו גם לעשות את זה לבד. מועדון המייקרים זה מסגרת וסביבת עבודה וחברים לעבודה כדי שבאמת הדבר הזה יצא לפועל. וזהו, ככה על רגל אחת.
- יש לי שאלה, זה בנוסף לסדנת מייקרים של MakeLab?
- לא לא, MakeLab זה משהו אחר.
- אתה מכיר אותם, נכון? ב...
- כן, אני מכיר אותם. הם יושבים ביהוד, חבר'ה טובים. אני מאוד אוהב אותם.
- כן, אבל כאילו אנחנו מדברים כרגע על קבוצה אחרת, נכון?
- אני אגיד לך מה ההבדל, אני אנסה להסביר מה ההבדל. MakeLab זה מקום שהוא מקום מדהים, אנשים זהב. אני מת על המקום הזה, היינו שם יותר מפעם אחת. הרעיון שלו הוא יותר קצת דומה לסוג של תנועת נוער, זאת אומרת אתה רואה שם הרבה ילדים והרבה חבר'ה שמתחילים. אתה רואה שם כמה פרויקטים קצת יותר רציניים, אבל זה לא קיים הרבה. זה קצת לחבר'ה, אתה יודע, זה תחביב כזה של מישהו ולא עכשיו... אתה לא תראה שם מישהו בונה רחפן או מדפסת תלת-ממד, את הדברים האלה. תראה דברים קצת יותר פשוטים. אבל כן יש קהילה תומכת ויש לך את המקום להגיע אליו והאנשים טובים. אתה מבין? זה עונה על צרכים אחרים פשוט.
- הבנתי.
- כי אני לא רואה את זה במקום, הם עושים את שלהם.
- והמפגש, המפגש שאתה אומר של המייקרים זה כאילו במסגרת מי שלמד את... כאילו מי שעבר את הסדנה הזו בעצם?
- נכון. אז זה כאילו חבר'ה... יום ראשון נגיד האחרון נפגשנו במשרדים בתל אביב. הבאנו אלינו מרצה אורח, דרך אגב קוראים לו אבי תלמי, הוא גם בקבוצה, הוא בחור תותח. הביא לנו... אם תגלול ממש בקבוצת WhatsApp ב-Arduino JS Israel, אז תלך ליום ראשון, תראה שגם שלחנו...
- ראיתי תמונות, שסביב איזה שולחן...
- בדיוק. ישבנו שם, חלק לא יכלו להגיע אז הצטרפו ל-Zoom והיו בטלוויזיה, הרוב היו איתנו. וזהו, הוא הראה לנו כל מיני פרויקטים מגניבים. הוא עשה... אבי תלמי המרצה האורח, הוא עשה קוביית לדים כאלה, מטריצה, שאתה יכול לעשות בה בעצם מה שאתה רוצה. אתה יכול להפעיל אותה ככה שאם היא תשמע קול היא תאיר, ותבזיק בדיוק בקורלציה לגובה הקול שלך, לעוצמת הקול שלך. אתה יכול להגיד שסתם תעשה כמו Snake, שזה יחליף צבעים. זה היה ממש מגניב, פרויקט חמוד ומגניב. והוא השתמש שם ב-ESP32 ולא ב-Arduino, ממש עשה את זה ב-WiFi, נכנס, עשה אפליקציה, בקיצור זה היה ממש יפה. פרויקט ממש חמוד.
נפגשנו גם באותה פגישה, הראינו להם את Arduino Studio שזה איזושהי תוכנה שפיתחנו כדי לעבוד עם Arduino. אנחנו ניגע בזה גם בהמשך כשנדבר על סביבת Arduino בשיעור השני. ועשינו כל מיני דברים. תכלס רצינו לעבוד, הייתה מטרה לבוא לעבוד, אבל בגלל שאתה יודע, בסוף אתה מגיע ואנשים חופרים, אנשים מדברים, אנשים נשאבים, אז נסחפנו קצת. אבל היה ממש מעניין, היה מעולה. והיה כיף, אנשים טובים.
אבל בלי קשר, אנחנו כל שבוע נפגשים ב-Zoom ובונים ביחד פרויקטים, בדיוק כמו שנעשה פה דרך אגב בשיעור החמישי. אנחנו ניקח מזה טעימה, איך בעצם עושים את הדבר הזה. עוד שאלות? או שנקפוץ למים?
- אפשר לקפוץ.
- יאללה, מגניב, בואו נקפוץ.
## מבוא למעגלים חשמליים
עכשיו אני הולך לתת רקע קצת על מה זה חשמל ואיך העולם הזה בעצם עובד. אנחנו נדבר על היסודות של היסודות, ממש על ה-basics מה שנקרא. המטרה היא שהבסיס הזה יישב טוב לאנשים בראש ובעצם עם זה אנחנו נוכל לעבוד ויהיה לנו שפה משותפת שבמשך הסדנה, בשיעורים הבאים, נדבר על זה עוד ועוד ועוד עד שזה בסוף יחלחל ויגיע למטה.
אז יפה. החשמל שלנו בעצם, אם אני מנסה לדבר ב-high level, הוא מדבר על שלושה חלקים עיקריים: נדבר על ה-voltage, שזה המתח, בדרך כלל זה מה שאנשים מכירים, זה יש לנו בבית, מהשקע יוצא לי מתח. אנחנו מכירים זרם חשמלי, שלא להתחשמל, יעבור בך זרם וכולי וכולי, זה גם מושג ששמענו ביום-יום, והתנגדות. התנגדות זה בעצם... נדבר על זה קצת בהמשך, אבל איזשהו הקושי של הזרם לעבור את הדרך שהוא עובר.
## זרם ישר (DC) לעומת זרם חילופין (AC)
ואם אני נכנס קצת לעולם המתח, ה-voltage, אז יש לי שני סוגי voltage עיקריים, שני סוגי מתח עיקריים:
יש לנו את הזרם הישיר, שזה DC, Direct Current, שהוא... המציא אותו, גילה אותו יותר נכון, תומאס אדיסון. אפשר לדמיין את זה בעצם כזרם או אלקטרונים שזורמים בכיוון אחד. זאת אומרת, הם מגיעים מנקודה A לנקודה B בפס ישר. המתח הוא קבוע, זאת אומרת אם אני אומר מתח DC של 3V, אז הוא נשאר קבוע כפס אחיד.
הרכיב העיקרי שתמצאו, מתח ה-DC, ה-voltage, זה בסוללות. בדרך כלל בסוללות, בגלל ההרכב הכימי שלהן, כל סוללה שתראו - אם זה AA, AAA, כל הסוללות האלה, לא משנה איזה סוללה תמצאו, בגלל סוג ההרכב הכימי שהסוללה בנויה בה, היא מוציאה מתח DC. וזה בדרך כלל שמה פוגשים את המתח הזה. בגלל זה לרוב לרוב לרוב כשאתם מתעסקים ב-Arduino, הוא יוציא DC, לפעמים גם PWM, עוד שנייה נדבר על זה, אבל זה יכול להיות לפה ולפה.
זרם חילופין, שזה ה-AC... ניקולה טסלה בעצם מצא את הזרם, המתח הזה. זרם חילופין, מתח חילופין, AC.
העיקרון הוא שאם אני מסתכל על ה-AC לעומת ה-DC, אז DC כמו שאמרנו הוא קו ישר, שנשאר על voltage קבוע. לצורך העניין 3V - אני נותן 3V DC, אז זה פשוט 3V קבוע.
AC הוא משתנה. זאת אומרת הוא עולה, יורד, עולה, יורד, עולה, יורד סביב האפס. אם אני רוצה שלצורך העניין יעלה ויירד, יעלה ויירד סביב ה-3V, אז אני אצטרך לעשות AC ועוד DC. זאת אומרת, לקחת את ה-AC ולהוסיף לו 3V של DC, ואז זה פשוט יעלה אותו 3V למעלה.
מה שמגיע לכם בבית מהשקע החשמלי, מתחנת כוח, זה AC. היתרון של AC הוא שלטווחים ארוכים הוא שומר על עצמו יותר ולא מתבזבז. זאת אומרת, החוט מתחמם פחות בדרך, ופחות מתח מתבזבז על חום ועל דברים כאלה ואחרים. אם אני מוציא לצורך העניין 300V AC בתחנה, יגיע לי משהו כמו 280V, 270V בבית, תלוי כמובן מה המרחק, אבל לא מתבזבז הרבה. לעומת DC, ש-DC אם תשלחו 300V בתחנה, גם החוט יתחמם לגמרי, יהיה חם בטירוף, וגם יגיע לכם איזה 40V, 50V לבית. זאת אומרת שמתבזבז הרבה בדרך.
אז שוב, היתרונות של AC הם במעבר וחיסכון באנרגיה לאורך טווח פיזי, והיתרונות של DC הם פשוט שבטריה עובדת ככה. היום בטריה מיוצרת ב-DC ומוציאה DC, ובעצם זה למה משתמשים בזה בעיקר. שאלות עד לפה?
## PWM (Pulse Width Modulation)
מגניב. עוד סוג של מתח שצריך לדבר עליו, שהוא בעיקרון DC ובעיקרון AC, איפשהו יושב שם באמצע, זה PWM. זה לא סוג מתח כמו שזאת צורת מתח. PWM זה פשוט גל ריבועי. קוראים לזה גל ריבועי בעברית. והרעיון שלו הוא שהוא עובד כ-DC לפרק זמן מסוים, ואז עוצר. לפרק זמן מסוים חוזר, לאותו פרק זמן עובד כאילו DC, ואז שותק. זאת אומרת שהוא עובד on, off, on, off, on, off, on, off.
היתרון בדבר הזה הוא שכשאני מחבר את המתח הזה לאיזה שהוא רכיב חשמלי כמו מנוע, כמו סרוו שיש לנו בהמשך, כל מיני דברים כאלה ואחרים, נורת LED אפילו אני יכול להפעיל עם זה - היתרון הוא שכדי לשחק בעוצמה, אם אני רוצה להגדיל את העוצמה של המנורה, או להגדיל את המהירות של המנוע שהוא זז, כל מה שאני צריך לעשות זה טיפה להאריך או לקצר את הזמן ש-DC עובד, שהוא לא על אפס. זאת אומרת, אם אני רוצה שהמנוע יסתובב לי מהר יותר, אני רק אאריך את הריבוע הזה טיפה יותר לפה, ואז אני אחתוך. רואים את העכבר שלי, נכון? רואים, מדהים. אז אני רק יכול להאריך את זה לפה...
- זה בעצם 1 או 0, נכון?
- כן, קוראים לזה 1 או 0, אבל בתכלס ה-1 הזה זה לא באמת 1, זה volt כלשהו. אתה יכול להגיד 5V עד 0V. ואז נגיד הסרוו שלי לצורך העניין, אם הסרוו או המנוע DC עובד על 5V, אז מה אני אעשה? ה-PWM שלי, הגל הריבועי, הקטע העליון שלו יהיה על 5V והתחתון יהיה 0. ואז אני פשוט אשחק עם כמה הוא ב-5V לעומת כמה הוא 0 בכל מחזור. שזה נקרא duration time, מחזור פשוט, תדר.
## PWM
אני לא אכנס פה יותר מדי להגדרות, כי אמפליטודה, Duty Cycle, בואו נסתכל על זה ונבין. אמפליטודה זה פשוט הגובה. זאת אומרת, אם אני ב-24V, אז האמפליטודה היא 24V. ה-Duty Cycle זה האורך שהוא למעלה ביחס למחזור אחד.
וזהו. זה סיגנל שכן משתמשים בו, אתם תשמעו עליו לא פעם שמשתמשים ב-Arduino. בגלל שהרבה רכיבים עובדים עם PWM, אוקיי? זה נותן לנו נוחות ממש גדולה לשלוט בעוצמה, אוקיי? לשלוט בעוצמה. תחשבו שאם לצורך העניין לא היה את הדבר הזה, הייתם צריכים להוציא איכשהו DC ולשחק עם העוצמה של הוולט. זאת אומרת, הוולט עצמו צריך לרדת מ-5 ל-0 ואתם משחקים עם איזה משהו, זה מאוד מאוד יהיה קשה. אתם יכולים לעשות איזשהו... כל המומחים פה, אני מניח, חשמל, אפשר לעשות מחלק מתח, אבל אז יש רק קפיצות וכולי. אז PWM נותן לנו מענה מאוד טוב לדבר הזה.
אז בעצם הוא נותן לנו שליטה איך אני משחק ברכיבים שלי. איך אתם יכולים לחשוב על הדבר הזה? אם יש לי מכונית על שלט, אוקיי? ואני רוצה להגביר את המהירות שלה או להנמיך את המהירות שלה, נכון? הרי יש רגישות לג'וייסטיק של השלט. אם אתם מזיזים אותו קצת או מזיזים אותו הרבה, מה שמשתנה זה ה-PWM למנוע. זאת אומרת, בסוף ה-Arduino מקבל: תקשיבו, הוא לחץ חזק על הג'וייסטיק, אז יצא PWM שהוא גדול, הוא ירחיב את הפיק שלו ב-DC, ירחיב אותו, ואז המנוע, הגלגלים יסתובבו מהר יותר. לעומת זאת, אם אני אעשה חלש, אז הוא יקצר את זה ואז הגלגלים ילכו לאט יותר.
זה עובד אותו דבר על רכב חשמלי, זה עובד אותו דבר על רחפן. יש לו ארבעה מנועים שמקבלים PWM. זה עובד... יכול להגיע עד למדפסת, שאיזה מהירות אתה רוצה שהמנוע שלה יעבוד. שם ספציפית עובדים ב-Stepper motor, אבל זה כבר משהו אחר.
אבל זה העיקרון, אוקיי? העיקרון הוא שאתה שולט במהירות, ובגלל זה זה סוג גל, סוג מתח מאוד מאוד חשוב שמשתמשים בו.
## מתח (Voltage)
יפה. אז Voltage – דיברנו על מה זה Voltage, ו-Volt וזה, אבל לא נתנו לזה באמת הגדרה. אז ההגדרה של Voltage זה הפרש פוטנציאל חשמלי בין שתי נקודות במעגל. עוד מעט לכל האנשים שלא שמעו את זה אף פעם, עוד מעט אני אתן לזה אנלוגיה כדי להבין את הדבר הזה.
אז יפה. זאת האנלוגיה. היום כשאתם מסתכלים על מים ועל שני דליים שמחוברים בצינור, לצורך העניין, ברור לכם לגמרי מה יכול לקרות, מה צריך לקרות. אם הם יהיו באותו גובה, כמו במקרה השמאלי, אז שום מים לא יעברו מדלי אחד לשני. אין שום סיבה, זה יישאר כקו ישר בשני הדליים ולא יהיה מעבר של מים.
לעומת זאת, אם אני אקח דלי אחד גבוה יותר מהשני, ארים אותו, ושניהם מחוברים באיזשהו צינור, אז כל המים שיהיו פה יישפכו למטה ויירדו עד שהדלי הזה יתמלא ויישפך לצדדים, אוקיי? זה פשוט ירד ויתרוקן. אם התחתית של הדלי הזה גבוהה מהעליון של הדלי הזה, אז כל הדלי יתרוקן.
אז אותו דבר, אותו עיקרון זה מתח בעצם. אם אני מסתכל על הצד השמאלי ומספר האלקטרונים... אוקיי, אלקטרון... אולי שווה להגדיר את המילה: אלקטרון זה המטען השלילי באטום, אוקיי? אין שום סיבה להסתבך עם זה, אם אתם לא מבינים, אפשר לקרוא על זה קצת בגוגל להיכנס קצת פנימה. אלקטרון הוא המטען השלילי באטום. ובעצם תזונה שלו זה מה שנותן לנו זרם, שזה בעצם נותן לנו גם מתח.
ברגע שיש לי מספר אלקטרונים זהה בין שני מקומות, זאת אומרת הפרש הפוטנציאל שלי הוא אפס. ה-Voltage הוא אפס. אין פה שום דבר, שום דבר לא ירצה לזוז משמאל לימין או מימין לשמאל.
ברגע שיש לי הרבה אלקטרונים במקום אחד וקצת אלקטרונים במקום אחר, האלקטרונים שנמצאים פה ירצו לרדת למטה ולהשוות את עצמם עד שהאלקטרונים ב-A יהיו שווים לאלקטרונים של B, ואז זה ייעצר.
זאת אומרת, המתח זה איזשהו הפרש פוטנציאל של שתי נקודות עם מתחים שונים. שהמתחים פשוט מוגדרים על ידי מספר האלקטרונים בכל מקום, אלקטרונים חופשיים.
הרעיון הוא שאפשר להסתכל על הדבר הזה כמו שמסתכלים על היקום בכלל – יש פה איזושהי שאיפה לאיזון. הדברים רוצים להיות באיזון. אם יש לנו הרבה אלקטרונים במקום אחד ומעט אלקטרונים במקום שני, האלקטרונים יישפכו להגיע מהמקום שיש בו הרבה למקום שיש בו מעט, וזה בעצם ייתן לנו זרם. מעבר של אלקטרונים בתוך הצינור הזה, או בכללי מעבר של אלקטרונים בתוך חוט, זה בעצם נותן לנו זרם.
## התנגדות (Resistance)
הדבר השלישי שאנחנו צריכים לדבר עליו: דיברנו על זרם שזה מעבר האלקטרונים, דיברנו על מתח שזה בעצם הבדל האלקטרונים או בשפה המקצועית הפרש פוטנציאלים בין שני מקומות. הדבר השלישי שצריך לדבר עליו זה ההתנגדות.
כשאני רוצה להעביר אלקטרונים ממקום אחד למקום שני, אני יכול במרכאות לשים לו מכשולים, להקשות עליהם את הדרך. ואז אם אני מקשה עליהם את הדרך, אתם צריכים או מתח גבוה יותר או זרם... מתח גבוה יותר כדי להעביר בעצם את ההתנגדות.
ובעצם יש לנו מפה את חוק Ohm הנפלא, אוקיי? אפשר להסתכל על זה שככל שיש לי התנגדות גדולה יותר, ככה אני צריך מתח גדול יותר. זאת אומרת, אני צריך להרים את דלי A כדי שהאלקטרונים יצליחו לעבור כמה שיותר מנקודה A לנקודה B. שאלות עד לפה?
## מוליך ומבודד (Conductor & Insulator)
מגניב. שתי הגדרות שזה מדהים אותי שיש פה שקט בחשמל, כי זה בדרך כלל המקום לשאלות, אבל אוקיי.
יש שני רכיבים עיקריים שקשורים להעברת חשמל או למתח בכללי. אחד, אם אני מסתכל ממש על הנגדים לצורך העניין, אחד זה המבודד, אוקיי? פלסטיק, כל מיני דברים כאלה, עץ, זה דברים שלא מוליכים חשמל. תמיד אמרו לכם: כשאתם מתעסקים בחשמל שימו כפכפים. למה שימו כפכפים? כי אתם, יש בכם מים ויש בכם מלחים, אתם מוליכים חשמל. דרך אגב, אתם מוליכים מעולה, יחסית. הכפכפים שלכם פחות. וזה למה אמרו לכם בעצם תנתקו את עצמכם מהקרקע.
יש חומרים שהם מבודדים, שמאוד מאוד קשה למתח, גם אם תשים מתח מאוד מאוד גבוה, מאוד מאוד קשה יהיה לו להוליך חשמל דרכם.
מצד שני, יש מוליכים, שזה המוליכים הידועים לשמצה זה הברזלים למיניהם. אוקיי, לא כולם, אבל הברזלים למיניהם, שבעצם איתם מוליכים חשמל. אם תקחו איזשהו כבל חשמל... עזבו, לא המלצה, אל תיגעו בשום כבל חשמל. אם תיגעו עוד מעט בחוטים של Arduino, אתם תפתחו אותם ואתם תראו באמצע חוט מתכת שעובר, שזה עליו בעצם מוליך כל הזרם החשמלי.
יש מוליכים שהם יותר טובים, יש מוליכים שהם פחות טובים. הכל עניין של מחיר כמובן. וזהו, זה בסוף מתחלק לרכיבים שמבודדים, מוליכים. יש גם דברים שהם באמצע, אבל זה בהמשך.
## מעגל חשמלי וסכימה
קצת על מעגלי חשמל וסכימה.
יש שני סוגים של חיבור בחשמל, אוקיי? זה סוג של הגדרה, definition של ככה זה נקרא. יש חיבור בטור וחיבור במקביל.
חיבור בטור, העיקרון של חיבור בטור הוא שאם אני הולך מנקודה אחת של פלוס בסוללה, אוקיי, והולך דרך אחת, בדרך הכי קצרה כדי להגיע למינוס של הסוללה, או הפוך, אוקיי, לא משנה, אתם תעברו דרך שתי המנורות האלה, אז המנורות האלה מחוברות בטור. אם נמצאים באותה דרך, אז הן מחוברות בטור.
כשזה מחובר בטור, אז מה שעושים, המתח, אוקיי? איך מסתכלים על זה מתמטית? המתח, לצורך העניין, אם הסוללה מייצרת 1.5V, אז היא תתחלק שווה בשווה בין המנורות האלה, במידה ויש להם את אותה התנגדות, היא תתחלק שווה בשווה. זאת אומרת, 0.75V יגיע לפה ו-0.75V יגיע לפה, וזה יתחלק. לעומת זאת הזרם, אוקיי? הזרם עובר על חוט אחד ויעבור בשתיהן אותו הזרם בדיוק. זאת אומרת, אם הזרם בימנית הוא 2A לצורך העניין, או 2mA, כנ"ל הזרם בשמאלית, יהיה אותו זרם בדיוק.
ככה זה בטור: הזרם יהיה אותו זרם, המתח מתחלק, וההתנגדות, נכון, שכחתי לציין, ההתנגדות שיש לנו פה בתוך המנורות, ההתנגדות של זה ועוד ההתנגדות של זה. זאת אומרת ממש חיבור סכמה של שתי ההתנגדויות.
דרך אגב, התנגדות זה משהו שרשום על כל רכיב, כמעט על כל רכיב, אוקיי? אם זה לא סיני, גם כאלה נפגוש, אוקיי? אבל כמעט על כל רכיב רשום מה ההתנגדות של זה. ועל הסוללה רשום את הוולט, ככה שיש לך V, יש לך R, אתה יכול לחשב את הזרם שיוצא מכל דבר וכו' וכו'. יש לך את האפשרויות לחשב את כל הדברים האלה שאני אומר עכשיו.
הסוג השני של חיבור...
- **סטודנט:** יש לי שאלה. זאת אומרת שאם יש לי פה שתי מנורות שהן צריכות לידלק ב, נאמר, 3V, המתח שאני צריך לדאוג שיהיה הוא 6V לפחות כדי להדליק את שתי המנורות?
- **מרצה:** נכון, זה אם הן בטור, אם הן בחיבור בטור. וההתנגדות שלהם שווה, כי אז זה מתחלק 3 ו-3. אם ההתנגדות שלהם שונה, זאת אומרת ההתנגדות של אחד מהם גדול יותר, אז הוא יקבל יותר מתח, אוקיי? זה יכול להתחלק גם 4 ו-2. זאת אומרת, אם אתה זוכר אמרנו שהתנגדות זה כמו מכשול בדרך של המתח, של הזרם לעבור, אוקיי? אז אם ההתנגדות גדולה יותר, הוא צריך להשקיע יותר מתח כדי להפעיל אותו, אז זה לא יתחלק שווה בשווה.
אוקיי, עוד דרך שאתה יכול להפעיל שתי נורות עם סוללה אחת, במקום להביא סוללה של 6, עדיין אתה יכול להביא סוללה אחת של 3, זה חיבור במקביל. מה זה חיבור במקביל? זאת אומרת שאם אני הולך מ-פלוס ל-מינוס, אני בכל אחד מהם יכול לעבור דרך אחרת, והם לא מתנגשים. או שאני עובר דרך הנורה הזאתי, או שאני עובר דרך הנורה הזאתי.
איך הולך מבחינה מתמטית המתח פה? אם לצורך העניין הסוללה הזאתי היא 3V, אז גם 3V יגיע לפה, לנורה הזאתי, וגם 3V יגיע לנורה הזאתי. זאת אומרת ששתיהן יקבלו 3V, בלי שהבאת סוללה של 6V, בצורה הזאתי שתיהן מקבלות 3. על מה אנחנו משלמים? אנחנו משלמים על הדבר השני שזה הזרם. הזרם יהיה חלש יותר. אוקיי? הזרם, אם לצורך העניין הסוללה מוציאה לי 2mA, סליחה, אז היא תתחלק 1 ו-1. אוקיי? יעבור לי פה 1mA ופה 1mA.
אם אני חוזר רגע לטורי, אוקיי? פה הזרם הוא אותו זרם והמתח מתחלק ביניהם, פה זה הפוך: המתח הוא אותו מתח, הזרם מתחלק ביניהם. זה ההבדל. זאת אומרת שאם אתה נגיד רוצה להפעיל נורה של 3V, שתי נורות של 3V, ויש לך סוללה של 3V, אתה תחבר את זה במקביל. איפה תשלם על זה? תשלם על זה בזרם, ואז היא פשוט תעבוד עם עוצמה קצת יותר נמוכה, אבל עדיין שתיהן יעבדו.
אוקיי? אם אתה תרצה לצורך העניין להפעיל את שתיהן ובעוצמה גבוהה, אתה יכול להביא סוללה שהיא גם 3V, אבל הזרם שלה קצת יותר חזק, ואז זה יתחלק והכל יעבוד כמו שצריך. אוקיי, אנחנו נעשה גם פרויקטים ואנחנו ממש נראה, נחבר סוללות וננסה את הדברים האלה, ונראה מה קורה כשהזרם לא מספיק חזק, כשהמתח לא מספיק חזק, וכו' וכו'. בתקווה שלא נראה מה קורה כשהמתח חזק מדי, כי אז זה שורף דברים, אוקיי? כשהמתח חזק מדי...
- **סטודנט:** אפשר רגע לחדד משהו?
- **מרצה:** בטח.
- **סטודנט:** אני אומר רגע, כאילו, שוב, אני לא יודע עד כמה הרמות, אבל אני אנסה רגע להגיד משהו. כשאנחנו מסתכלים על Ohm בטור, אז בעצם אמרנו שאנחנו סוכמים את ההתנגדויות שלנו, זאת אומרת שההתנגדות שלנו יותר גדולה, אז הזרם שלנו אמור להיות, ביחס הפוך, הזרם שלנו אמור להיות קטן יותר. אבל עכשיו, בגלל שאנחנו במקרה של מקביל, אז כל התנגדות כשלעצמה היא יותר קטנה, לא סכמתי ביניהם, על כל קו יש לי התנגדות יותר קטנה מאשר המקרה הקודם, ואז אני אמור לקבל זרם שהוא יותר גדול בכל קו, בגלל שהמתח שלי הוא אחיד.
- **מרצה:** אבל מה שאני התכוונתי הוא שהזרם עצמו, אוקיי, במקום שכל הזרם... אפשר לשניהם לעשות מתמטיקה...
- **סטודנט:** פה הזרם הוא כן, אתה צודק, הזרם גבוה יותר בכל אחד מהם.
- **מרצה:** אתה אתה זוכר, אתה עוד זוכר. מכל השנים וזה. מדהים, תן לי לחיות, אם אתה רואה אותי עוד פעם. מדהים, מדהים. אני אביא כל סדנה מהנדס חשמל אחר.
## רכיבים חשמליים חשובים
כמה רכיבים חשמליים שהם חשובים לנו ואנחנו נתעסק איתם כמעט בכל פרויקט. כמעט בכל פרויקט יש את הרכיבים האלה.
הראשון הוא LED. אוקיי? זה סוג של בעצם נורה.
ה-LED, אם אתם זוכרים כשהיינו קטנים, הייתה נורה שכשהייתם נוגעים בה, נורת להט, היא הייתה נורה מאוד מאוד חמה. הייתם נוגעים בה, חם, כי עבדה הרבה זמן והתחממה. זו הייתה נורה מאוד מאוד לא יעילה, כי מה שהיא עשתה היא פשוט יצרה חום וככה נוצר לך האור.
היא יצרה את כל הספקטרום של הצבעים האפשריים, גם את אלה שאנחנו בכלל לא רואים, אולטרה-וולט, UV מה שנקרא, וגם את ה-Infrared, ובעצם בזבזה הרבה חום והרבה אנרגיה כדי לייצר לנו אור.
המצאת ה-LED שינתה את העולם בזה שמה שאנחנו מייצרים זה את הגל הספציפי שאתם רואים. זאת אומרת, כשאתם מסתכלים על נורת LED בצבע כחול, היא מייצרת אך ורק את הצבע הכחול. היא לא מייצרת לא אדום, לא צהוב, לא שום דבר אחר. כחול, מונוכרומטי מה שנקרא. וזו נורה שהיא מאוד מאוד יעילה מבחינת אנרגיה.
מי שהמציא, דרך אגב, את ה-LED הכחול קיבל על זה פרס נובל, כי היה את האדום הרבה שנים, היה את הירוק הרבה שנים, וכדי לעשות צבע לבן ולהחליף לכולם את המנורות בבית ל-LED-ים יעילים, היה צריך גם את הכחול. כי אור כחול, ירוק ואדום נותן לבן, RGB דרך אגב. RGB זה Red Green Blue. ומי שיצר את ה-LED הכחול קיבל על זה פרס נובל. הוא עבד על זה משהו כמו 18 שנים, הרבה מאוד זמן.
ו-LED זה אחת הנורות שאנחנו נשתמש בה, אחד הרכיבים שנשתמש בהם. לפעמים משתמשים בהם כדי לקבל איזושהי אינדיקציה אם יש זרם או יש מתח, לפעמים משתמשים בהם כדי לעשות מה שאתה בונה כזה מגניב, כדי לתת לך אינדיקציה: אם זה עובד אז תן LED ירוק, אם זה סגור שה-LED האדום יעבוד. הרבה מכשירי חשמל אתם רואים את זה. כשאם מכבים משהו, מדליקים משהו, היום אתם רואים איזשהם צבעים, אם זה במכונת נספרסו, בדייסון. לי יש בעכבר צבעים וכולי וכולי, זה נורות LED קטנות שעושות את הצבע הזה, ואנחנו נשתמש בהם לא מעט.
הרכיב השני הוא דיודה. הדיודה הרעיון שלה הוא שסתום חד-כיווני, זאת אומרת הזרם יכול לעבוד מ-A ל-B, אבל לא הפוך, לא מ-B ל-A. הרעיון שלה הוא להגנת זרמים ודברים כאלה. יש רכיבים שיכולים לקבל מתח או זרם רק מצד אחד לצד השני, ואם יגיע אליהם זרם או מתח מהצד השני הם יכולים להישרף. במקרים כאלה שמים דיודה כדי לוודא שכל דבר או איזושהי זליגה או איזשהו רעש שמגיע מהצד השני לא יוכל לעבור ולא יגיע לרכיב ויישרוף אותו. זה השימוש של דיודה.
הרכיב השלישי הוא נגד בעצם. הנגד הוא מווסת זרם חשמלי. מתי משתמשים בו? נגיד LED, כשאני מזרים בו זרם, ההתנגדות שלו היא אפסית. ואז מה שיכול לקרות לי זה ממש קפיצה בזרם וזה יכול לשרוף לי את ה-LED. אז כל פעם, אני כבר אומר לכם, זה חוק טבע: כל פעם שאתם שמים LED ומחברים אותו ל-Arduino, הוא צריך להתחבר יחד עם נגד, בטור. זאת אומרת שאם אתם מתארים חוט שיורד מה-Arduino ל-LED, מה-LED הוא יוצא לנגד ואז חוזר ל-Arduino. הוא חייב לעבור דרך נגד.
והדבר הרביעי זה קבל. קבל, כמו שאמרנו, לפעמים כשאתה נותן מתח, יש קפיצות במתח, בעיקר בהפעלה ובכיבוי. שזה דבר שיכול לשרוף לנו רכיבים. קבל עוצר את הדברים האלה, הוא אוגר אנרגיה בצורה של שדה חשמלי. עוד דבר שאפשר לעשות זה לאגור את האנרגיה, זאת אומרת אם אני מפעיל עליו מתח זמן מסוים, אז הוא פשוט יצבור את האנרגיה הזאתי, וכשאני אפסיק הוא יפרוק את זה. זה גם דרך להשתמש בזה. אם נגיע לזה אני גם אראה לכם איך ממש עושים מזה שעון.
ממש אפשר ליצור מזה סוג של PWM עם קבל שאתה טוען ופורק, טוען ופורק, טוען ופורק, ככה, ואז עולה המתח במעגל, ואתה יכול ליצור עם זה PWM. כל השעונים בנויים בצורה הזאתי, יותר נכון 95% מהשעונים בנויים בצורה הזאתי, שהם לוקחים קבל, טוענים ופורקים, ואז משייפים ומכניסים לפילטר, ומייצרים ככה איזשהו PWM קצת יותר מדויק. אבל זה הרעיון הכללי של טעינה ופירוק.
ועוד רכיב שאפשר לדבר עליו, אבל הסיכוי שניגע בו הוא קטן מאוד, לרוב לא תראו אותו, זה סליל. סליל יש לו הרבה שימושים. השימוש העיקרי שלו זה בשנאי. כשאתם רוצים להוריד מתח לצורך העניין מ-220 וולט ל-5 וולט. אם יש לכם את המטען של הפלאפון שמתחבר לקיר, הוא מתחבר ל-220 וולט ומוציא לכם 5 וולט. אם אי פעם שאלתם את עצמכם איך הוא מקבל 220 ומוציא לי 5, אז יש באמצע איזה שני סלילים שהיחס ביניהם, היחס ליפוף, מספר הפעמים שהם מלופפים, זה מה שמוריד מ-220 ל-5 וולט, ואז הפלאפון שלי יכול לקבל 5 וולט, וכולם שמחים ומאושרים.
ואם זה המחשב, אז הוא יוריד מ-220 ל-12. יהיה יחס סלילים שונה. אבל בסוף זה שני סלילים שעומדים קרוב אחד לשני, עם יחס ליפופים שונה. אחד יכול להיות מלופף, סתם אני אומר, 10 פעמים, השני מלופף 20 פעמים, ובגלל שהיחס ביניהם הוא שתיים אז המתח ירד בשתיים, או יעלה בשתיים בהתאם, תלוי איך אנחנו עושים את הליפופים.
אבל זה כל הרעיון. אנחנו לא נשתמש בזה הרבה. עשיתי פרויקט באוניברסיטה שעשינו ממיר DC-DC, לקחנו איזה פאנל סולארי ואמרנו: לא משנה איזה מתח מגיע מפה, תוציא לי 3 וולט וכולי. זה פרויקטים שהם קצת יותר מסובכים. בדרך כלל בפרויקטים של מייקרים מאוד מתקדמים משתמשים בסלילים. אני חייב גם להגיד את האמת שלא יצא לי לפחות בחודשיים-שלושה האחרונים לגעת בסליל, אז שוב אני אומר, זה רכיב שפחות נוגעים בו. טוב להכיר את זה, טוב להבין את הרעיון שלו, וכשנגיע לשם, אם נהיה מייקרים, אנחנו בהחלט נתעסק בזה ונעמיק בזה יותר.
## מנוע DC
קצת על מנוע DC. הרעיון של המנוע הזה הוא שהוא מקבל מתח DC ופשוט עובד. אתה מביא לו מתח DC, אם הוא עובד על 3 וולט או 5 וולט, יש כאלה שעובדים על 9 וולט ועל 12 וולט, כל אחד כמה שרשום לו, זה מה שאתה נותן לו, והוא פשוט מסתובב.
הדרך שהוא עובד, בלי להיכנס ממש למכניקה, בפנים אם מסתכלים יש מגנטים. כל אחד יצא לו להתעסק אי פעם במגנט, יש לו את הצד ה-South, הדרומי, ויש לו את הצפוני. ובגלל מעבר המתח והשטף שיש בפנים, הדבר הזה גורם לו להתחיל להסתובב. וזהו, פשוט מסתובב במהירות קבועה.
משתמשים בזה לפעמים ברכבים, מנועים של טסלה יש שם מנועי DC, וכל מיני דברים כאלה. גם בזה אנחנו נתעסק לא מעט, DC יצא לכם מהאוזניים, אל תדאגו.
## מנוע סרבו
עוד דבר שיצא לכם מהאוזניים לא פחות, זה מנוע סרבו. היתרון של סרבו הוא שאתה מכניס לו PWM, גל ריבועי, ובהתאם לגודל של הגל הריבועי שאתה נותן לו, הוא יידע לאן לזוז. הרוב זזים 180 מעלות, זאת אומרת הם מתחילים ב-0 כשאתה נותן להם גל ריבועי מאוד מאוד חלש, זאת אומרת כמעט כולו על 0. ואם תיתן לו מאוד מאוד חזק, זאת אומרת הרוב על DC, הוא יגיע עד ל-180. יש כאלה שעושים גם 360 מעלות. 360 ו-180 זה הכי נפוצים.
מנוע סרבו לא פחות נפוץ ממנוע DC. DC זה כשאתה רוצה לסובב מנוע נון-סטופ, כמו גלגלים של רכב. סרבו זה כשאתה רוצה לכוון משהו. ממש ימינה-שמאלה, ימינה-שמאלה. אתם יכולים לחשוב על הגה שאפשר לעשות ככה. אתם יכולים לחשוב על נגיד יש לי איזושהי מכונית שיש לה מקדימה איזשהו רדאר שיודע לדעת אם הוא מתקרב לקיר או מתקרב לאיזשהו חפץ, הוא יודע לעקוף את זה. אז את הרדאר הזה שמסתכל קדימה אני אשים במנוע סרבו כדי שהוא יסתכל 180 מעלות, הוא כל פעם יחפש, כמו שאתם מדמיינים רדאר מחפש ב-180 מעלות, הלוך-חזור, הלוך-חזור. ובעצם יבדוק איפה יש מכשול ויידע להימנע מזה. לזה טוב מנוע סרבו. אם אני רוצה אותו בכיוון מדויק, כיוון ספציפי, אני אשתמש בסרבו. אם אני רוצה מנוע שמסתובב נון-סטופ בהתאם למתח שאני נותן לו, אני אשתמש ב-DC.
יש עוד סוג מנוע שנקרא Stepper. אנחנו ניכנס לזה קצת בהמשך. המטרה שלו זה לא רק לדעת לאן לזוז, אלא גם להחזיר לי איזשהו פידבק כדי שאני אדע איפה הוא נמצא. זה קצת לפרויקטים יותר מסובכים, כמו נגיד במדפסת תלת-ממדית, אז אתה לא רוצה רק להזיז אותו למקום מסוים, אתה רוצה לדעת איפה הוא עומד. ואז אתה משתמש ב-Stepper, ואז ככה לא משנה איזה תוכנית אתה מריץ, אתה יודע איפה הוא התחיל, אז המחשב יודע איך לעבוד איתו.
- **תלמיד:** זאת אומרת זה כמו GPS של מנוע.
- **מרצה:** כן, Stepper הוא כמו סרבו, רק מוסיפים לו איזושהי אינדיקציה...
- **תלמיד:** הוא סופר צעדים.
- **מרצה:** בדיוק. Stepper מלשון step, מלשון צעדים, הוא סופר צעדים. הוא סופר את הצעדים והוא יודע איפה הוא נמצא, ואז אתה מפה יכול לדעת: אוקיי, אתה נמצא פה, אז תעשה את זה. תחזיר את עצמך לפה, או תמשיך לשם, בהתאם לזה. סוג של זיכרון כזה כשאתה עובד איתו.
- **תלמיד:** אפשר עוד שאלה קטנה לגבי הסרבו? זה בעצם מנוע עם דימר בעצם, שאפשר לכוון את המהירות, את העוצמה של הסיבוב, ובהתאם לזה גם להשפיע על ימינה-שמאלה?
- **מרצה:** סרבו לא זז לך כל الوقت ככה כמו מנוע שאתה מדמיין כמו מנוע סילון של מטוס. הוא זז מ-0 עד 180, כמו מניפה. הוא נעול.
- **תלמיד:** מה שקובע לו זה ה-Gearbox בעצם? זה מה שמגביל אותו?
- **מרצה:** כן, בכוונה, וזה הרעיון שלו. הרעיון שלו הוא לתת לך... DC אתה מחבר, מפעיל, המנוע נוסע, מעולה, לגלגל תשים DC, הוא יסתובב כמה שתגיד לו. אבל כדי לכוון, נגיד אתה רוצה הגה של האוטו שלך, אתה רוצה או שיהיה שמאלה, או שיהיה ימינה, ואז תחזיר אותו בחזרה שמאלה, ואז תחזיר אותו לאמצע...
- **תלמיד:** מגבלות בעצם.
- **מרצה:** בדיוק, מגבלות וטווח. אז אתה משתמש בסרבו, ואז ה-Arduino נותן לו גודל של PWM, זאת אומרת הגל הריבועי, הוא מחליט כמה חזק הוא יהיה, ובהתאם לזה הסרבו יודע להגיד: אוקיי, הוא נתן לי חלש, אני אזוז שמאלה. הוא נתן לי חזק, אני אזוז ימינה. הוא נתן לי באמצע, 50%, אז אני מכוון לאמצע.
- **תלמיד:** אבל אם אני אתן נגיד PWM ארוך מאוד שהסרבו כבר עשה את הפעולה של ה-180 מעלות, פשוט הוא הגיע למגבלה שלו?
- **מרצה:** הוא לא יעבור את זה, כן. בשבילו 0 זה 0%, 180 זה 100%. ככל שתיתן לו עוצמה יותר חזקה, הוא ילך ל-180, זה המקסימום שלו.
אותו דבר דרך אגב סרבו של 360. סרבו של 360 הכוונה שלו היא שהוא יודע לעשות סיבוב שלם, אבל זהו, הוא עוצר. סיבוב אחד, הוא לא ממשיך. 360 והוא עוצר. בזה נגיד משתמשים... ראיתי סרטון של מישהו שעשה פעם מכונה לגילוי יתושים. אז הוא שם רדאר כזה מגניב, והרדאר מסתובב 360, חוזר 360. הוא משתמש בסרבו של 360, ואז הוא ממש עשה על המחשב שלו כאילו מה הרדאר גילה, גילה כמה יתושים יש לו בחדר. לא שזה עזר לו, אבל זה היה מגניב.
## אותות דיגיטליים ואותות אנלוגיים
שיש לנו בחיים הכללי, יש שני סוגי אותות שמשתמשים בהם בחשמל. אחד יהיה לנו יותר, נקרא לזה, אחד יהיה יותר פשוט להבנה, יותר טריוויאלי מהחיים שלנו, שזה האותות האנלוגיים, האותות הרציפים. האותות הדיגיטליים – אני עוד שנייה אתעכב עליהם.
אז אותות אנלוגיים, אותות רציפים, זה מה שאנחנו מדמיינים. כל העולם שלנו, כשאנחנו חיים את החיים שלנו, זה עולם רציף. זה לא שיום אחד אתה הולך, רואה ברווז, פתאום מופיע לך ברווז שני. הדברים האלה לא קיימים. דברים קורים ברציפות. החיים שלנו הם יותר כמו ציור שמישהו מצייר. הוא עכשיו רוצה מדף נייר להפוך לברווז, הוא צריך לצייר אותו לאט-לאט כמו שאנחנו מדמיינים.
ככה זה אותות אנלוגיים, ממש מחוברים אחד לשני. ממש רואים אותם מחוברים אחד לשני. זה מה שאתם מדמיינים כגל. כל פעם שאתם חושבים על גל, אתם בתכלס חושבים על גל אנלוגי.
מה זה אות דיגיטלי? אות בדיד. אותות בדידים זה לא קיים בעולם שלנו, זה לא משהו שאנחנו רואים ביום-יום שלנו. זה משהו שהמחשב שלנו יודע לעשות והמחשב שלנו יודע להתעסק איתו.
לפני בסוף שנות השבעים, 78' אם אני לא טועה, רוב המחשבים היו עד אז בנויים על אותות אנלוגיים. זאת אומרת, ממש הם היו עובדים עם אותות אנלוגיים. מאז נהיה shift מאוד גדול בגלל משהו שנקרא טרנזיסטור, שנדבר עליו בהמשך, שזה רכיב שנותן לנו לעבוד עם אותות דיגיטליים הרבה הרבה יותר טוב, עם הרבה פחות רעש.
אם אני רוצה להעביר איזשהו אות ממקום אחד למקום שני, לעשות את זה בצורה דיגיטלית יהיה הרבה פחות רעש, יהיה הרבה יותר יציב ויגיע לצד השני בכמה שפחות דיוק.
פעם כשהיינו ילדים קטנים, כל הטלפונים שלנו היו על אותות אנלוגיים רציפים. ואז תחשבו שאתה משדר גל מהאנטנה שלך והוא מגיע לטלפון שלך, אבל באמצע יש רעשים. אז הגל הזה טיפה זז, פתאום יש איזו קרינה אלקטרומגנטית מהמיקרו, פתאום היו רעשים כאלה. כי הגל הרציף בעצם היה מקבל טשטושים וזזות, ומה שהיה מגיע לתוך הטלפון שלי כבר היה רעש לגמרי. לפעמים הייתם מדברים והייתם שומעים חייזרים. היה פעם ששמעו חייזרים, פתאום מישהו מדבר בחייזרים. זה מה שנקרא הרס הפילטר האנלוגי.
מאז שעברו לדיגיטלי, הדברים האלה כבר לא קורים. כי מה שקורה בדיגיטלי, אתה מקבל אות קבוע בערך קבוע. או שאתה מקבל 1, או שאתה מקבל 2, או 3, או 4, והטלפון שלך פשוט יודע איך לעבוד עם הדבר הזה, ואין סיכוי, או יותר נכון סיכוי הרבה יותר נמוך, לטעות.
היום כל המחשבים שלנו עובדים על דיגיטל. חוץ מרכיב אחד שזה השעון, שזה ה-Clock, והשידור, אבל בואו נשים שנייה את הדברים האלה בצSide. ככלל אצבע, כל המחשב עובד על דיגיטל.
ולמה זה חשוב לנו להבין מה זה אות דיגיטלי? כי כשאנחנו נדבר עם Arduino, אנחנו ניקח איזשהו אות אנלוגי מהעולם האמיתי, נגיד מתח או זרם, ונכניס אותו ל-Arduino. ה-Arduino יקח אותו ויפרק אותו לאות דיגיטלי. עוד מעט ממש נכנס לעוד אות דיגיטלי ותראו איך הדבר הזה ממש נראה.
עד לפה שאלות לפני שאנחנו נכנסים לבינארי, 0 ו-1?
## מבוא למערכת בינארית - Base 2
פה נדבר קצת על מבוא למערכות בינאריות. לטל זה אולי יכול להיות קופץ מהשנה א' שלו בערך, מהקורס. טל שתדע שעבדתי עם זה שעות, ימים, שבועות ב-Intel. אז זה נושא מאוד מאוד חשוב.
אז בואו נדבר בעצם על מה מדובר. כשאנחנו מתעסקים בחשמל, עם 1 ו-0, אז זה בדיוק זה. אפשר לחשוב על נורות שפשוט עובדות או מכובות. יש לך 1 או 0, 1 או 0. ככה אתה עובד עם חשמל. מתגים פתוח או סגור, פתוח או סגור. ככה עובדים המחשבים שלנו.
היום המחשבים שלנו בנויים, אם תסתכלו על המעבד שהוא המוח של המחשב, הוא בנוי ממיליארדים של טרנזיסטורים, מיליארדים של מתגים בעצם, שנפתח ונסגר. ובהתאם לזה אני יודע איזה פונקציה אני צריך לעשות, מה אני צריך להציג, מה הקלט שלי מהמקלדת וכולי וכולי.
ספרות בינאריות הן קבוצות כמו שאמרנו ב-0 ו-1, ומייצרים את זה בבסיס של 2. אני לא היכנס ממש לעומק של המתמטיקה של הדבר הזה כי לא באמת מתעסקים בזה ביום-יום. אבל אני אתן דוגמה כדי קצת להמחיש את הדבר הזה.
כשתם מסתכלים על הטלוויזיה שלכם, תמיד אומרים לכם בטלוויזיה ההיא יש 8 מיליון פיקסלים, 8 מגה-פיקסל, זורקים לכם מספרים. עכשיו, מה זה הפיקסלים האלה? הפיקסלים האלה זה פשוט ריבועים שמפוצלים על המסך שלכם, שכל ריבוע כזה יכול להחליף צבע בין אדום, ירוק, כחול, או כל מה שביניהם.
כל אחד מהריבועים האלה מקבל ערך. אני נגיד רוצה לשדר אדום באותו פיקסל, אז מה אני אעשה? אני אגיד לכחול לרדת ל-0, אני אגיד לירוק לרדת ל-0, ואני אגיד לאדום תעשה את העוצמה הכי חזקה, הכי הרבה.
כל אחד מהפיקסלים האלה בנוי מ-8 ביטים. זאת אומרת שאני ממש יכול לראות אותם כ-00000000, או 00000001, או 00000010. וב-8 ביטים הכי הרבה אנחנו מגיעים ל-255. 8 ביטים הולך מ-0 עד 255, או אפשר להגיד 256 מצבים. וככה אני בעצם יודע את העוצמה שאני מכוון לכל אחד מהפיקסלים.
נגיד והייתי רוצה ליצור צבע לבן, מה שהייתי רוצה לעשות זה שהאדום, הירוק והכחול כולם יהיו על הכי חזק, על 255. אז הייתי מעיר את כולם, מחבר את הביטים של כולם ל-11111111. כולם היו מקבלים את העוצמה הכי חזקה. האדום היה 255, הירוק 255 וה-Blue היה 255, והכול היה מוארים בור לבן.
אז בעצם מה שקורה פה זה ייצוג. זו העוצמה, העוצמה שלי מתחלקת מ-0 עד 255. המספר הזה 255 מיוצג על ידי 8 ביטים, ש-255 זה כולם אחדות ו-0 זה כולם אפסים. זה ייצוג פשוט של המספר הזה. וכשאני מכוון את כולם ל-1, הייצוג של 255 נחשב לי הכי חזק.
ב-Arduino יש לנו שתי אופציות: או מ-0 עד 255, או מ-0 עד 1023 שזה $2^{10}$. אנחנו ניגע בזה עוד מעט בהמשך כשרממש נסתכל על ה-board של ה-Arduino. אפשר לחשוב על זה ככמה מדרגות עוצמה אני יכול לבנות. זאת אומרת, אם אני ב-8 ביטים יכול להגיע מ-0 עד 255, יש לי 256 מדרגות שאני יכול לבנות. אני יכול לעשות 1, 2, 3, 4 עד 255. זה כל העוצמות שאני יכול לחלק. ככה אני יכול ממש לכוון את העוצמה של ה-LED שלי, את העוצמה של המנוע שלי, את העוצמה של מה שאני רוצה. אני פשוט צריך להחליט מה ערך הביטים פה, זה יומר למספר, והמספר הזה מייצג לי את העוצמה.
- שאלות?
- RGB 0 0 0 זה אומר בעצם צבע שחור?
- בדיוק. וכשכולם 255 אז זה צבע לבן, כולם דולקים וכולי.
- זה אותו דבר שאתה מתכנן בהקסדצימלי?
- סליחה, לא שמעתי?
- זה אותו דבר שאתה מתכנן ב-Hexadecimal?
- שאני מתכנן, מה המילה האחרונה?
- אני לא יודע אם היא התכוונה בהקסדצימלי, אבל אם שמעתי נכון...
- זה אמר הקסה?
- כן. כשתן נותן צבעים בהקסדצימלי ב-JavaScript, אז אתה משתמש בזה גם. 000000 יהיה שחור, וה-FFFFFF שזה בעצם במקום 8 ביטים יש לך 4, אז זה FFFF וזה יהיה לבן.
- כן. בינארי, הרי תחשבו שאנחנו חיים בעולם דצימלי, מה שנקרא בסיס 10. יש לנו 10 ספרות מ-0 עד 9. ספרתי 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, סיימתי. מה אני עושה? מוסיף ספרה מצד שמאל. בינארי אומר לך יש לך 0 ו-1. אז הוא סופר 0, 1, לא יודע מה לעשות, מוסיף ספרה מצד שמאל ומתחיל מהתחלה. אותו דבר בהקסה, הקסה זה 16. אז הוא סופר מ-0 עד 9, A, B, C, D, E, F, ואז אתה מדלג אחד שמאלה. הקסה זה פשוט... אם אני לא טועה הקסה זה 16 ביטים, זה פשוט כמו 4 ביטים של בינארי.
- אחד הקסה זה רביעייה.
- רביעייה, בדיוק.
## Registers
סבבה לגמרי. נדבר על Registers. אני אגיד לכם מה נעשה. אני אזרוק שנייה על Registers, נצא להפסקה של חמש דקות לאיזה כוס מים, ואז נחזור ונדבר על Arduino. נראה לי כיסינו כבר את כל הרקע, וזהו.
אז Registers, הרעיון של Register – רגיסטר זה שם, הגדרה. מה שעשו זה פשוט לקחו מספר ביטים, כמו פה, ממש אתה לוקח לצורך העניין 8 ביטים וקורא להם רגיסטרים. ואתה משתמש ברגיסטרים האלה, אתה נותן להם את השם הזה כי יש להם תפקיד מאוד מאוד חשוב.
הם מגדירים לך, יכול להיות רגיסטרים שמגדירים לך את הצבע של הפיקסל שלך, יכול להיות רגיסטרים שאחראים על הזיכרון, יכול להיות רגיסטרים שאחראים על פעולות עיבוד שאתה עושה (חיבור, חיסור וכולי).
כשאנחנו שומעים רגיסטרים, מה שאתם צריכים לדמיין זה שמונה חב'רה כאלה. לרוב זה שמונה. לרוב זה 8 ביטים או בייט, שהמטרה שלו היא מאוד חשובה. רגיסטר של זיכרון, או רגיסטר של חיבור חיסור, או רגיסטר של כתובת מסוימת וכולי. אז זה בעצם רגיסטר. זה עניין של הגדרה. אין מה להיבהל מהמילה הזאתי. כששומעים רגיסטר, תחשבו על 8 ביטים עם תפקיד.
- שאלות?
- זה תמיד 8 ביטים בעצם?
- אז יפה. הרוב זה 8. נגיד Arduino זה 8, Arduino זה חד משמעית 8. יש מחשבים שיש להם גם 64, זה קפיצות של כפולות של 2. אבל בעולם שלנו של המייקרים זה יהיה 8. במקרים קיצוניים אני חושב ש-STM זה 16 האמת, אבל אני צריך לבדוק את זה, אני לא בטוח. Arduino, ESP32, כל אלה – 8.
מגניב. נראה לי לפני שאני אכנס ל-Arduino וניתקע בחומר הזה, בואו ניקח איזה 3–4 דקות הפסקה, ככה זרקתי לכם הרבה בשעה האחרונה, ונחזור עוד 3 דקות.
היי דורון.
דבר אליי.
זה מה שיש לי.
נראה לי שזה מספיק, אתה יודע, נראה לי שיש לך הכל. שלחת לי גם תמונה, לא?
כן.
בוא נישאר אחרי הישיבה שנייה ותראה לי את זה, ונסתכל על התמונה ונלוודא שיש לך הכל.
כן, סבבה.
נראה לי אחלה ערכה.
מתנצל שהתחלתי לבלוס לך כמו לא יודע מה בפרצוף. לא אכלתי מהבוקר.
עבדתי בלילה, כי אמרתי אני אזיז את המשמרת איך שהוא. הלכתי ופשוט נזרקתי על המיטה, כי הייתה לי גם ישיבת פרויקט בבוקר, ולא אכלתי עד עכשיו כלום.
אתה בתקופת מבחנים, לא? זה לא עבר כבר?
גם, כן. לא, יש עוד קצת. עוד טיפה. אבל...
אתה משלב את כל הכיף, אתה אומר. כאילו, למה? למה שיקשה במקום אחד?
למה שיקשה במקום אחד? צריך קצת לשפיות, קצת לצאת לילדים, לשחק בצעצועים.
איפה אתה עובד עכשיו?
טוב, אני באבטחה. באיזה חברת שרתים. אבל שגיליתי את זה רק בסוף התואר.
כן, אני גם, הייתה לי תקופה בתואר שעבדתי באבטחה של איזה בית מלון.
מה, כאילו, לומדים שם הרבה יותר טוב מהבית.
נכון.
באמת. לא ייאמן.
תשמע, עד שנפלתי לסרטים שם, הייתה תקופה גם... אתה יודע, פתאום אתה מוצא את עצמך בשש בבוקר...
לא יודע, אני 7 שעות לומד בלילה.
כל הכבוד לך. כל הכבוד.
טוב, יאללה, בוא נמשיך. נראה לי הגיע הזמן, אחרי שחפרנו כל כך הרבה בבסיס דיני החשמל, לדבר על הדבר המעניין ביותר: Arduino, שבגללו התכנסנו. תגידו לי שאתם רואים מה שאני מציג.
כן, רואים.
מצוין.
## סקירה היסטורית
קצת סקירה היסטורית על מה זה ה-Arduino הזה. Arduino, בוא נקרא לזה, זה רכיב ששינה לנו את החיים לגמרי. מה שהוא עשה זה לקחת בניית מעגלים מורכבים וכל מיני רובוטים ובתים חכמים ו-1,001 דברים, והוריד את זה לרמה מאוד מאוד פשוטה יחסית, שבלימידה מינימלית אתה יכול לעשות פרויקטים מגניבים בטירוף.
משנת 2005 הוא הומצא בעצם, זה היה חלק מפרויקט תזה בתואר שני של כמה חבר'ה איטלקים. Arduino היה השם של הפאב שבו הם ישבו וחשבו על הרעיון, קראו לו Arduino. והחבר'ה האלה עד עכשיו עדיין כמנכ"לים של החברה הזאת, אותם אנשים איטלקים.
היום זה עדיין נחשב למיקרו-בקר הכי נפוץ בעולם. משתמשים בו ונמכרים יותר מ-50,000 חתיכות בשבוע. בשבוע אחד ברחבי העולם נמכרים יותר מ-50,000 בורדים של Arduino, שזה מטורף. זה מספר משוגע. אם אתם לוקחים בחשבון שחלק עולים 50 דולר כמו המקורי, חלק עולים 5 דולר, בוא נגיד ממוצע 20 דולר, חותכים על זה מיליוני דולרים בשנה ברחבי העולם, שזה מדהים.
בספטמבר האחרון החבר'ה של Arduino סיימו סבב גיוס Round B, והם גייסו 54 מיליון דולר ממשקיעים. זה אומר שמחכים לנו עוד הפתעות, יוציאו בורדים חדשים, יוציאו דברים חדשים. זאת אומרת שיהיו להם שנה-שנתיים הקרובות מעניינות מאוד. ובעידן ה-AI אי אפשר לדעת כבר מה הם יוציאו, וזה יהיה מגניב. מחכה לזה לגמרי.
## התפתחות הלוחות
ככה בעצם נראה Arduino מהשנייה שהוא נוצר. העליון הראשון השמאלי, זה הראשון שנוצר, סוג של אב-טיפוס. מאז הוא התקדם, התקדם, התקדם.
היום כבר יצא ממש לא מזמן Arduino R4, הגרסה הרביעית שלו, שזה כבר יש בו Wi-Fi ו-Bluetooth. בכל ה-Arduino האלה, שגם יש לכם בערכות וכולי, סביר להניח שלא יהיה שם Wi-Fi, שזה לא Arduino R4, ואין שם Wi-Fi ואין שם Bluetooth. זאת אומרת שכדי להפעיל אותו ולחבר אותו למכונה ולצרוב עליו וכולי, צריך לחבר אותו ממש עם כבל.
ב-Arduino החדש שצץ ממש לא מזמן, כבר יש את האופציה שיהיה אפשר להפעיל מכונה מרחוק, שזה מגניב ממש, מתחרה ל-ESP32. עוד מעט נדבר גם על ה-ESP32 ונעלה אותו, נבין את ההבדלים.
## הגדרות יסוד ומבנה הלוח
בואו נדבר בקצרה על מה יש בכל בורד Arduino. בכל אחד שאתם מסתכלים, אם יש לכם עכשיו לידכם ביד, אם לא, תסתכלו על התמונה, לכולם יש את אותם דברים בסיסיים שנמצאים על הבורד.
הדבר הראשון והכי חשוב זה המיקרו-בקר עצמו (Microcontroller). כל הקוד שאתם מדמיינים, כל הלוגיקה שמתבצעת, כל החשיבה, כל הקוד שאתם רושמים אליו ואז הוא מבצע ומפעיל את הרובוט ועולה והולך וחוזר - הכל הכל זה החתיכה השחורה הזאת שנקראת מיקרו-בקר.
זה סטייל מאבד של מחשב, אבל קצת פחות חכם, בגלל זה הוא גם יותר זול. והוא פשוט יושב במרכז ה-Arduino, במרכז הבורד, ומקבל את כל הקוד שלנו ומוציא את הפעולות, מקבל פעולות, והכל הכל מגיע לשם.
כל מה שנמצא מסביב, כל מה שאתם רואים שעוד רגע נעבור עליו, זה נטו לתמוך במיקרו-בקר הזה. המיקרו-בקר הזה הוא העולם בעצם שמפעיל את הכל ועושה את הכל. דרך אגב, גם המחשב שלכם, אם תפרקו אותו יום אחד ותסתכלו על הבורד הירוק, אתם תראו שבאמצע יש ממש מעבד, יכול להיות של Intel, יכול להיות של AMD, יכול להיות של Apple אם יש לכם M1, אבל באמצע יש מעבד, וכל מה שמסביב הוא לתמיכה בו. על רגל אחת, אוקיי? כי במחשב יש כרטיס מסך וכל מיני דברים כאלה וכולי, אבל באופן כללי המעבד הוא הליבה, הוא ה-core, שאליו מגיע הכל.
בואו נסתכל מה יש לנו מסביב. אם אתם שמים לב, המיקרו-בקר הזה מיוצר עם רגליים שלא הכי נוח להתחבר אליהן. נגיד ואני רוצה לתכנת משהו לתוך הרגל הספציפית הזאת שמייצגת לי איזושהי כניסה בתוך המיקרו-בקר, יהיה לי בעייתי, יהיה לי קשה. אז מה שעשו החבר'ה ב-Arduino, הם לקחו את כל הרגליים שלו ושלחו חוט דרך הבורד לכל אחד מהפינים שאתם רואים פה. הפינים שאתם רואים פה למעלה והפינים שאתם רואים פה למטה, זה פשוט הרגליים של המיקרו-בקר הזה. הם פשוט מחוברים בחוט, בקו חשמלי שסרטטו על הבורד. הם פשוט מחוברים, כל הרגליים מחוברות אחת לשנייה. כל הפינים האלה שאתם מתחברים אליהם: 0, 1, 2, 3 וכו' וכו', A0, A5, Ground, V, זה הכל רגליים של המקר הזה.
כמה דברים חשובים פה: Ground. יש פה Ground, שזה האדמה. כשאנחנו מתעסקים בכמה רכיבים חשמליים, אם אנחנו נרצה לחבר למיקרו-בקר הזה, ל-Arduino הזה, עוד חיישן כלשהו או עוד בורד אחר, צריך לוודא שה-Ground שלו וה-Ground של הרכיב האחר זהים. זאת אומרת, ממש תקחו חוט ותחברו מה-Ground הזה, אם זה דרך מטריצה או דואט לבורד השני, תאשרו, זה נקרא ליישר אדמות, להשוות אדמות, ומשמה אנחנו מתחילים לעבוד.
כל הכניסות פה, סליחה, A0 עד A5. מה זה ה-A הזה בעצם? A מייצג לי Analog. זה פינים שמתאימים לחיישנים. כל מה שהוא עושה בפינים האלה, A0 עד A5, זה אינפוטים. משם הוא קורא, הוא יודע לקרוא.
נגיד אני רוצה לצורך העניין לקרוא עוצמה של נורה, סתם אני אומר, עוצמה של נורה. אז מה הוא יעשה, ה-Analog Pin הזה בעצם? הוא יקח אות אנלוגי שיכול להגיע מ-0 עד 5 וולט, והוא יחלק את זה מ-0 עד 1023. זאת אומרת, שהוא מחלק את זה, כמו שאמרנו, לוקח אנלוגי ומחלק לבדיד. הוא לוקח מ-0 עד 5, מחלק את זה ל-1024 מדרגות, ואז הוא אומר לך איפה במדרגה הזאת אתה נמצא.
זאת אומרת, אם הכנסתי 2.5 וולט נגיד, אז הערך שנקבל בתוך ה-Arduino זה כמה זה 1024 לחלק ל-2? זה 512. הוא יראה לי 512, וככה אני אבין שהוא קיבל 2.5 וולט. למה זה? כי Arduino, כמו שאמרנו, עובד בעולם הדיגיטלי, בעולם הבדיד. הוא לא יודע מה זה 0 עד 5, בשבילו לא אומר לי כלום מספר 4.758 בלה בלה בלה, לא רלוונטי לי. תפרק לי את זה למדרגות מ-0 עד 1023, ותגיד לי איפה במדרגה הזאת זה נופל.
וזה מה שהוא מוציא לנו. זאת אומרת שאנחנו נכתוב, נגיד אני רוצה להגיד לו: תקשיב, תמדוד לי את עוצמת הלד הזה. אם הוא מ-0 עד 2.5 וולט אז תדליק לי את הלד השני, אבל אם הוא מ-2.5 וולט ומעלה עד 5 וולט, הוא מספיק חזק, אז אל תדליק לי את השני. אז איך זה ייראה לי בקוד? אני אגיד לו: תקשיב ל-לד הזה, אם הוא מוציא לי בין 0 ל-511 אז תדליק את הלד השני, אבל אם הוא מוציא לי 512 והילך עד 1023, אז אל תדליק אותו.
הבנת למה התכוונתי?
זאת אומרת שההשוואות בתוך הארדואינו, אתם לא תאלצו... תגיד לי אם הוא 0 עד 2.5V, תגיד לי... תגיד לו בדידי, תגיד לי האם בקוד אתה ממש תרשום 0 עד 511. אנחנו נעשה את זה גם בהרצאה הבאה. אבל 0 עד 511, אם זה שם, נופל בטווח הזה, אז הבנתי. אחרת, זה אומר שהנורה דלוקה חזק מדי.
אוקיי? אתם לוקחים את מה שהוא קולט מהסביבה מבחוץ, ואתם תמיירו את זה למספרים בדידים בנפח עד 1023. ככה הארדואינו יבין.
ה-0 עד 511 זה כאילו 512 הכוונה, אבל זה מגיע מאיפה? מה-Analog?
אז ה-Analog מקבל 0 עד 5V, נכון?
כן.
הוא מקבל 0 עד 5, אני מכניס לבפנים מתח.
כל אחד מהם? מ-A0, A1... כולל 5V מקבל?
כן, כן, כן. יש לך שש פינים אפשריים לחבר אליהם דברים, אם זה לדים, אם זה מנועים, אם זה מה שאתה רוצה לקרוא. אוקיי? יש הרבה חיישנים שאנחנו נעבוד עליהם, למשל יש חיישן שנקרא Photoresistor.
אוקיי? Photoresistor זה חיישן שאתה... הוא קולט עוצמה של אור ומוציא לך מתח בהתאם. אוקיי? אז מה אתה תעשה עם החיישן הזה? אתה תחבר אותו נגיד ל-A0. אוקיי, ל-1 הפינים האלה, ל-A0, ואתה תגיד להרדואינו בקוד תבדוק כמה מתח אני מקבל פה, וככל שהמתח גבוה יותר, אוקיי, אתה תדע שהעוצמה שה-Photoresistor הזה רואה גבוהה יותר. כי איך Photoresistor עובד? ככל שאתה מביא לו יותר עוצמת אור, מוציא לי יותר חשמל, יותר זרם, יותר מתח. אוקיי, זרם בתכלס.
אבל זה לא Analog to Digital? זה כן...
זה Analog to Digital. זה בדיוק זה. Analog to Digital. למה? כי אתה לוקח משהו אנלוגי, כמו ה-Photoresistor שהוא מוציא מתח, והארדואינו הופך את זה ל-Digital. הוא רואה מ-0 עד 1023. הוא לא רואה 0 עד 5. הוא...
אבל הכניסה... הכניסה ב-A0 היא כניסה אנלוגית של גל, של עוצמת אור כאילו?
כן, עוצמה אנלוגית. סתם הבאתי דוגמה עם ה-Photoresistor, כן? אבל זה יכול להיות גם משהו אחר. זה יכול להיות טמפרטורה, אוקיי? זה יכול להיות רעש שאני שומע, עוצמת רעש. זה יכול להיות משהו שאתה רוצה לחוש, לשים איזשהו חיישן שמחזיר לך פידבק כדי שהבקר שלך... אז אתה תשים לו את התנאים. אוקיי? נגיד, אני אתן לך דוגמה.
בניתי רכב שנוסע ויש לו ראדאר, שאם הוא מתקרב מספיק, אוקיי, אם הוא קרוב מספיק, אז הוא צריך לעצור ולדעת להקיף. אוקיי? החיישן הזה, מה הוא עושה? החיישן הזה מודד מרחק. זה משהו... זה מספר כלשהו, אבל זה לא בעולם הבדיד, זה רציף.
אוקיי? מרחק שלי ממך זה משהו רציף, זה לא בקפיצות של 1, 2, 3... יש לך 1, 2, יש לך הכול באמצע. הארדואינו, אתה תגדיר לו, או יותר נכון החיישן כבר מגיע ככה מוגדר, שאת כל המרחק שהוא תופס, זה מ-0 עד 5 מטר, סתם אני אומר, החיישן שאני השתמשתי בו הוא מ-0 עד 2 מטר. ואז הארדואינו יגיד, אוקיי, יש לי 0 עד 2 מטר, אז אני מחלק את זה מ-0 עד 1023, כאשר 1023 זה ה-2 מטר, 0 זה 0 מטר, ואני מחלק את זה ל-1024 חתיכות באמצע. הצלחת להבין?
כן, כן, הבנתי. רק לא הבנתי את ה... מה זה מ-0 עד 511, איך זה בא לידי ביטוי ב-A0, A1...
אה, 511 זה שהבאתי דוגמה. לקחתי... הרי אמרנו שבנגיד Photoresistor יכול להוציא מ...
זה רק ייצוג בעצם.
כן, בדיוק. הבאתי... נגיד לקחתי את ה-Photoresistor שהוא יכול לעשות בין 0 ל-5V, נכון? ואז אמרתי, בין 0 ל-2.5, מה שהארדואינו יראה, הוא יראה בין 0 ל-511. איפשהו באמצע שם. אוקיי? אם נגיד זה יהיה בין 0 ל-2.5, נגיד יש לי 1V, אז הוא יראה לי 202, לא יודע. לא עשיתי את החישוב בדיוק להגיד לך, אבל פשוט המרת את ה-0 עד 5 למדרגות מ-0 עד 1023.
זה ייצוג, אוקיי.
בדיוק, ייצוג של המספר.
תגיד, יש דרך לבדוק את הרגישות של ה... כאילו את הדיוק של הבית במקרה הזה?
אז הדיוק שלך... בטח. אתה יכול לעשות משוואה. בוא נעשה את זה ב-Live. אוקיי, זה מה ש...
למרות שלא יודע, להתחיל להרים לו את המתח עד שאני רואה שננדלק לי הברבור וזה מספיק טוב בשבילי?
זה תלוי בכמה אתה רוצה את ה... אתה יודע, אם זה פרויקט עכשיו שאתה בונה למישהו, אז אתה רוצה לדעת מדויק, נכון? אז מה שאתה תעשה, אתה תעשה משוואה שלמדנו לפעמים במתמטיקה. אוקיי, אנחנו... אנחנו רצינו לעשות... אם אתה זוכר, היה לנו x1... x2...
משוואה של ה... של הדיוק של ה-Analog Digital וכל אלה? היה לך... היית עושה... כשהיית בתיכון, היית עושה:
$$\frac{y_2 - y_1}{x_2 - x_1} = m$$
(השיפוע). נכון? ואז היית עושה $y = mx + b$.
ואז מה זה היה נותן לך? המשוואה הזאת, שאף אחד אף פעם לא היה מבין מה אני רוצה מהחיים שלו, היא הייתה יודעת להמיר לי מ-0 עד 5V ל-0 עד 1024. כי מה אתה רוצה שיקרה? אתה רוצה שב-0 זה יהיה 0, ואתה רוצה שב-5V זה יהיה 1024. בדיוק. אז היית יוצר משוואה: $y = mx + b$...
אה, לא, זהו, זה לא בדיוק מה ששאלתי. אתה אומר לי כאילו איך אני יודע מה המרחק בין ביט לביט.
בדיוק, כן. ואז אתה ממש יכול לדעת את הרגישות. אתה ממש יכול לדעת מה המרחק בין ביט לביט.
אם זה מספיק מדויק בארדואינו, אם זה מה שאני יכול...
תשמע. לא. לא, ממש לא. בדיוק עשינו איזשהו פרויקט לפני שבוע במועדון, ואתה רואה שם ממש קפיצות, נגיד רצינו להתביית על 770, איזשהו מספר שאמר לנו משהו, ואתה רואה שהוא מסתובב בין 760 ל-780. כי הדיוק שלו הוא לא הכי מדויק. אוקיי? הוא...
אתה יכול להזיז אותו כאילו חצי ביט ואז הוא אמור ל...
כן, אז נתנו לו טווח, נתנו לו באפר, תעשה בין 750 ל-790 זה בסדר ועבד. אוקיי? כי הוא לא כזה רגיש. בסוף, הוא לא סתם זול וקל לתפעול, כי הוא לא בנוי לדברים מסובכים.
דרך אגב, הרבה שואלים למה לא משתמשים בארדואינו לפרויקטים מסובכים ודברים כאלה. זה הדברים האלה, אוקיי? הוא לא אמין עכשיו לדברים כמו שאתה רוצה למדוד לייזר, אני לא יודע מה, במילימטרים, הוא לא יעשה את העבודה. הוא לא יעשה את העבודה כי הוא א' לא יודע לחלק לכל כך הרבה, הוא יודע לחלק ל-1024 את ה-inputs שלו, שזה כלום, תחשוב על זה, אתה לא יכול להגיע כמעט לרמה מאוד מאוד קטנה. ב', גם כשהוא מגיע, גם שאתה רוצה להתביית על מספר, אוקיי, תגיד לי שזה 700, הוא לא נשאר יציב. הוא אף פעם לא נשאר יציב. משהו זז שם, הוא לא בדיוק קורא את המתח כמו שצריך, ה-0 קצת קופץ לו, הוא לא על זה.
אז הוא טוב לפרויקטים, אתה יודע, להתחיל כ-Makers. הרבה אנשים אחרי זה מקצועיים עוברים ל-STM32, ואז יש עוד בורדים קצת יותר שמתעסקים בהם, ויותר יציבים.
סבבה, תודה.
## הבדלים בין לוחות פיתוח
מגניב. אז דיברנו על השישה כניסות שיש לנו.
אפרופו STM, אנחנו נדבר כאילו מתי כדאי להשתמש ב-STM, מתי כדאי ב-ESP, כאילו...
אז תשמע, רק כזה כבריף... אז אני יכול להגיד לך עכשיו, שכדי לעבור מארדואינו... ESP32 מהארדואינו זה יהיה פשוט. מתי שאתה רוצה להשתמש ב-Wi-Fi או ב-Bluetooth, אוקיי? עדיף שתעשה את זה ב-ESP32, אוקיי? כי זה הייחודיות שלו, שהוא טוב בזה, אוקיי?
התכנות יהיה אותו תכנות. אתה תראה, בהרצאה הבאה אנחנו ממש נוריד את הסביבה Arduino IDE, וניכנס ונראה, ואתה ממש יכול לבחור שם בורד ESP32 ולעבוד איתו בדיוק אותו דבר. וזה יעבוד. והיתרון שלו הוא שהוא עובד ב-Wi-Fi ו-Bluetooth.
ול-STM32, אני יכול להגיד לך שלי עדיין... יש שתי סיבות שאתה רוצה לעבור ל-STM32: א', או שאתה ממש אוהב את הבורד הזה ויש לך פטיש אליו ואתה צריך לעבוד עם זה בעבודה ודברים כאלה. או שאתה עושה משהו מסובך ברמה שאי אפשר כאילו... אני מנסה לחשוב על משהו מסובך, לא יודע, לשים איזשהו LiDAR, איזשהו רכיב שהוא כאילו ה-כוחות עיבוד שלו כל כך חזקים לארדואינו שהוא כבר לא יכול לסחוב את זה.
זאת אומרת, מבחינת כוח עיבוד, כוח חישוב, הארדואינו מוגבל ברמה מסוימת, כאשר STM32 יכול לפצות כאילו לקחת את החלק היותר מסובך?
אני אתן לך עוד דוגמה. נגיד אתה רוצה לחבר מצלמה. מצלמה קטנה, שרואה משהו, אתה רוצה רכב עם מצלמה שמשדרת לך.
זיהוי תמונה למשל, או משהו כזה.
זיהוי תמונה, אתה לא יכול להשתמש בארדואינו. לא בארדואינו, לא ב-ESP32. ESP32 כאילו בנוי לזה, הוא ממש לא בנוי לזה, אוקיי? כדי ליצור תמונה, הרי תחשוב מה אתה מנסה להגיד בעצם, דיברנו על פיקסל בטלוויזיה. אתה רוצה שהארדואינו ידע לקחת את כל הפיקסלים שאתה רואה בתמונה ולשמור, אם זה לשדר, אז הוא שומר כל ערך של הפיקסל 60 פעמים בשנייה. אין לו את כוחות העיבוד האלה, הוא לא מספיק חזק, זה הרבה יותר מדי מידע בשביל ארדואינו, במהירות הרבה יותר מדי גבוהה. הוא לא בנוי לווידאו.
STM צריך לבדוק אם הוא בנוי לזה.
Raspberry Pi אני יודע שודאי לעשות את זה קל, אבל STM אני לא יודע, לא סגור על זה.
Raspberry Pi, כן. דרך אגב, בקלות זה גם... צריך להבין איזה סוג מצלמה אתה רוצה להגיע. כי בדרך כלל בעיבוד תמונה, תלוי מה אתה רוצה לעשות, אבל בעיבוד תמונה חשוב הפרטים הקטנים, ואז אתה צריך מצלמות חזקות, ולפעמים אפילו Raspberry Pi לא מספיק. אז לפעמים אתה צריך בורד אפילו יותר חזק.
זה ממש תלוי פרויקט ולאן אתה רוצה להגיע. בדרך כלל מה שאתה עושה, אתה בוחר, אם זה נגיד פרויקט של עיבוד תמונה, אז אתה בוחר את המצלמה, ואלפי המצלמה אתה בוחר את הבורד. איזה בורד יכול להכיל אותה ולהריץ את הקוד ולעשות עיבוד תמונה וכולי וכולי.
אבל כן, חד משמעית ארדואינו ו-ESP32 זה לא בורדים בשביל זה בכלל, אוקיי? הם לא מחזיקים את זה.
יפה, אז דיברנו על המיקרו-בקר, דיברנו על הפינים למטה.
הפינים למעלה. הפין למעלה זה יכול להיות output, זה יכול להיות input. אוקיי, אתה יכול גם להרגיש אם זה חיישנים. לרוב מרגישים את זה... לרוב את הדברים שאתה רוצה לקלוט, את ה-inputs, אתה משתמש ב-A0 עד A5, כי זה נותן לך טווח יותר גדול, מ-0 עד 1023.
כל אלה נותנים מ-0 עד 255, זאת אומרת הרגישות שלהם נמוכה יותר. אם אני אחבר את אותו Photoresistor שחיברתי למטה, שהיה לי 1024 מדרגות, אני אחבר אותו הפעם לפינים למעלה, אז יהיו לי רק 256 מדרגות, זאת אומרת הרגישות... אם אמרנו שהוא לא רגיש, אז עכשיו זה אפילו פחות רגיש, אוקיי? יהיו לי רק 256 אופציות להראות לי, וזה יהיה פחות טוב. זאת אומרת שבדרך כלל עם inputs שמים אותם ב-A0 עד A5.
עוד סימן שאתם צריכים לדעת: יש פה, אני לא יודע אם אתם יכולים לראות, ליד 9, 10, 11 יש טילדה כזאת (~), הדבר הזה. אתם מצליחים לראות על הציור הזה? או אם יש לכם בורד לידכם להסתכל עליו, זה גם יהיה מגניב.
כשאני רוצה להוציא נגיד, להפעיל סרבו, אוקיי? אני רוצה להפעיל סרבו. סרבו מקבל PWM. ככה הוא עובד. אוקיי? הפינים היחידים שיכולים להוציא לי מתח PWM, זאת אומרת גל ריבועי, זה הפינים שמסומן לידם טילדה. אוקיי? טילדה. גם רשום פה (Digital PWM ~) בסוגריים. אוקיי, זה רשום בערך על כל דבר אפשרי.
טילדה אומר גל ריבועי. זאת אומרת כדי להפעיל סרבו, להפעיל Stepper Motor שגם צריך PWM, כל מיני רכיבים, צריך PWM.
זאת אומרת, 3, 5 ו-6 זה עם טילדה?
בדיוק, וגם 9, 10, 11. זאת אומרת יש לך שישה סרבואים שאתה יכול להפעיל בארדואינו, באידיאל. אוקיי? במקסימום כאילו.
יפה. עוד דברים שאני רוצה לדבר איתכם, USB. אוקיי, ה-USB זה... אתם מחברים אותו למחשב. איך צורבים בעצם קוד לדבר הזה? אנחנו לקראת יום ראשון שניפגש, אנחנו נראה לכם... לא תצטרכו להוריד את התוכנה, חבל לבזבז את הזמן, Arduino IDE. ניתן לכם תדריך איך להוריד את התוכנה הזאתי.
זה תוכנה שאתם מורידים, פותחים, מחברים את הארדואינו בכבל USB, אוקיי? והוא פשוט... התוכנה קולטת את הארדואינו, אתם אומרים לו... מחברים את הארדואינו, מצהירים על זה, סוג של מצהירים על זה, נקרא COM, אתם רואים באיזה COM זה מחובר במחשב, ואז פשוט רושמים את הקוד וצורבים עליו.
אוקיי, מבחינתכם זה שקוף לגמרי. כל מה שעובר באמצע, פשוט לרשום את הקוד ולצרוב עליו שזה מחובר עם כבל.
הרעיון שיש פה הוא שהמיקרו-בקר... ה-USB עובד באיזשהו פרוטוקול מסוים. אוקיי, הוא עובד, סתם אני אומר, הוא יודע לדבר סינית, והמיקרו-בקר יודע לדבר עברית, אוקיי? אז מהפרוטוקול הזה מה-USB עובד דרך כמה מיקרו-בקרים...
כל מיני נקודות שחורות שאתם רואים פה, עוקף זה את זה, והוא מגיע אליו בשפה העברית. זאת אומרת זה סוג של translator. מהפרוטוקול של USB לפרוטוקול של ה-ATmega328.
זה כאילו הדרייברים בעצם, לא?
דרייבר זה ספריות יותר של קומפילציה. זה יותר אם נדבר על הרכיב הספציפי הזה, הוא אחראי פשוט להמיר את הפרוטוקול, להמיר שפה, אוקיי?
שוב, הרעיון שלו הוא לתחזק את המיקרו-בקר הזה שהוא גולת הכותרת, אוקיי? כדי שהמיקרו-בקר הזה יבין את המחשב, כי כל אחד מדבר בשפה אחרת. ה-ATmega328.
ה-Arduino הזה, איזה גרסה זו?
זה UNO, נראה לי R3 אם אני לא טועה. R3 זה... היום Arduino Uno, בדרך כלל שאומרים Arduino Uno מתכוונים ל-R3, זה הכי מפורסם. זה נמצא לפני נראה לי משהו כמו 6 שנים, ומשתמשים בו עד לפני איזה חודשיים-שלושה שיצא R4. אז בדרך כלל שאומרים Arduino Uno מתכוונים ל-R3, שזה הגרסה השלישית.
עוד משהו שיש פה, יש פה מד מתח, אוקיי? שאפשר לחבר אליו את החשמל. אפשר אגב לחבר את ה-USB. דרך אגב אם תחברו את ה-Arduino עם ה-USB למחשב אז הוא גם יעבוד, אוקיי, לא חובה זה. אבל אחרי זה שתנתקו אותו מהמחשב, ואתם תשימו אותו על איזשהו רובוט שתירצו שהוא יעבוד, אז יהיה לכם איזשהם בטריות כאלה שיצא מהם חיבור לכזה דבר.
הבנתי. כאילו עם ה-USB אני צורב אותו ואז אני פשוט יכול לחבר אותו אחר כך בחוץ וזה פשוט...
בדיוק. הקוד נצרב על המיקרו-בקר, ואתה צורב אותו בצורה כזאת שברגע שאתה מחבר אליו חשמל הוא פשוט מריץ את הקוד אוטומטית.
רגע, אז כאילו באופן כללי עכשיו, לצורך העניין נניח אני רוצה עכשיו לתכנת ולראות ש... לפני שאני בכלל מחבר אותו ככה פרילנס ל... סתם לא יודע, דוגמה, מכונית על שלט. אני קודם כול מחבר אותו למחשב, מחבר את הפינים של המכונית על שלט ל-Arduino, הכול מחובר לי קומפלט, מריץ, רואה שפועל. ברגע שראיתי שפועל, צרבתי, ואז אני יכול לחבר נטו לחשמל. בספורט אני חייב לעשות את התכנות כשהכול מחובר ככה או ככה?
תראה, אתה לא חייב לחבר את הגלגל כדי לצרוב את הקוד, אבל כדי לראות שזה עובד באמת, לראות שזה עובד, אז כן. כן, חד משמעית.
לראות שיש לי את ה-PWM ואת כל אלו שבאמת הקריטיים.
נגיד מכונית על שלט זה אחלה דוגמה כי זה נגיד פחות נוח, נכון? תחשוב, אתה מחבר מכונית על שלט עם כבל ורוצה לראות שהיא נוסעת קדימה, קח את המחשב איתה.
כן, שמים אותה על הגב.
כן, אז בדיוק. יש כל שני טריקים. אז כן, אז זה הדבר.
## אתחול ו-Bootloader
כשמעלים את ה-Arduino, יש לו בוט כלשהו? בוט או מערכת הפעלה כלשהי, או שזה פשוט הוא ניגש ישירות למיקרו-קונטרולר ומשם שואב את הקוד?
עיקרון על המיקרו-בקר הזה יש bootloader כבר שמגיע, שה-bootloader הזה המטרה שלו היא שהתוכנה שעולה במחשב שלך, הוא יזהה אותו וידע לצרוב עליו. מבחינתך הוא שקוף, אתה לא תתעסק איתו בכלל, אוקיי? המטרה שלו היא נטו שהתוכנה שיש לך במחשב תקלוט אותו ותאפשר לך לצרוב עליו.
הקוד שאתה צורב עליו זה מה שאתה תראה ומה שאתה תתעסק בו, שזה תכלס הוראות הפעלה. כן? אתה תגיד לו מה לעשות, אתה ממש תגיד לו, תחבר לצורך העניין... רכב שעשיתי רדאר כדי שיסתכל. אוקיי, אז מה אמרתי לו? מה רשמתי בקוד? חיברתי סרוו... את הרדאר הזה ל-Pin 9, אוקיי? ורשמתי לו בקוד: תאזין ל-Pin 9, תראה שהוא עושה ככה ותעשה ככה ותעשה ככה ותעשה ככה.
Pin 9 כאילו...
זה דוגמה לא טובה, זה ה-inputs אז חיברתי ל-A1 במקרה הזה, אוקיי? כי האזנתי, האזנתי כדי לראות מה המרחק.
מה זה A1?
סליחה?
ב-A1 ב-digital או ב-analog?
A1 ב-analog. אוקיי? כשאני אומר בכללי A, תדע שאני מדבר רק על אנלוג. A זה אנלוג, זה המשמעות שלו.
Pin 1, Pin 2 זה ה-digital.
כן. אז מה רציתי לעשות בעצם בסרוו הזה עם הרדאר? רציתי לעשות שני דברים: א', להגיד לו לזוז ככה, נכון? אתה רוצה להגיד לו לזוז, תרפרף.
זאת אומרת, אני צריך להוציא לו פולס PWM מ-Pin 9 או 10 או 11 או 3 או 5 או 6 להגיד לו תעשה את הדבר הזה, תזוז ככה. אוקיי? על הסרוו שזז ככה יש לי רדאר שקולט שהוא מוזן לי ל-A1 או A0 או A2, והוא משדר אחורה מה הוא קולט.
זה כאילו רדאר...
בדיוק, על הסרוו מונח רדאר, הסרוו זז משמאל לימין כשאני מוציא ל-PWM דרך Pin 9 או 10 או 11, מה שאני בוחר, ואני מזיז את ה-PWM הזה פשוט מ-0 ל-180, מ-0 ל-255, אוקיי? אתה ממש יכול לדמיין, לא יודע אם יצא לכם, חלקכם נגעתם ב-C, אז אני אזרוק את זה, אם אתם לא מכירים אז עזבו, אבל לולאת for, אוקיי? שרצה מ-0 ל-255 וחוזרת אחורה, ואז הסרוו פשוט יעשה ככה. הוא פשוט יזוז מהתחלה עד הסוף וכו' וכו', והרדאר שנמצא עליו למעלה מחובר ב-A1 ופשוט כל פעם בודק ומחזיר מה הוא רואה.
אוקיי.
יש פה איזה שני רכיבים: סרוו ועליו יש רדאר. הסרוו זז...
איך עשית את המקם עם... כאילו זה...
זה רכיב שאתה מזמין.
מה?
רכיב שאתה מזמין.
באמצעות RF או לא יודע מה?
הרדאר הזה, זה רכיב שהוא מאוד מפורסם, לדעתי יש לך אותו אפילו בערכה.
לדעתי פועל על sound במקרה הזה.
כן, זה נקרא Ultrasonic.
Ultrasonic, נכון.
Ultrasonic, ולפי דעתי יש לך אותו בערכה, זה נראה כמו שתי עיניים כאלה. ואיך שהוא עובד, הוא משדר קול, מייצר איזשהו אקו, ואז קולט מה הוא שידר, אוקיי? מאזין... כמו סוג של עטלף.
כמו מקם קולי.
כן, כמו עטלף שהוא מדבר ושומע את הקול שחוזר אליו.
זה לא מקם כאילו שמשתמשים ב... שמשדר ממש אות RF ואז הוא...
זה עובד על אותו עיקרון. יש הרבה סוגים, כן. אבל דרך אגב באמת כמו שדן אומר, מקם... בסוף אתה משדר וקולט, כן? גם כשאתה משדר קול.
אבל כן, Ultrasonic לדעתי שוב יש לך אותו בערכה, וזה נראה כמו שתי עיניים כאלה ומשחקים איתו. אותו אתה מלביש על סרוו...
אצלי אין אותו, אני הזמנתי עשירייה עכשיו, אני מקווה שיגיעו מהר. ראיתי איזה משהו מגניב לאללה שמישהו עשה עם זה.
מה, עם קול? טפטוף מים? ככה?
זה גם ניסוי, אבל לא, במקום לעשות עם החיישן של שתי עיניים כאלו, אתה יודע הם עושים מקם שמסתובב, הוא עשה משהו שרציתי לעשות, רק מסוג אחר. במקום עם אנטנה, הוא לקח פשוט שרשרת של מלא מקמים, כאילו חיבר אותם אחד ליד השני ועוד אחד שקולט, ואז הוא עשה עם beamforming עם shift, זה עומד במקום וזה פשוט עם העוצמות שלהם מכוון את הזווית של הסאונד.
וואלה.
בזמן שהוא עומד במקום הוא עושה משחק עם הפאזה של התדרים ואז הוא יכול להחליט לאיזה כיוון המקם הולך מבחינת לאיזה כיוון הסאונד הולך, בזמן שהמכשיר עומד במקום.
מגניב בטירוף.
זה משהו ברמה אחרת כבר, כן.
יפה יפה, נגיע לשם, יש דברים שעושים במועדון.
נגיע לשם, כן.
אז יש פה עוד כמה רכיבים שאני לא חושב שצריך להיכנס אליהם יותר מדי. יש פה כפתור של Reset, שאם עכשיו הרכב שלכם עובד ואתם רוצים להפעיל אותו מהתחלה, אז אתם יכולים ללחוץ על הכפתור האדום הזה.
יש פה פינים לגישה ל-bootloader וכל מיני דברים כאלה, לא משתמשים בהם בכלל. יכול להגיד לכם באופן אישי, אני לא נגעתי ב-6 פינים האלה בחיים חוץ מפעם אחת שניסיתי לעשות משהו. אז סתם, תכלס מה שחשוב פה זה הפינים input/output שיש למעלה ולמטה, USB והמתח. כל שאר הדברים כנראה לא תיגעו.
מה זה Analog Reference Pins, משתמשים בזה?
גם לא.
כאילו אפס מוחלט לצורך העניין, אלא כדי להשוות את זה עם ה-analog למטה, או ש...
האמת להגיד לך, אני לא זוכר בדיוק את הפין הזה ולא השתמשתי בו שנתיים בערך.
Analog Reference זה גם... אתה יכול לקרוא לזה ב-digital/analog, זה אם אני זוכר, זה קבוע שאומר לך כמה אתה יכול לקבל על כל ביט או בסך הכול, כי אתה בחיים לא תקבל את כל ה-5V שאתה רוצה לקבל ב-100%.
תן לי אביב אבדוק לך את זה ואני אחזיר לך תשובה, אוקיי?
מה שהתכוונת זה במקרה הזה שאתה לא מקבל 5V ישר DC כאילו? אתה מקבל 4.99?
לא, אני לא רוצה לבלבל אותך, זה משהו אחר. גם אני אשב על זה, אני אראה אם אני יכול לתת לכם משהו שהוא טוב.
זה בדרך כלל אני חושב שלא משתמשים בו יותר מדי. לי אישית לא יצא להשתמש בו, אני אעשה בדיקה, אני אבדוק מה זה.
## דגמי Arduino והשוואה ביניהם
טוב, יש כמה סוגים של Arduino, אוקיי? הנפוצים ביותר, מה שמשתמשים בהם בדרך כלל גם בתעשייה, גם במקומות כאלה ואחרים, זה Arduino Uno, אוקיי, שזה מה שראינו, Arduino Mega, עוד מעט אני אדבר עליהם, ו-Arduino Nano, אוקיי? זה בדרך כלל מה שמשתמשים בהם, לרוב.
היתרון של ה-Nano זה שהוא מאוד מאוד קטן. אנחנו עשינו איזשהו פרויקט ללקוח שבנינו לו איזשהו רכיב, השתמשנו ב-Nano כי הוא היה מאוד מאוד קטן ומתאים לנו לסיפור. Mega, היתרון שלו שיש לו הרבה מאוד inputs ו-outputs, אוקיי? אתה יכול להשתמש להפעיל ככה הרבה רכיבים ולקלוט הרבה רכיבים, וזה היתרון שלו בעצם.
לצורך העניין Arduino Nano זה כאילו מקביל ל-ESP32-C3 במקרה?
תראה, ESP... אני אעשה לך סדר. ESP32, אתה תראה, יש בערך טריליון בורדים, טריליון סוגים. יש הכול מהכול, אוקיי? אין סוף, אפשר לאבד בזה.
ESP32 אני אוהב לעבוד איתו אם אנחנו מדברים על Wi-Fi ו-Bluetooth. ואז אני מדבר איתך גם על הגרסה הרגילה שאיפה שהוא זה S2 או משהו כזה. אם אתה מדבר על משהו קטן ודברים כאלה, אז אני משתמש ב-Nano. לא נוגע ב-ESP, אוקיי? אם זה משהו ממש ממש קטן, Arduino Nano.
בדקתי בינתיים על ה-Reference. ב-analog, הוא נותן אינדיקציה ל-Arduino מה המתח המקסימלי האנלוגי שאני יכול לקבל.
יפה! נכון. אז נכון אמרנו שהפוטורזיסטור יכול להיות בין 0 ל-5 ואז הוא ממיר מ-0 ל-1023 נגיד? אתה זוכר את זה? אז אם אני נותן לו מתח Reference נגיד 4, אז הוא ימיר בין 0 ל-4 ל-1023. אתה מבין?
טבלת מיפוי כזאת?
כן, בדיוק. הוא יעשה את המיפוי במקום... הוא לא יעבור את המתח Reference. אתה כאילו אומר לו, "עזוב את ה-5 שאתה מכיר, גם אם אתה עובד על 5V אין בעיה, המקסימום שלך זה 4V בקריאה של האנלוג". ואז המיפוי שלו יהיה קצת יותר שונה. למה זה טוב? שאם אתה רוצה לתת טווח, במקום נגיד 0 עד 5 אתה נותן 0 עד 3 להיפרש על פני 1024, אז כן יש לך רגישות יותר גבוהה. כי אתה פורש שטח קטן יותר, אופציות קטנות יותר, נכון? מ-0 עד 3 זה פחות אופציות, אתה פורש את זה ל-1024 ואז יש לך רגישות יותר גבוהה, אוקיי.
יפה. אז דיברנו על Arduino Uno, Mega ו-Nano, שזה שלושת החבר'ה שבדרך כלל משתמשים בהם. Uno זה הרגיל, כל פרויקט שלכם יתחיל ב-Uno, אוקיי? משם אתם תחליטו אם לעבור ל-Nano או אם לעבור ל-Mega.
אז יש פה כמה השוואות, אוקיי? דברים שבולטים שאפשר לראות. Mega, לצורך העניין, ה-inputs וה-outputs שלו הם by far יותר גבוהים, אוקיי? by far יותר גבוהים, אתה יכול להפעיל הרבה יותר רכיבים, גם בקליטה וגם בשידור. Nano, החיסרון שלו בזה שהוא קטן זה שיש לו פחות יציאות PWM. זאת אומרת, נגיד אני רוצה להפעיל סרוואים, הוא יכול להפעיל מקסימום 2, אוקיי? זה החיסרון שלו בזה שהקטנו.
כולם עובדים על 5V, והגודל שלהם הוא גם עניין: Arduino Uno נגיד באמצע, Mega הוא גדול קצת יותר, וה-Nano הוא קטן. זה היתרון של ה-Nano, שהוא הרבה פעמים...
## השוואה לבורדים אחרים
נכנסים במקומות קטנים וזה הנוחות שלהם.
יפה, אז בואו נדבר קצת על בורדים אחרים, כי אנחנו גם זרקנו עוד כמה שמות. אז בואו נשווה את זה קצת ל-Raspberry Pi ול-ESP32, שהם בדרך כלל הכי נפוצים.
אז Arduino Uno הוא הראשון שיצא בקטגוריה הזאת. Raspberry Pi יצא ב-2012. אם אני מנסה להשוות את Raspberry Pi ל-Arduino לצורך העניין, זה כמו להשוות מקדונלד'ס להמבורגר יוקרתי, אין לי מושג, של ה-OECD, אוקיי? זה לא אותו דבר, אין קשר. אלה עולמות שונים, למרות שבדרך כלל מדברים עליהם.
- Raspberry Pi זה מחשב, זה מחשב לכל דבר.
- זה מחשב קטן, אוקיי? הוא מריץ מערכת הפעלה, הוא מריץ Linux עליו. אתה יכול לעשות דברים משוגעים על ה-Raspberry Pi. הוא גם הרבה יותר גדול, הרבה יותר מסיבי, יותר יקר.
- אפשר לשלב לו הרד דיסק וכולי.
- כן, הוא ממש מחשב קטן.
ESP32 לעומת זאת, כן אתה יכול להשוות אותו לגמרי ל-Arduino Uno, אוקיי? גם בגודל, גם במחיר, גם בביצועים. והיתרון של ESP32 זה שגם יש לו יכולות IoT, זאת אומרת Wi-Fi ו-Bluetooth, אוקיי? זאת אומרת שהוא ממש לוקח Arduino והופך אותו עם Wi-Fi ו-Bluetooth.
יש לו שיטות אחרות. לי, התעסקות עם ESP32 מאוד קשה. יכול להיות שהוא טוב ב-Wi-Fi ו-Bluetooth, אבל הוא עושה מלא בעיות, אוקיי? הוא מתנתק מלא והוא לא אמין, הוא פחות אמין מ-Arduino, בוא נגיד ככה. אז זה תלוי ממש במה שאתה צריך.
עוד כמה הבדלים ביניהם: Arduino Uno הוא הכי ידידותי למשתמש, זה בדרך כלל מה שמשתמשים בו בהתחלה, אוקיי? הגמישות של כולם היא מאוד גבוהה. יש באמצע, כמו שאתם רואים, Arduino MKR WiFi. אני בכוונה לא מדבר עליו, שימו אותו בצד. זה איזשהו סוג של בורד של Arduino שלא משתמשים בו, אז הוא לא חשוב. אם יש לכם Wi-Fi, ESP32 הרבה יותר טוב.
אז כמו שאמרנו, Raspberry Pi הוא יותר לכיוון של מחשבים ודברים כאלה.
## בעיות נפוצות בשימוש בארדואינו
דרך אגב, המצגת הזאת תישלח אליכם בסוף כל הרצאה, אז אין לכם מה לדאוג, אתם יכולים לעבור על זה ולסתכל על זה וכולי.
כשתעבדו על Arduino יתרחשו הרבה בעיות, אוקיי? חלקן זה בגלל שעשיתם משהו לא בסדר, חלקן זה בגלל שאתם מתעסקים ברכיבים סיניים שלא יודע מי ברא ומי בנה ולכו תדעו אם זה עדיין עובד. יהיו הרבה פעמים שתשברו לעצמכם את הראש ולא תבינו למה הדבר שעשיתם הוא לא עובד, פתאום תחליפו בורד וזה עובד, ותרצו להרביץ לקיר. אבל אין מה לעשות, זה חלק מהעניין.
כמה בעיות שיוצא הרבה פעמים לראות אותן:
אם משהו לא עובד, הדבר הראשון שתבדקו זה אם משהו לא מחובר טוב. אוקיי, אם איזה חוט לא מחובר טוב, אם איזה משהו לא מחובר טוב, לא יציב, לא מספיק בפנים, אם זה במטריצה, אם זה בבורד, זה בדרך כלל מה שעושים.
מסתכלים גם על בעיות בספק הכוח, יכול להיות שלא הכנסנו מספיק מתח.
מסתכלים כמובן על הקוד שהכנסתם, מדבגים אותו קצת. לפעמים גם יש נפילות בקומפילציה או ברצף הרצה עצמה כשאתם מנסים לצרוב, ואז בכלל מבינים מה הבעיה.
לפעמים יש חיישנים לא טובים, אוקיי? זה גם קרה לי, משהו שזכור לי ממש מעצבן ברמות, שניסיתי לחבר איזשהו חיישן שנותן לי איזושהי אינדיקציה לחום כלשהו, והחיישן הזה שטמפרטורה מסוימת הוא כבר לא קולט. ואני לא מצליח להבין למה הדבר הזה לא מגיב. אני יודע שאני על 60 מעלות, אבל ה-Arduino אומר "אני לא על 60 מעלות", ואני שובר את הראש ואני מנסה את זה ואני מנסה את זה, והחיישן מגיב לזה ומגיב לזה, אבל מטמפרטורה מסוימת הוא מפסיק להגיב, ואני שברתי על זה את הראש. זה גם קורה.
חיבור USB והפרעות חשמליות, זה דווקא פחות קורה, אבל הכל יכול להיות.
מה שיפה ב-Arduino, וזה גם למה כל כך כיף ונוח להתחיל איתו, שהקהילה שלו תוססת ופורחת, אוקיי?
א, יש את הקבוצה שלנו של Arduino JS Israel שאתם יכולים לשאול שם כל שאלה. אתם רואים גם אנשים לפעמים נכנסים שם לחפירות של אלוהים יודע, שזה מבורך, אני אוהב את זה.
ב, יש לכם את הקבוצה של הסדנה.
ג, גם יהיה לכם בהמשך את הקבוצה של המועדון.
יש לכם אותי ואת שחף, שתכירו את שחף. אותי ואת טל ואביב אתם מכירים, את שחף תכירו בפגישה הבאה. מוזמנים 24/7 לשלוח בקבוצה, לשלוח לנו בפרטי אם יש לכם איזה שהן שאלות, משהו שלא הבנתם. אם זה להרצאה הזאת, או אם זה עוד חצי שנה על איזה פרויקט שאתם בונים, תרגישו חופשי. לא מציקים לנו בכלל, אנחנו אוהבים את זה. אנחנו אוהבים שמציקים לנו, יש לנו ילדים קטנים אז אנחנו רגילים.
## הארדואינו כמד מתח
נראה אם לא שכחתי משהו. אוקיי, נראה לי כבר דיברנו על זה.
הארדואינו כמד מתח - דיברנו על זה שהוא מודד מתח, נכון? נתנו דוגמה על הפוטורזיסטור שהוא מקבל מתח בין 0 ל-5V, הוא מודד את המתח והוא מוציא ערכים בין 0 ל-1023, אוקיי? זה מה שאתה תראה, הוא מודד את המתח ועושה את זה ככמות המדרגות, זאת אומרת הרזולוציה של המדידה.
ברירת המחדל ב-Arduino היא מדידת המתח בין 0 ל-5V, כמו שאמרנו. אם אתה רוצה לשנות את הרזולוציה, נגיד מ-0 ל-4 או מ-0 ל-3, שזה אומר ל-0 עד 1023, אז אתה מחבר את זה ל-AREF.
- זה אומר שאם אני שם ספק כוח, אני לא אמור לתת לו יותר מ-5, או שיש לו מייצב מתח שיושב לי ושומר לי על 5?
- אז מה שאתה עושה זה דבר כזה: אתה מכניס ל-Arduino 5V, נכון? ה-Arduino מקבל ספק כוח של 5V, ככה הוא עובד. אתה רוצה לחוש איזשהו חיישן, אבל החיישן הזה עובד מ-0 עד 3V, זה מה שהוא יודע לעשות.
- אז אני מגדיר לו reference.
- אז אני מגדיר לו reference, שם לו ב-reference 3V, ואז הוא מחויק ללבל של החיישן הזה.
- ומה קורה אם אני רוצה למדוד מתחים יותר גבוהים, אני לא יכול?
- יותר מ-5V? לא.
- והשאלה אם יש לו בעיה גם בטעות להזין מתחים יותר גבוהים?
- בטח, אתה פשוט תשרוף את ה-Arduino.
- אמרתי אולי יש לו איזה מנגנון הגנה.
- לא. זה שקל, שקל תשעים בסיני. בוא נגיד דבר כזה, אני שרפתי יותר Arduino-אים מאשר זרקתי גרביים לכביסה, זה קורה.
- טוב, אני אקנה לזה מול זה, סגור.
- כן, כן, אז בדרך כלל כשמזמינים, אתה לוקח בחשבון שזה לא סתם עולה 5 דולר, אלא כי ילד בן 12 סיני בנה את זה.
- מביאים בכמויות.
- כן, בדרך כלל מה שעושים.
טוב, זהו, סיימנו את ההרצאה הראשונה. מקווה שעשינו יישור ככה גם על החשמל וגם על ה-Arduino בכללי.
הרצאה הבאה אנחנו נדבר על הקוד ועל כל הסביבה. אנחנו ניתן לכם לינק מחר להורדה של הסביבה שנקראת Arduino IDE, ש-IDE זה Integrated Development Environment, שבתכלס זה תוכנה, אוקיי? יתן לכם לינק להורדת התוכנה, ואנחנו נתעסק בה ביום שני. קצת C++, קצת דברים כאלה.
- נראה לי ביום שני אתם...
- יום שני.
- סגור. אגב, יצא לי להוריד, זה צ'יק צ'אק, זה ממש קליל להתקין, כאילו יש מדריך. ראיתי שיש את COM3, 4, כלני שורות כאלו. זה משנה מה אני בוחר? כי ראיתי שסתם בחרתי שרירותי וזה פשוט עבד לי, זה משהו שסתם זרקתי עליו.
- אז היה לך מזל. כי כשאתה מחבר... מה זה ה-COM הזה? אני לא זוכר את ראשי התיבות, אבל בתכלס כשאתה מחבר את ה-USB שלך, אז יש לו מספר COM. אם אתה תילקח את ה-Arduino שלך עכשיו שצרבת עליו, ותנתק ותחבר ל-USB אחר בנייד שלך, אז הוא יקבל COM אחר.
- אה, אוקיי, הבנתי אותך.
- זה כאילו איזה USB מחובר.
- אז אם אני עכשיו... אוקיי, סגור. אז אני סתם אשחק עם זה, נראה ש...
- תחליף לו USB ותראה שזה כבר לא 3.
- ואז אני אצטרך להחליף את ה-COM.
- בדיוק, ל-COM אחר שהוא... כן. כדי לדעת איזה COM זה, אתה יכול לעשות... יש שתי אופציות: או שאתה נכנס ל-Device Manager ובודק איזה COM זה, או שאתה בניסוי וטעות, עד שזה פשוט עובד.
- מה שכן, לא כדאי להכניס משהו ל-COM אחר ולעשות לו צריבה.
- אי אפשר לדעת. פתאום משהו על המצלמה עכשיו...
- כן, אני לא יודע, נפיל את השעון של הרכב, אני לא יודע.