ארדואינו, תראה מה עשית!

בניגוד למה שנהוג לפעמים לחשוב (ומה שחשבתי בעצמי עד לא מזמן), ארדואינו הוא לא שער לעולם ה-Embedded אלא עולם בפני עצמו. מה מאפיין את העולם הזה, ואיזו מטרה בעצם הוא משרת?

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

מתחילים רבים מנסים אמנם לחבר מודולים וקטעי קוד מוכנים כאילו היו קוביות לגו, בלי לשים לב למגבלות טכניות כמו צריכת זרם או התנגשויות משאבים – אבל את זה אפשר לייחס פשוט לחוסר ידע, שנובע באופן טבעי מהיותם מתחילים. את הידע הזה רוכשים עם הזמן וההתנסות. יותר מזה, גם מפתחים מקצועיים מתייחסים לחלק מהדברים כ"לגו" (כמעט אף אחד, למשל, לא מייצר ג'וקים בעצמו). חשדתי שהבעיה כאן עמוקה יותר מאשר רמת הניסיון בלבד.

ואז, פתאום, הבנתי מה העניין: לא עצם השימוש במודולים מוכנים, אלא בצורת החיבור ביניהם. ברוב עצום מהפרויקטים שנעשים בארדואינו, הדברים היחידים שהמייקר עושה בעצמו הוא העברה של אותות בסיסיים ופשוטים ביותר בין מודול אחד לאחר (בחומרה או בתוכנה): להפעיל/לכבות, לחבר/לנתק, ליזום קבלה/משלוח של נתונים מוגדרים מראש, אם X אז Y אחרת Z וכדומה. בשטח זה מתבטא בחיבור של חוטים בלבד בין מודולי חומרה, ובקוד שמסתכם פחות או יותר בהעתקות מהרשת, קריאות לפונקציות ספריה מוכנות-מראש, ותנאי if או switch מינימליים.

בהסתכלות מהכיוון ההפוך, מה שלא מבוצע על ידי המייקרים בפרוייקטים כאלה זה תכנון של מעגל חשמלי (הכוונה לא לסכימת חיבורים אלא לתכנון ממש, עם בחירת רכיבים מותאמים היטב למשימה, שלא לדבר על מעגלים אנלוגיים), וקוד שמבצע עיבוד של מידע. חישבו לדוגמה על פרויקט המתחילים הנפוץ של קריאת מרחק בעזרת חיישן אולטרה-סוני: בכמה מקרים ראיתם שהמייקר חשב, פיתח ווידא את נוסחת חישוב המרחק בעצמו, במקום להסתמך על קוד קיים? גישת הלגו מבוססת, אם כך, על שינון "עיוור" והעתקה של צורות עבודה שגרתיות עם כלי עבודה שאחרים הכינו, במקום חשיבה מעמיקה ובמקום לימוד של עקרונות האלקטרוניקה והתכנות.

כל זה, כשלעצמו, בסדר גמור כשלב ראשון. אף אחד לא מצפה מהמתחילים להסתער על החומר התיאורטי ולשלוט בו באופן מיידי. הארדואינו זכה להצלחה שכזו בדיוק בזכות ההנגשה של התחום לאנשים חסרי רקע. אלא שכוחות השוק הבחינו בהצלחה הזו, והתחילו לרכוב עליה עם עוד ועוד מודולים מוכנים שתואמים לגישת הלגו: רק לחבר בחוטים ולקרוא לפונקציות המוכנות. בזכות הפיתוחים האלה, המייקר הלא-מקצועי יכול לבצע עוד ועוד דברים, בתנאי שהוא ממשיך לרקוד לפי החליל של המודולים המוכנים (מחיר, גודל פיזי, נפח קוד להפעלה, צריכת חשמל…) ובתנאי שהוא ממשיך לעבוד בשיטה של חיבור לגו. במילים אחרות, כל עוד הוא לא מתפתח.

המצב הזה נוח לכל הצדדים. מייקר-הלגו מרגיש שהוא מתפתח בלי להתאמץ, כי המודולים החדשים שהוא קונה יודעים לעשות עוד כמה טריקים. יצרני החומרה מפתחים עוד ועוד מודולים כאלה ועושים עליהם הון, וספקי תוכנות ושירותים שונים ומשונים (שירותי ענן ל-IoT בתשלום, למשל) מצטרפים גם הם לחגיגה. במקום תנועה של מייקרים לומדים ומפתחים, קיבלנו קבוצה ענקית של ילדים בארגז חול משוכלל. הרושם הוא שהמייקרים היחידים שמפתחים דברים חדשים ומעניינים באמת, בתוכנה או בחומרה, הם אלה שיש להם רקע קודם – בדרך כלל גם פורמלי – בתחומים האלה.

ומה איתכם? כמה זמן אתם מתכוונים להמשיך לשחק בלגו?*

* האקינג יצירתי של לגו זה דווקא בסדר 🙂

להרשמה
הודע לי על
29 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

הי עידו היות שהגבת בהודעה שפרסמתי במייקרס חשבתי שאולי גם אני תרמתי קצת לחשיבה שלך בנושא, ולכן רציתי להגיב. הנה המקום שבו ארדואינו הועיל ומועיל לי: אני מתכנת במקצועי, מעל 10 שנים נסיון מצטבר. יודע מעל שפות מחשב שונות. אני יודע איך "מחשב חושב" ואיך לבנות אלגוריתם לכל משימה. בתאוריה אני יודע לבנות כל מערכת ממוחשבת ברמת הלוגיקה שנדרשת בפרוייקטים מעשיים. בצד הפרקטי, "אלקטרוני", שיחקתי עם רכיבים בחיי אבל מעולם לא ידעתי לתכנן לבד מעגלים. כלומר, בקיצור, אני יכול בתאוריה להסביר איך עובד כל פרוייקט שאני ארצה לתכנן, אבל בלי ארדואינו לא הייתה לי יכולת מעשית לבנות פרוייקט. הדוגמה הפשוטה… לקרוא עוד »

כן אבל זה החיבור: אנשים עם רקע בתוכנה אני חושב יש יותר וגם קל יותר ליצור… כשהייתי בתיכון (לפני 10 שנים) לימודי חובה במדעי המחשב לכל התלמידים כללו ידע מספיק לבנייה של קוד עבור ארדואינו.
לכל האנשים האלה יש (או הייתה) יכולת להבין ולממש לוגיקה באמצעות מחשב – אך לא באמצעים פיסיים. הארדואינו נתן קפיצה מדרגה למטה – מתוכנה לחומרה. ואני חושב שזה בהחלט דבר גדול!
וכמו הרבה פעמים בתחומי ידע חדשים, בהתחלה אתה לומד רק בשביל לממש את המטרה שלך, ואז אתה מתחיל להתעניין יותר…אני למשל כבר עסוק בלמידה של לוגיקה ספרתית ומימושים דרך טרנזיסטורים.

מאוד מזדהה עם התחושות שאתה מתאר עידו..

לדעתי זה ביטוי למשהו עמוק שמתרחש בחברת ה"אינסטנט" שלנו.
כמו כן לצערי אני רואה את התופעה אפילו אצל סטודנטים שאני מתגבר במסגרת עבודתי- אף על פי שהם כבר עשו את "הצעד הבא" לכיוון ההשכלה הפורמלית בתחום- ישנו מחסום פסיכולוגי שמקשה עליהם לצאת מה"קופסה" הזאת וליישם ידע תיאורטי שהם רכשו בצורה מעשית והם בוחרים בדרך ה"לגו והברביות" (:

דרך אגב יש חשד סביר שדייב ג'ונס נמנה על קוראי הבלוג שלך(:
הוא התייחס בקצרה לנושא לאחר פרסום הפוסט..

https://youtu.be/zyuRcsM0gjI

אם כבר מדברים על לעזוב את איזור הנוחות…מה היית ממליץ למייקר מתחיל שרוצה להתחיל לנדוד מעולם הארדואינו ולהתחיל להתעסק עם מיקרו בקרים אחרים: PIC או 8051? או אולי בכלל משהוא אחר?

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

מחכה לראות את פוסט הblink שלך על ה8051. בטוח שלא תתקשה למצוא אחד כזה במכשיר אלקטרוני ישן. הדברים האלה נמצאים בכל חור 🙂

לא רק שקראתי, אלא אפילו הגבתי על חלק P-:

לגביי צורב.. מה לגבי ה K150? שניהם נכנסים תחת הקטגוריה של "צורב פיק" אז הייתי רוצה לדעת מה ההבדל ביניהם.

לדעתי האישית הצפייה מכל אדם להפוך למייקר שמייצר בעצמו דברים היא קצת מופרזת. הבעיה העיקרית שבגללה רוב האנשים הם יותר צרכני תוכן מאשר יצרני תוכן היא לדעתי כיוון שכדי ליצור צריך ללמוד (כמו שציינת) את הנושא לעומק ובאמת להבין מה אתה עושה. הצרה היא שלימוד ברמה כזו פשוט לוקח המון זמן. לאדם שלא מתפרנס מזה קשה מאוד להקדיש כזו כמות של זמן לתחביב. דוגמא דומה מתחום אחר- תחקיר עיתונאי, כיום כל המידע פתוח בפני כל אדם. פרוטוקולי הכנסת, סטטיסטיקות ארציות ונתונים כלכליים מפורסמים כך שכל אדם יכול לגשת אליהם. למרות זאת הרוב המוחלט של האנשים שעורכים תחקירים ומבררים נושאים מסוג… לקרוא עוד »

התועלת היא פשוט ההנאה מהעשייה….ואני חושב שהיום 90% משוק הפיתוח מושתת על ספריות ומודלים מוכנים בוא נודה באמת זה המצב כיום וזה לא כזה רע לטעמי. התעמקות הזאת בדברים שאתה מדבר עליה היא כבר לא צורך בסיסי. תכנס לחברות הגדולות ותראה איך המודל החדש תמיד מתחיל מבסיס שהוא המודל הקודם 🙂

טוב, אז ככה. אני לא חושב שהארדואינו בכלל אמור להיות מבוא למערכות embedded, אלא יותר מבוא לאלקטרוניקה דיגיטאלית ולמיקרו בקרים. זה בסך הכל לוח פיתוח – מפתחים עליו פרוייקטים שאפשר להעביר ל-PCB אחר כך – הארדואינו צריך להיות שייך רק לשלב התכנון. אני חושב שמייקר שבאמת רוצה להתפתח יאלץ להתעניין על הדרך גם במעגלים אנלוגיים וברכיבי מוליכים למחצה בסיסיים למיניהם (דיודות, טרזיסטורים, טריאקים וכיו"ב), אחרת אין לו ממש לאן להתפתח. למזלנו זה מאוד קל היום, ויש אינסוף מידע על זה ברשת. רק ב-instructable יש מלא מדריכים על כל מעגל בסיסי שרק תרצה. עם זאת, לא כולם רוצים "להתפתח כמייקרים" –… לקרוא עוד »

מיקרו בקרים זה רק חלק קטן, גם אם מרכזי, במערכות embedded. לעבוד רק איתו (או בעיקר איתו) זה לא משהו שהייתי קורא לו "מבוא ל-embedded". אולי מבוא למבוא ל-embedded 🙂

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

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

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

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

יש לך רעיון למשהו דומה?

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