האקרים של חומרה
כל אחד יכול לבנות לבד חיישני תנועה או גלאי נפח וגם לשפר גאדג'טים קיימים. בואו להכיר את הארודאינו. שיעור מבוא
ייתכן ששמתם לב, לאחרונה, לכמות ההולכת-וגדלה של אייטמים תקשורתיים בנושא גאדג'טים אלקטרוניים תוצרת בית: החלברוגטקה פיזית עם חיישני תנועה למשחק באנגרי ברדז וכלה בשלט טלוויזיה שמחליף ערוצים באופן אקראי כאשר נופחים עליו. כן, נופחים, זו לא טעות. בקיצור, מה שהיה פעם נחלתם של מומחים לאלקטרוניקה בלבד הפך למשחק הרכבה שמתאים כמעט לכל אדם, וחלק גדול מהמהפך הזה אפשר לייחס למוצר אחד: ארדואינו.
- נוגה וצדק יוצאים לבלות יד ביד
-
הקרב בזקנה והמאבק בפרקינסון
- כיצד הביסה ניו יורק את הפשע
- כיצד הביסה ניו יורק את הפשע
הארדואינו (Arduino) נולד בשנת 2005 באיטליה. המטרה היתה ליצור פלטפורמה בסיסית, פשוטה ונגישה מאד לסטודנטים, ליצירת התקנים אלקטרוניים אינטראקטיביים. תכל'ס, מדובר במחשב פצפון שאפשר לתכנת ולחבר אליו בקלות יחסית מגוון עצום של חיישנים, נוריות, מנועים וכל דבר חשמלי/אלקטרוני אחר שמתחשק. חובבים רבים נעזרים בארדואינו כדי לבצע "האקינג של חומרה" - התממשקות למכשירים וגאדג'טים חשמליים שונים כדי להפיק מהם מידע וביצועים באופנים שלא הוגדרו על ידי היצרן. בכתבה על טלפון החוגה, למשל, הצגתי התקן מבוסס-ארדואינו שיצרתי, אשר קרא את המספר המחויג ישירות מהחוגה המכנית והציג אותו באמצעות שורה של נוריות. בסרטון הבא מופיע התקן נוסף, עליו עבדתי בערך רבע שעה, שמקשר בין חיישן מרחק לבין מנגנון ממונע שנלקח מכונן אופטי ישן.
כמובן, מיקרו-בקרים שעושים דברים כאלה היו הרבה לפני הארדואינו, וגם כיום יש לא מעט חלופות. היתרון של הארדואינו הוא בפשטות התפעול שלו, וגם בפופולריות העצומה לה זכה, שהביאה לכמות מידע מסחררת ברשת וגם למחירים סבירים מאד של החומרה (אם לא מתעקשים על איכות מקסימלית). הידע הדרוש, מבחינת אלקטרוניקה ותכנות, ליצירת פרויקטים משלכם הוא בסיסי להפליא, ולא חסרים פורומים ומקורות אחרים שיעזרו לכם בעת הצורך. אז במקום לקשקש על ההיסטוריה והמפרטים של הארדואינו, בואו ניגש ישר לפרויקט לדוגמה שגם אתם יכולים להכין בבית: נורית שמהבהבת מהר יותר ככל שחשוך יותר בסביבה.
החומרים הדרושים
הציוד המינימלי שתצטרכו עבור הפרויקט מופיע בתמונה למטה: לוח ארדואינו או תואם-ארדואינו כלשהו, חיישן אור פשוט (פוטורזיסטור), נגד בעל ערך גבוה, וכבל USB לחיבור הארדואינו למחשב (מגיע, בדרך כלל, ביחד עם הארדואינו). הרשימה אינה כוללת נורית, מפני שבלוחות ארדואינו מסוג זה יש נורית LED מובנית קטנה שתספיק לנו לצורך להדגמת הקונספט. כמובן, תזדקקו גם למחשב רגיל שעליו הותקנה סביבת הפיתוח המתאימה. את כל הדברים הללו קל מאד להשיג, אבל על זה נדבר אחר-כך.
עכשיו נסתכל מקרוב יותר על הארדואינו. בחלקו העליון יש שורה של חיבורים (שמכונים "פינים" אף על פי שהם בבירור ממין נקבה), ממוספרים מ-0 עד 13. כל אחד מאלה יכול, בעיקרון, לשמש ערוץ קלט או פלט דיגיטלי. חיבור מס' 13 בנוי כך, שבכל פעם שהוא "פולט" אות חשמלי, הנורית המובנית שמתחתיו מאירה.
בחלק הימני התחתון של הארדואינו יש שתי שורות נפרדות: הימנית, ממוספרת מ-A0 עד A5, היא של חיבורי קלט אנלוגיים, והשמאלית כוללת בעיקר חיבורי מתח חשמלי. בעזרת חיישן האור נגשר בין החיבור שמסומן 5V (השלישי משמאל בשורה השמאלית) לבין A0. חיבור 5V מספק מתח חשמלי קבוע של – ניחשתם נכון – חמישה וולט. החיישן יאפשר לחלק מהמתח הזה להגיע ל-A0, ביחס ישר לכמות האור שנופלת עליו.
הבעיה היא שקריאת ערכים חשמליים, כמו זו שמתבצעת דרך A0, צריכה קו-בסיס כלשהו שאליו אפשר יהיה להשוות את הקלט. למשל, אם ננסה לקרוא את A0 בלי לחבר אליו שום דבר, בכלל לא בטוח שנקבל 0 – כי הארדואינו לא יידע לפי מה לשפוט את מה שהוא מוצא שם. זה כמו שמישהו ישאל אתכם אם 2 זה הרבה או מעט. הרבה או מעט בהשוואה למה? לאלפית? לאלף? כדי להתגבר על הבעיה, ניקח את הנגד ונחבר בעזרתו בין A0 לבין ההארקה הכללית של הארדואינו – אחד משני החיבורים מימין ל-5V שמסומנים כ-GND. ההארקה תשמש לנו כקו-הבסיס למדידת המתח, והערך הגבוה של הנגד מבטיח שלא תהיה זליגה גדולה מדי של זרם, שתפריע למדידה.
בידקו פעמיים ושלוש שחיברתם כל דבר למקום הנכון. אפילו בלבול קטן עלול ליצור קצר חשמלי ולהשמיד את הארדואינו.
התוכנה
זהו, מבחינת חומרה אנחנו מסודרים. הגיע הזמן לכתוב את התוכנה. את סביבת הפיתוח הפשוטה של ארדואינו אפשר להוריד בחינם (חוקית, כמובן) מכאן.
שפת התכנות שסביבת פיתוח זו מספקת היא וריאציה של שפת C, ומי שיודע לתכנת ב-C יזדקק בערך לדקה אחת של הסתגלות. ההבדל העיקרי הוא שבמקום הפונקציה main ההכרחית, כאן יש שתי פונקציות הכרחיות: setup ו-loop. הפונקציה setup רצה ראשונה, פעם אחת בלבד, ובתוכה אנחנו מאתחלים את כל מה שצריך. לדוגמה, במקרה שלנו, נקבע שחיבור מס' 13 ישמש לפלט. כך זה נראה בקוד:
כמו בשפת C, גם כאן יש חשיבות לאותיות רישיות ורגילות. לדוגמה, אם תכתבו Void או PinMode, סביבת הפיתוח לא תדע מה אתם רוצים מהחיים שלה.
הפונקציה loop היא זו שמכילה את קוד הפעולה. היא מתחילה לרוץ אחרי ש-setup הסתיימה, וכמו ששמה מרמז, היא פשוט רצה שוב ושוב ושוב עד שאספקת החשמל נקטעת או שמישהו טוען תוכנה אחרת. בתוכנה שלנו נשתמש בשלוש פקודות שונות: digitalWrite, שמאפשרת לנו לכתוב ערך לחיבור דיגיטלי, delay שעוצרת את המשך הריצה למשך מספר המילישניות הרצוי, ו-analogRead שקוראת ערך מתוך אחד החיבורים האנלוגיים. קריאה זו אינה באמת אנלוגית-רציפה, אלא מספקת ערך בין 0 ל- 1023. הנה הקוד:
שלוש הפקודות הראשונות בתוך הפונקציה loop עושות דבר פשוט: מדליקות את חיבור 13 (ואת הנורית שלו) למשך עשר אלפיות השניה. הפקודה הרביעית אחראית לזמן שעובר בין הדלקה להדלקה: ככל שהערך שנקרא מ-A0 גדול יותר (מה שאומר שהחיישן קולט יותר אור), כך פרק הזמן יהיה גדול יותר וההבהובים יהיו מרווחים יותר. בתיאוריה, פרק הזמן ינוע בין אפס בחושך מוחלט לבין טיפה יותר משניה באור חזק. נעביר בקליק אחד את התוכנה לתוך הארדואינו, וכעת הוא מוכן לעבודה. למעשה, הוא יתחיל לעבוד אוטומטית עם החשמל מחיבור ה-USB שלו, אך חיבור זה אינו חיוני, כפי שנראה בסרטון הבא:
את הפרויקט הזה אפשר לפתח לכיוונים רבים, הן בחומרה והן בתוכנה: רמקול שמצפצף בנוסף להבהוב, חיישן אולטרה-סגול במקום חיישן אור רגיל (כך אפשר יהיה לבדוק רמות קרינה ויעילות של משקפי שמש), מנורת לילה אוטומטית, אזעקה עם "גלאי נפח" ועוד ועוד.
איפה משיגים
הוראות התקנה מפורטות להתקנת סביבת הפיתוח של ארדואינו אפשר למצוא כאן, וכדאי להעיף מבט לפני שמתקינים, כי למרות הפשטות העקרונית של העסק, מדובר בחיבור של חומרה חדשה למחשב וזה לא תמיד הולך חלק.
אבל השאלה החשובה באמת היא איפה לכל הרוחות משיגים את כל הרכיבים האלה. התשובה, במילה אחת, ebay: תמורת פחות מעשרים דולרים ושבועיים-שלושה של המתנה אפשר להשיג את כל החלקים לפרויקט שלנו, כולל חמישים נגדים ועשרה פוטורזיסטורים לגיבוי. קיטים למתחילים, עם לוח ארדואינו ושלל רכיבים שימושיים, עולים בסביבות ארבעים דולר. מכאן, מבחינת מבחר ומחירים, השמיים הם הגבול.
כתבת מבוא שכזו אינה המקום להרחיב יותר מדי בעניינים טכניים. לשם כך, אתם מוזמנים לעקוב אחרי העדכונים בדף הפייסבוק או הגוגל+ שלי, או אחרי "הבייט הלבן" - הבלוג החדש בנושאי תכנות, ארדואינו ובכלל.