בניגוד למה שנהוג לפעמים לחשוב (ומה שחשבתי בעצמי עד לא מזמן), ארדואינו הוא לא שער לעולם ה-Embedded אלא עולם בפני עצמו. מה מאפיין את העולם הזה, ואיזו מטרה בעצם הוא משרת?
לפני שנתיים, בפורום כזה או אחר, מישהו ציין את חוסר הנוחות שמעוררים בו אנשים שמתייחסים לארדואינו כמו אל לגו פשוט. אינטואיטיבית הרגשתי שאני מבין למה הוא מתכוון, והרבה פעמים נזכרתי בהערה הזו כשראיתי איך חובבים מסוימים ניגשים לפרויקטים, אבל כשניסיתי לנסח את התחושה במילים נתקלתי בקושי מסוים: איפה בדיוק הבעיה? במה בדיוק היא מתבטאת?
מתחילים רבים מנסים אמנם לחבר מודולים וקטעי קוד מוכנים כאילו היו קוביות לגו, בלי לשים לב למגבלות טכניות כמו צריכת זרם או התנגשויות משאבים – אבל את זה אפשר לייחס פשוט לחוסר ידע, שנובע באופן טבעי מהיותם מתחילים. את הידע הזה רוכשים עם הזמן וההתנסות. יותר מזה, גם מפתחים מקצועיים מתייחסים לחלק מהדברים כ"לגו" (כמעט אף אחד, למשל, לא מייצר ג'וקים בעצמו). חשדתי שהבעיה כאן עמוקה יותר מאשר רמת הניסיון בלבד.
ואז, פתאום, הבנתי מה העניין: לא עצם השימוש במודולים מוכנים, אלא בצורת החיבור ביניהם. ברוב עצום מהפרויקטים שנעשים בארדואינו, הדברים היחידים שהמייקר עושה בעצמו הוא העברה של אותות בסיסיים ופשוטים ביותר בין מודול אחד לאחר (בחומרה או בתוכנה): להפעיל/לכבות, לחבר/לנתק, ליזום קבלה/משלוח של נתונים מוגדרים מראש, אם X אז Y אחרת Z וכדומה. בשטח זה מתבטא בחיבור של חוטים בלבד בין מודולי חומרה, ובקוד שמסתכם פחות או יותר בהעתקות מהרשת, קריאות לפונקציות ספריה מוכנות-מראש, ותנאי if או switch מינימליים.
בהסתכלות מהכיוון ההפוך, מה שלא מבוצע על ידי המייקרים בפרוייקטים כאלה זה תכנון של מעגל חשמלי (הכוונה לא לסכימת חיבורים אלא לתכנון ממש, עם בחירת רכיבים מותאמים היטב למשימה, שלא לדבר על מעגלים אנלוגיים), וקוד שמבצע עיבוד של מידע. חישבו לדוגמה על פרויקט המתחילים הנפוץ של קריאת מרחק בעזרת חיישן אולטרה-סוני: בכמה מקרים ראיתם שהמייקר חשב, פיתח ווידא את נוסחת חישוב המרחק בעצמו, במקום להסתמך על קוד קיים? גישת הלגו מבוססת, אם כך, על שינון "עיוור" והעתקה של צורות עבודה שגרתיות עם כלי עבודה שאחרים הכינו, במקום חשיבה מעמיקה ובמקום לימוד של עקרונות האלקטרוניקה והתכנות.
כל זה, כשלעצמו, בסדר גמור כשלב ראשון. אף אחד לא מצפה מהמתחילים להסתער על החומר התיאורטי ולשלוט בו באופן מיידי. הארדואינו זכה להצלחה שכזו בדיוק בזכות ההנגשה של התחום לאנשים חסרי רקע. אלא שכוחות השוק הבחינו בהצלחה הזו, והתחילו לרכוב עליה עם עוד ועוד מודולים מוכנים שתואמים לגישת הלגו: רק לחבר בחוטים ולקרוא לפונקציות המוכנות. בזכות הפיתוחים האלה, המייקר הלא-מקצועי יכול לבצע עוד ועוד דברים, בתנאי שהוא ממשיך לרקוד לפי החליל של המודולים המוכנים (מחיר, גודל פיזי, נפח קוד להפעלה, צריכת חשמל…) ובתנאי שהוא ממשיך לעבוד בשיטה של חיבור לגו. במילים אחרות, כל עוד הוא לא מתפתח.
המצב הזה נוח לכל הצדדים. מייקר-הלגו מרגיש שהוא מתפתח בלי להתאמץ, כי המודולים החדשים שהוא קונה יודעים לעשות עוד כמה טריקים. יצרני החומרה מפתחים עוד ועוד מודולים כאלה ועושים עליהם הון, וספקי תוכנות ושירותים שונים ומשונים (שירותי ענן ל-IoT בתשלום, למשל) מצטרפים גם הם לחגיגה. במקום תנועה של מייקרים לומדים ומפתחים, קיבלנו קבוצה ענקית של ילדים בארגז חול משוכלל. הרושם הוא שהמייקרים היחידים שמפתחים דברים חדשים ומעניינים באמת, בתוכנה או בחומרה, הם אלה שיש להם רקע קודם – בדרך כלל גם פורמלי – בתחומים האלה.
ומה איתכם? כמה זמן אתם מתכוונים להמשיך לשחק בלגו?*
* האקינג יצירתי של לגו זה דווקא בסדר 🙂
הי עידו היות שהגבת בהודעה שפרסמתי במייקרס חשבתי שאולי גם אני תרמתי קצת לחשיבה שלך בנושא, ולכן רציתי להגיב. הנה המקום שבו ארדואינו הועיל ומועיל לי: אני מתכנת במקצועי, מעל 10 שנים נסיון מצטבר. יודע מעל שפות מחשב שונות. אני יודע איך "מחשב חושב" ואיך לבנות אלגוריתם לכל משימה. בתאוריה אני יודע לבנות כל מערכת ממוחשבת ברמת הלוגיקה שנדרשת בפרוייקטים מעשיים. בצד הפרקטי, "אלקטרוני", שיחקתי עם רכיבים בחיי אבל מעולם לא ידעתי לתכנן לבד מעגלים. כלומר, בקיצור, אני יכול בתאוריה להסביר איך עובד כל פרוייקט שאני ארצה לתכנן, אבל בלי ארדואינו לא הייתה לי יכולת מעשית לבנות פרוייקט. הדוגמה הפשוטה… לקרוא עוד »
יפה – ועכשיו קרא שוב את המשפט האחרון בפסקה האחרונה בפוסט (לפני השאלה והכוכבית שלה)…
כן אבל זה החיבור: אנשים עם רקע בתוכנה אני חושב יש יותר וגם קל יותר ליצור… כשהייתי בתיכון (לפני 10 שנים) לימודי חובה במדעי המחשב לכל התלמידים כללו ידע מספיק לבנייה של קוד עבור ארדואינו.
לכל האנשים האלה יש (או הייתה) יכולת להבין ולממש לוגיקה באמצעות מחשב – אך לא באמצעים פיסיים. הארדואינו נתן קפיצה מדרגה למטה – מתוכנה לחומרה. ואני חושב שזה בהחלט דבר גדול!
וכמו הרבה פעמים בתחומי ידע חדשים, בהתחלה אתה לומד רק בשביל לממש את המטרה שלך, ואז אתה מתחיל להתעניין יותר…אני למשל כבר עסוק בלמידה של לוגיקה ספרתית ומימושים דרך טרנזיסטורים.
ארדואינו מוצג לפעמים כשער לא רק לאלקטרוניקה אלא גם לתכנות. בתפקיד הכפול הזה, כמו שאמרתי, הוא נכשל. רק מי שיש לו רקע קודם בתכנות, או רקע קודם באלקטרוניקה, יש לו בסיס מספיק יציב כדי להתגבר על "מלכודת הדבש" של המודולים ולהתקדם הלאה (אולי גם יחידי סגולה נדירים עם רצון ברזל…)
מאוד מזדהה עם התחושות שאתה מתאר עידו..
לדעתי זה ביטוי למשהו עמוק שמתרחש בחברת ה"אינסטנט" שלנו.
כמו כן לצערי אני רואה את התופעה אפילו אצל סטודנטים שאני מתגבר במסגרת עבודתי- אף על פי שהם כבר עשו את "הצעד הבא" לכיוון ההשכלה הפורמלית בתחום- ישנו מחסום פסיכולוגי שמקשה עליהם לצאת מה"קופסה" הזאת וליישם ידע תיאורטי שהם רכשו בצורה מעשית והם בוחרים בדרך ה"לגו והברביות" (:
דרך אגב יש חשד סביר שדייב ג'ונס נמנה על קוראי הבלוג שלך(:
הוא התייחס בקצרה לנושא לאחר פרסום הפוסט..
https://youtu.be/zyuRcsM0gjI
מאז ששמתי קישור פה מימין לפודקסט TheAmpHour, אני ודייב אחוקים 😀 צירוף מקרים כמובן, אבל זו לא פעם ראשונה שהוא מתייחס לעולם החובבים.
בהחלט יש עניין פסיכולוגי מסוים של רתיעה ממאמץ, אני לא יודע אם זה תרבותי או אוניברסלי – מה שמטריד זה שצמחה תעשיה שלמה שמנצלת ומנציחה את הרתיעה הזו.
אם כבר מדברים על לעזוב את איזור הנוחות…מה היית ממליץ למייקר מתחיל שרוצה להתחיל לנדוד מעולם הארדואינו ולהתחיל להתעסק עם מיקרו בקרים אחרים: PIC או 8051? או אולי בכלל משהוא אחר?
קודם כל, לא חסרים מיקרו-בקרים ממשפחת AVR, שעשויים להיראות קצת יותר מוכרים ושאפשר לתכנת אותם דרך ארדואינו או כלים זולים אחרים (מכיר את סדרת "הלו טייני" כאן בבלוג?). מעבר לזה, לכל כיוון שתבחר יש יתרונות וחסרונות. PIC בסיסיים קל וזול מאד להשיג, אבל הצורב שלהם טיפה יקר. ג'וקים ממשפחת STM8 וצורב סיני בשבילם זולים וזמינים, אבל התיעוד וסביבת הפיתוח עושים חיים קשים. אפשר לעבוד עם MSP430G2 Launchpad ולצרוב בעזרתו ג'וקים עצמאיים מאותה סדרה, אבל את זה לא מוכרים בסין וצריך להיזהר מסביבת הפיתוח Energia שתשאב אותך בחזרה לשיטות של הארדואינו… עם 8051 עוד לא יצא לי לעבוד (גם זה בתכנון,… לקרוא עוד »
יופי. צורב לPIC נשמע כמו השקעה חד פעמית משתלמת, אז נראלי שאתחיל עם הPIC.
עכשיו רק שאלה, וזו דווקא קשורה לארדואינו והיא בקשר להקצאות זיכרון.
הatmega מסוגל לעשות הקצאות זיכרון, וזה אפילו לא כל כך מסובך לבצע, אבל מה קורה ברגע שאני משחרר את הזיכרון ששאלתי? האם הארדואינו יודע לאחות את הram, או שמא הוא פשוט משאיר חור ריק בגודל כמות הביטים שהקצאתי בתחילה?
מחכה לראות את פוסט הblink שלך על ה8051. בטוח שלא תתקשה למצוא אחד כזה במכשיר אלקטרוני ישן. הדברים האלה נמצאים בכל חור 🙂
דווקא לא ראיתי הרבה כאלה במכשירים (בטח לא כאלה שאפשר להוציא בקלות ולתכנת), אבל יש לי כמה Evaluation Boards עתיקים ומעניינים…
התשובה בקצרה: אל תבצע הקצאות זיכרון דינמיות במיקרו-בקרים. לפרטים, ראה https://www.idogendel.com/whitebyte/archives/2550
ובעניין PIC: צורב PICKIT 3 סיני מזויף עולה בסביבות שליש ממקורי ועובד בסדר. אם עוד לא קראת, הנה דברים שעשיתי עם PIC: https://www.idogendel.com/whitebyte/archives/category/microcontrollers/pic
לא רק שקראתי, אלא אפילו הגבתי על חלק P-:
לגביי צורב.. מה לגבי ה K150? שניהם נכנסים תחת הקטגוריה של "צורב פיק" אז הייתי רוצה לדעת מה ההבדל ביניהם.
אני יודע שהצורב הזה קיים, לא הרבה יותר… נדמה לי שהוא תומך במספר מוגבל של דגמי PIC, מן הסתם ישנים יותר, ואני בספק אם סביבת הפיתוח הרשמית תומכת בו.
לדעתי האישית הצפייה מכל אדם להפוך למייקר שמייצר בעצמו דברים היא קצת מופרזת. הבעיה העיקרית שבגללה רוב האנשים הם יותר צרכני תוכן מאשר יצרני תוכן היא לדעתי כיוון שכדי ליצור צריך ללמוד (כמו שציינת) את הנושא לעומק ובאמת להבין מה אתה עושה. הצרה היא שלימוד ברמה כזו פשוט לוקח המון זמן. לאדם שלא מתפרנס מזה קשה מאוד להקדיש כזו כמות של זמן לתחביב. דוגמא דומה מתחום אחר- תחקיר עיתונאי, כיום כל המידע פתוח בפני כל אדם. פרוטוקולי הכנסת, סטטיסטיקות ארציות ונתונים כלכליים מפורסמים כך שכל אדם יכול לגשת אליהם. למרות זאת הרוב המוחלט של האנשים שעורכים תחקירים ומבררים נושאים מסוג… לקרוא עוד »
שני דברים: ראשית, כמות החומר שצריך ללמוד כדי "ליצור לבד" היא לא כזו עצומה – לא צריך להיות מהנדס או הנדסאי כדי להבין את העקרונות הבסיסיים של תכנות ואלקטרוניקה מעשיים, או כדי לדעת לחפש ולעבוד עם datasheet (גם אם לא מבינים כל מילה בו). שנית, למה אותם מעטים שהזכרת עושים בכל זאת דברים קשים שלוקחים הרבה זמן? כי זה מעניין אותם וחשוב להם. הפואנטה שלי היא שה"שוק" סביב הארדואינו, במקום ליצור עניין כזה כפי שהוא יכול היה לעשות, בעצם דוחק אותו הצידה. והערה בקשר למחשבים – בהחלט, היחס בין המבינים במחשבים לבעלי מחשבים נותר קטן, אבל אני מוכן להתערב איתך… לקרוא עוד »
התועלת היא פשוט ההנאה מהעשייה….ואני חושב שהיום 90% משוק הפיתוח מושתת על ספריות ומודלים מוכנים בוא נודה באמת זה המצב כיום וזה לא כזה רע לטעמי. התעמקות הזאת בדברים שאתה מדבר עליה היא כבר לא צורך בסיסי. תכנס לחברות הגדולות ותראה איך המודל החדש תמיד מתחיל מבסיס שהוא המודל הקודם 🙂
"כבר לא צורך בסיסי"? נסה לבנות חברה עם מהנדסי חומרה שלא יודעים מה ההבדל בין מתח לזרם… 😛
טוב, אז ככה. אני לא חושב שהארדואינו בכלל אמור להיות מבוא למערכות embedded, אלא יותר מבוא לאלקטרוניקה דיגיטאלית ולמיקרו בקרים. זה בסך הכל לוח פיתוח – מפתחים עליו פרוייקטים שאפשר להעביר ל-PCB אחר כך – הארדואינו צריך להיות שייך רק לשלב התכנון. אני חושב שמייקר שבאמת רוצה להתפתח יאלץ להתעניין על הדרך גם במעגלים אנלוגיים וברכיבי מוליכים למחצה בסיסיים למיניהם (דיודות, טרזיסטורים, טריאקים וכיו"ב), אחרת אין לו ממש לאן להתפתח. למזלנו זה מאוד קל היום, ויש אינסוף מידע על זה ברשת. רק ב-instructable יש מלא מדריכים על כל מעגל בסיסי שרק תרצה. עם זאת, לא כולם רוצים "להתפתח כמייקרים" –… לקרוא עוד »
מיקרו-בקרים בהגדרה זה מערכות embedded… 🙂
אכן יש המון חומר ברשת ובכלל שאפשר ללמוד ממנו ולהתפתח איתו, ועדיין התחושה שלי היא שהמון מייקרים מעדיפים לא להיכנס לזה אלא להמשיך "לשחק בלגו". כמו שכתבתי לניר קודם, זה לא פסול כשלעצמו – פשוט חבל שזה הכיוון אליו הדברים הולכים, במקום מה שיכול היה להיות.
מיקרו בקרים זה רק חלק קטן, גם אם מרכזי, במערכות embedded. לעבוד רק איתו (או בעיקר איתו) זה לא משהו שהייתי קורא לו "מבוא ל-embedded". אולי מבוא למבוא ל-embedded 🙂
בקשר ללגו… נו מה לעשות, גם חבל שבני אדם כל הזמן הורגים אחד את השני במקום להסתדר ביחד. חבל על מה שיכל להיות…
אבל אנשים זה אנשים. אין מה לצפות שכולם, ואפילו רובם, יתעמקו בנושא באמת ובתמים. תמיד יהיה וישאר הגרעין הקשה של האנשים שבאמת חוקרים ובאמת יוצרים תוכן עבור כל השאר.
העניין הוא שזו לא שאלה פילוסופית כללית ("אנשים זה אנשים"), אלא משהו אמתי שהתפספס לנו מול העיניים. פעם היית יכול לשאול "למה אנשים לא לומדים אלקטרוניקה ומיקרו-בקרים בבית", והתשובה היתה "כי יש רף גבוה מאד של כלים וידע רק בשביל להתחיל". אוקיי, ואז הגיע הארדואינו שהוריד את הרף הזה מאד – ובכל זאת לא התקדמנו.
זה כנראה מעיד בעיקר על זה שהתיאוריה הזו, לפיה הגורם העיקרי שמונע מחובבים להתעסק באלקטרוניקה הוא הרף הגבוה של הכלים והידע הדרושים, היא תיאוריה שגויה. או לחילופין, שאי אפשר באמת להוריד את סף הידע והלמידה הדרושים בכדי לשלוט בנושאים הללו לעומק. או לחילופין שהארדואינו לא באמת הוריד את הידע הזה אל העם, אלא פשוט יצר שכבת ביניים נוחה שלא דורשת הרבה השקעה, אבל גם לא מביאה אותך להעמקה והבנה אמיתית של התחום. תבחר מה שתבחר, אני לא חושב שזה ממש מפתיע שזה המצב. בשביל אנשים חסרי רקע שרוצים להעמיק, הארדואינו היווה מקפצה מבורכת להעמקה בתחום, אבל תמיד תהיה סמוך ובטוח… לקרוא עוד »
האופציה השלישית שהזכרת היא בדיוק מה שאני טוען בפוסט הזה – אבל האשם הוא לא לוח הארדואינו הבסיסי, אלא הביזנס שהתפתח סביבו, של מוצרים לאנשים שלא יודעים ולא רוצים באמת לדעת. רף כניסה גבוה הוא תמיד גורם שחוסם למידה (ראה למשל את מה שקרה בתחום התכנות כשהופיעו המחשבים האישיים), ואם הארדואינו היה נשאר ברמה של אונו ומגה, למשל, הוא היה מוריד את הרף אבל ה-comfort zone היה כל כך קטן, שמייקרים היו חייבים לצאת ממנו ולהתחיל ללמוד כדי לעשות משהו מעניין. לא כולם היו עושים את זה, נכון, אבל בטח יותר מאשר עכשיו. במצב הנוכחי יש כוחות שוק עם אינטרס… לקרוא עוד »
אז כל ההבדל הוא שאתה טוען שאלמלא הקיטים המוכנים כמות משמעותית של אנשים היתה מעמיקה לתוך תחום האלקטרוניקה, ואילו אני טוען שזה יהיה מיעוט זניח והרוב יוותרו מראש.
אני מניח שאין לנו שום דרך לבדוק את זה ישירות, אבל בטח אפשר למצוא אנלוגיות מתחומים אחרים, עם התאמה כזו או אחרת למקרה שלנו.
יש לך רעיון למשהו דומה?
שאלה טובה (אגב, גם אלקטרוניקה וגם תכנות). אני לא יודע עד כמה זו אנלוגיה טובה, אבל הדבר ראשון שקפץ לי לראש הוא הדפסה בתלת ממד: כמה בעלי מדפסות למדו לעבוד עם תוכנות עיצוב בתלת-ממד כדי לבנות דגמים, וכמה מסתפקים בדגמים מוכנים שאפשר להוריד מהרשת? אין לי מספרים כדי לענות גם על זה…
טוב אז ככה אני מסכים שארדואינו לא כניסה לעולם ה embedded אלא יותר כניסה לעולם הפרוטוטייפ לייצר מוצר עובד לא מעבר לזה. זה עדיין לא מוריד מהערך של הפרויקטים שאפשר ליצור יש עדיין רעיונות מאוד יפים שאנשים עושים אפילו ברמת הלגו כמו נקסט. אני חושב שצריך להפריד בכל זאת לא כל פרויקט צריך ומצריך חלקים קוסטום למדל כמו הרבה פעמים שאנחנו מדברים על פרויקט שהוא אובר קילל אבל עדיין צריך לזכור שבנאדם בלי כל ידע מעמיק בחשמל צליח ליציר פרויקט עובד לסיכום אני חושב שיש גישות שונות ליצירת פרויקט ואין גישה נכונה, אם זה משרת את המטרה שלך אז זה… לקרוא עוד »
השאלה היא לא אם אפשר לעשות פרויקטים יפים, אלא האם צורת העבודה הזו מקדמת את היכולות של המייקר, או שהוא ממשיך להיות תלוי במודולים קנויים ובספריות של אחרים. אני לא פוסל את זה כתחביב בפני עצמו – בדיוק כמו לגו או אוסף ברביות, גם לדברים כאלה יש מקום בעולם. אני רק מנסה להבין אם ואיזה תועלת יש בתחביב כזה מבחינת התעמקות והבנה טכנולוגית.