יום שבת, 4 במאי 2013

BeagleBone Guide



לאחר שגילנו את ה Arduino הגיע הזמן להתקדם ללוחות יותר מתקדמים, משפחת הלוחות הבאה נקראת BeagleBoard, מדובר על Open Hardware בדומה ל Arduino אבל הפעם המעבד יותר רציני מהמעבד ה 8 ביט שעליו עבדנו עד עכשיו אלא על מעבד 32 ביט מבוסס Arm שכבר יכול להריץ מערכות הפעלה מתקדמות כמו Linux  ו Android וגם חומרה חזקה יותר שבעצם הופכות את הלוח ל"מחשב" לכל דבר.

משפחת BeagleBoard:

BeagleBoard

הלוח הקלאסי והותיק בסדרה עם מעבד AM37X במהירות 720 MHZ בסביבות 125 דולר ליחידה.



BegaleBoard-xM

הלוח המורחב של המשפחה עם מעבד OMAP3530 במהירות 1000 MHZ בסביבות 149 דולר ליחידה.



BeagleBone

לוח שדומה בהתנהגות שלו ל Arduino ועליו נתמקד במאמר זה, הוא מגיע עם מגוון כניסות ותקשורות כמו I2C, Uart ו Spi, מעבד AM335X במהירות 720 MHZ ובסביבות 89 דולר ליחידה.




נעים להכיר BeagleBone

הלוח הראשון שעליו אתמקד הוא  BeagleBone ששונה במבנה שלו משאר הלוחות במשפחה ומאפשר לחבר אליו עשרות חיבורים שונים ושימוש בתקשורות הנפוצות ביותר בתעשייה, רק כדי להבין את ההבדלים ניתן לראות כמה המעבד  ATmega328P 8 Bit של Arduino נראה פשוט מול המעבד Cortex A8 32 bit:



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



ע"ג הלוח יש 2 סטים של כניסות , בכל סט 46 כניסות שמאפשרות לנו לתקשר עם רכיבים חיצוניים.



צעדים ראשונים

הלוח מגיע עם כרטיס MicroSD שמותקן עליו גרסת Angstrom מוכנה לשימוש, כל מה שצריך לחבר למקור כוח של 5 V ואפשר לרוץ, אם נרצה לבנות את ה MicroSD מחדש ולהתקין את העדכונים האחרונים ניתן לעקוב אחרי המדריך שמופיע באתר היצרן, בשביל להתחיל לדבר עם הלוח יש לחבר ולמצוא אותו ברשת בעזרת Port Scanner או ברשימת הכתובות של ה DHCP.

ניתן להשתמש בהמון סביבות פיתוח ב BeagleBone אבל כחלק מגרסת ה Angstrom שמגיעה עם הלוח קיימת סביבה שנקראת Cloud 9 שבעזרת ניתן לכתוב קוד ב Javascript ולהריץ אותו על הלוח, הסביבה עצמה נגישה דרך ה Browser ומאפשרת לפתח מכל מקום ישירות על הלוח.



קוד

ניצור קובץ חדש עם סיומת js ,לפני שנתחיל לכתוב את הקוד מומלץ להעתיק (בעזרת התחברות ב SSH) את הקובץ bone.js ל workspace שלכם, הקובץ נמצא בתיקייה  usr/lib/node-modules/bonescript/bone.js , הוא מכיל מיפוי עבור כל החיבורים בלוח,ובעזרת bonescript.js נבצע את הפעולות על גבי החיבורים שנבחרו כמובן שניכנס ללולאה אינסופית בעזרת הפונקציה setInterval בדומה ל loop ב Arduino.



//init scope
var b = require('bonescript');
var bone = require('/var/lib/cloud9/bone') ;

//set extensions pins
var ledPin = bone.bone.P9_23;
var ledPin2 = bone.bone.P9_25;

b.pinMode(ledPin, b.OUTPUT);
b.pinMode(ledPin2, b.OUTPUT);

var state = b.LOW;
b.digitalWrite(ledPin, state);
b.digitalWrite(ledPin2, state);

//enter loop
setInterval(toggle, 1000);

function toggle() {
    if(state == b.LOW)
    {
     state = b.HIGH;
     b.digitalWrite( ledPin, b.LOW);
     b.digitalWrite( ledPin2,  b.HIGH);
    }
    else
    {
      state = b.LOW;
      b.digitalWrite(ledPin, b.HIGH);
      b.digitalWrite(ledPin2, b.LOW);
    }
}

חשוב לזכור שאנחנו לא צורבים את התוכנית על הלוח בדומה ל Arduino אלא שבמקרה של Beaglebone אנחנו עובדים עם קבצים ששומרים על כרטיס הזיכרון ובעזרת ה Linux מפעילים אותם, במקרה שנרצה להריץ הקוד שלנו מחוץ לסביבת הפיתוח נרשום את הפקודה הבאה ב Terminal:

#:node yourscript.js

מבנה סופי:


סיכום:

BeagleBoard זו משפחה אחת מבין רבות ששינו את כללי המשחק בעולם Embedded ומאפשרות לפתח מערכות מורכבות ועדיין לשמור על הכיס, אין ספק שבדומה ל Arduino גם פה מדובר על תחילת של ידידות מופלאה ובהמשך אני אכתוב מאמרים נוספים על BeagleBone ומשפחות אחרות.

אחלה שדרוג...

2 comments:

  1. יפה. עכשיו השלב הבא יהיה לכתוב KERNEL DRIVER פשוט להפעלת ה-GPIO...

    השבמחק
  2. האם יש סיבה לעשות את זה ב Kernel?

    השבמחק