mbed היא סביבת פיתוח אונליין שמיועדת לפיתוח של לוחות המבוססים על ARM cortex-M .
חברת ARM היא חברה שמתמחה בעיצוב מעבדים שנמצאים בסמארטפונים, טאבלטים ומערכות משובצות.
ARM איננה מייצרת מעבדים אלא מתרכזת רק בעיצוב הארכיטקטורה שלהם ובמכירה של רשיון לשימוש בארכיטקטורה שחברות שונות קונות ומייצרות.
הארכיטקטורה של ARM ידועה במעבדי 32 ביט עם צריכת אנרגיה נמוכה לכן משתמשים בה בסמארטפונים טאבלטים קונסולות משחק מצלמות GPS וטלויזיות חכמות.
סדרת cortex-M כוללת את M0 לצריכת אנרגיה נמוכה, M3 ו- M4 הם מיקרו-פרוססורים חזקים יותר ונותנים שילוב טוב בין ביצועים לצריכת אנרגיה, ו- M7 הוא החזק ביותר בסדרה. ארדואינו זירו לדוגמה מבוסס על cortex-M0+ עם צריכת אנרגיה סופר נמוכה.
יש יותר ממאה לוחות שנתמכים על ידי סביבת הפיתוח mbed ופה יש רשימה של הלוחות.
NUCLEO-F303RE של חברת STMicroelectronics הוא הלוח שנעבוד איתו והוא נקרא גם NUCLEO 64 ומשתמש בבקר cortex-M4.
הלוח מחולק לשניים: החלק של הבקר עם כל הכניסות והיציאות, והחלק של המתכנת שנקרא ST-LINK. אפשר להפריד ביניהם אם רוצים להקטין את הגודל של הלוח אבל אז צריך לספק לבקר מתח חיצוני + להעביר כמה חוטים בין שני החלקים. יש גם כפתור משתמש כחול, וכפתור אתחול שחור וגם 3 נורות לד מובנות.
ללוח יש שני פרופילים של הרחבות שאחד מהם הוא מבנה הפינים של ארדואינו כך שכל מגיני ההרחבה של ארדואינו יכולים לשבת עליו, והשני הוא פרופיל הרחבה של MORPHO שהם סדרה של מרחיבים של STMicroelectronics.
כשמתכנתים את הלוח אפשר לקרוא לפין לפי השם של ארדואינו או לפי השם של MORPHO מה שמגדיל את מספר הפינים ל- 51.
mbed
סביבת הפיתוח הזו נוצרה על ידי ARM והיא נוחה מאוד ופשוטה להפעלה. כשמחברים את הלוח עם הכבל למחשב הוא מופיע בתור התקן USB ואם פותחים אותו ניתן לראות שם שני קבצים. פותחים את mbed.htm ואז נרשמים באתר שלהם ונכנסים לקומפיילר.
מצד שמאל מופיעות כל התיקיות של התוכנות שלנו ואם פותחים אותן רואים שם קובץ main שהוא הקוד של התוכנה וגם ספריות שמצורפות לפרויקט. ספריית mbed נמצאית בכל פרויקט ובה יש את הבסיס לכל הפונקציות העיקריות. כדאי בתור התחלה לפתוח את הספריה הזו ולקרוא את הדוגמאות של הפונקציות הבסיסיות.
אז אפשר להתחיל מלהבהב נורה:
include "mbed.h" DigitalOut myled(D13); // D13 = PA_5 = LED1 int main(){ while(1){ myled = 1; wait(0.2); myled = 0; wait(0.2); } }
שפת התכנות היא הפשטה של ++C וקלה מאוד להבנה. אחרי שכותבים את הקוד שומרים אותו ולוחצים על compile, ואז הקובץ יורד אל המחשב האישי שלנו.
גוררים אותו אל האייקון של הלוח שמופיע במחשב שלנו במקרה הזה – NODE303RE כמו שגוררים כל קובץ אחר להתקן USB והקוד עולה ללוח.
ואוו זה היה פשוט… דרך אגב אפשר לקרוא לפין הזה גם PA_5 וגם LED1.
הנורה הירוקה הקטנה LD2 מחוברת גם לפין הזה ונקראת בקוד LED1.
הכפתור הכחול הוא כפתור המשתמש והוא נקרא בקוד USER_BUTTON. ככה אפשר לתפעל אותו:
#include "mbed.h" DigitalIn mybutton(USER_BUTTON);// also called PC_13 DigitalOut myled(LED1); int main() { while(1) { if (mybutton == 0) { // Button is pressed myled = !myled; // Toggle the LED state wait(0.2); // 200 ms } } }
באותו אופן שמפעילים נורה וכפתור אפשר להוציא PWM להשתמש ב- ADC, DAC, SPI, I2C טיימרים סיריאל ועוד… הכל לפי הפונקציות המובנות בסביבת הפיתוח.
אחד הדברים הנחמדים ביותר זו האפשרות לייבא תוכנות וספריות דרך סביבת הפיתוח.
לוחצים על import ואז אפשר לחפש בחלון החיפוש כל דבר שבא לכם כמו serial, lcd, joystick, print ועוד…. אפשר ככה לייבא אל סביבת הפיתוח תוכנות או ספריות אבל צריך לזכור שאם מייבאים תוכנה חשוב לסמן גם את update library שיעדכן את כל הספריות הקשורות אליה.
מגיני הרחבה של ארדואינו
מגיני הרחבה של ארדואינו הם נפוצים מאוד ואפשר לחבר אותם אל NUCLEO 64, לדוגמה נחבר מגן הרחבה של מסך LCD. אחרי שמתקינים את המגן אפשר לחפש ספרייה מתאימה במאגר הספריות.
אחרי שמייבאים את הספרייה נכנסים לקובץ main.cpp כדי לשפצר קצת את הקוד והסיפור אמור לעבוד:
ככה אפשר להתקין כל מגן הרחבה או רכיב שמתקינים על ארדואינו ולהשתמש בכח המחשוב והזכרון של ARM. לדוגמה מסכי מגע או מצלמות שמיועדים לעבוד עם ארדואינו דורשים יותר מדי זכרון בשביל הבקר של ארדואינו ולהעלות תמונה למסך מגע לוקח יותר מדי זמן.
צריך לזכור שהבקר שנמצא על NUCLEO 64 הוא 32 ביט ויש לו פי 16 יותר זכרון פלאש (16KB vs 512KB) פי 40 יותר RAM , והשעון שלו רץ פי 5 יותר מהר. הוא אפילו יותר חזק בהרבה מארדואינו מגה !!!
כשמתחילים לפתח מוצרים לאינטרנט של הדברים , רובוטיקה, העברת וידאו או עיבוד תמונה בקרי 8 ביט לא מספיק חזקים. נראה לי שהעולם עובר ל- 32 ביט ומוצרים עם צריכת אנרגיה נמוכה והשולטת בממלכה הזו היא חברת ARM.