לוח הארדואינו הכחול (בדרך כלל) איתו אנו עובדים הוא, ברובו המכריע, רק ציוד היקפי עבור הרכיב החשוב באמת: המיקרו-בקר, הלא הוא הג'וק מרובה הרגליים ששוכן בלב הלוח ומנהל את הכל. את הג'וק הזה אפשר להחליף אם הוא נשרף, ואפשר גם לשלוף אותו מהארדואינו האהוב והמוכר ולשתול אותו במעגל אחר לגמרי, בו יעבוד כמיקרו-בקר ייעודי.
היום הגיעו אליי שני הג'וקים שמימין בתמונה – מסוג ATMega328-PU בתצורת DIP (זו עם הרגליים הארוכות שאפשר לדחוף לתוך מטריצה). אלו הם מיקרו-בקרים מאותה משפחה שמשמשת בארדואינו Uno ו-Duemilanove, ובעיקרון אפשר להחליף בעזרתם את הג'וק שהגיע עם הארדואינו. אבל כדי לגרום לזה לעבוד, צריך היה לבצע עוד שלב בדרך: צריבה של Bootloader. מה זה Bootloader ואיך צורבים אותו?
הדבר הראשון שצריך להבין הוא שכאשר אנחנו מעלים תוכנית מסביבת הפיתוח אל הארדואינו (דרך הלחצן upload), אנחנו לא באמת "מתכנתים את המיקרו-בקר" במלוא מובן הביטוי. המיקרו-בקר שבלוח הארדואינו מגיע עם תוכנה קטנה מובנית שנקראת Bootloader, אשר מנהלת את הטעינה של קוד חדש, ואת ההרצה של הקוד הזה אחרי שעלה. התוכנה הזו בעצמה תופסת קצת מקום בזיכרון של המיקרו-בקר, והיא אחראית גם לעיכוב קצר מרגע האתחול של הארדואינו ועד לתחילת הריצה. ביישומים בעולם האמיתי אין סיבה לצרוב Bootloader על המיקרו-בקר, אבל כל עוד אנחנו עובדים במסגרת הארדואינו, התוכנה הזאת חיונית.
יש מקומות שמוכרים מיקרו-בקרים תואמי ארדואינו עם Bootloader צרוב מראש. במקרה כזה, כל מה שצריך לעשות כדי להחליף את המיקרו-בקר בארדואינו הוא, פיזית, להחליף אותו. עם זאת, בהרבה מקומות נמכרים מיקרו-בקרים ללא Bootloader, שהם בדרך כלל גם זולים יותר. אנחנו צריכים דרך לצרוב עליהם את ה-Bootloader המתאים בעצמנו.
בעולם המקצועי, צריבות למיקרו-בקרים נעשות באמצעות התקן שנקרא ISP – כלומר In-System Programmer – אשר עשוי לעלות בין כמה עשרות לכמה מאות דולרים, בהתאם לחברה שמייצרת אותו וליכולות שלו. עם זאת, סביבת הפיתוח של הארדואינו מציעה לנו אופציה זולה הרבה יותר, שאותה אציג כאן.
שלב ראשון: החלפה פיזית של הג'וקים
כאן אין הרבה מה לומר, רק: היזהרו מאד. כוח מוגזם, זווית לא נכונה – ורגלי הג'וק עלולות להישבר ולהפוך אותו לחסר תועלת. הקפידו גם על הכיוון הנכון של הג'וק. יש לו למעלה, בצד אחד, שקע זעיר בצורת חצי עיגול. והשקע הזה צריך להיות מכוון החוצה, הרחק מחיבור ה-USB של הלוח. יש גם שרטוט סכמטי על הלוח עצמו שמראה היכן השקע אמור להיות. אני מדבר, כמובן, על לוחות עם ג'וקים בתצורת DIP. אם יש לכם ארדואינו Leonardo, מגה, ננו או דגם אחר עם שבב SMD (שטוח ודק), זה כבר סיפור אחר לגמרי.
סתם בשביל הקטע, לפני שהמשכתי לשלבים הבאים, חיברתי את לוח הארדואינו עם הג'וק החדש ל-USB וניסיתי להעלות אליו קוד. זו הודעת השגיאה שקיבלתי:
שלב שני: הכנת הארדואינו הצורב
צריבת ה-Bootloader באמצעות סביבת הפיתוח של הארדואינו מחייבת [תוספת מאוחרת: זה נוח אבל לא חיוני להשתמש ב]שני לוחות ארדואינו: אחד שישמש כמנהל הצריבה (ה"צורב"), ואחד שיחזיק את ג'וק היעד (ה"נצרב"). סביבת הפיתוח מגיעה עם קוד מתאים, אותו צריך להעלות ללוח הצורב. הקוד נמצא תחת File->Examples->ArduinoISP. העליתם אותו? מצוין, נעבור לחיבורים. [תוספת מאוחרת: למי שאין לוח ארדואינו נוסף עבור הג'וק הנצרב, אפשר להחליף אותו במטריצה ומספר רכיבים, כמוסבר כאן]
שלב שלישי: חיבור הצורב לנצרב
הכינו חוטים וחברו את יציאות 5V של שני הלוחות זו לזו, את חיבורי GND (מספיק אחד בכל לוח, כמובן), ואת פינים 11-13. חיבורים אלה יספקו את החשמל ואת ערוץ התקשורת בין הלוחות.
כעת, חברו את פין 10 של הצורב לכניסת RESET של הנצרב (היא נמצאת קרוב ל-5V), וחברו קבל עם ערך של עשרה מיקרו-פאראד (10uF) בין ה-GND ל-RESET של הצורב. אם אתם משתמשים בקבל אלקטרוליטי, כזה שנראה כמו גליל שחור, שימו לב שרגל אחת מיועדת למינוס (GND) והשניה לפלוס. יש הסברים ושרטוט ברור של כל זה כאן.
שלב רביעי: שקט, צורבים!
סביבת הפיתוח יודעת לעבוד עם כמה סוגים של ISP. כאן אנחנו משתמשים בארדואינו כ-ISP, ולכן נבחר בתפריט Tools->Programmer->Arduino as ISP. עוד דבר שחשוב להגדיר הוא סוג לוח הארדואינו אליו אנחנו צורבים. בוחרים בתפריט Tools->Board ומוודאים שמסומן שם הלוח הנכון.
לסיום, בוחרים בתפריט Tools->Burn Bootloader ומחכים בסבלנות. אם הכל תקין, לוחות הארדואינו יהבהבו בנוריות שלהם, ותוך עשר-עשרים שניות תקבלו הודעת אישור שתוכנת ה-Bootloader נצרבה בהצלחה. תתחדשו! אפשר לנתק את כל החוטים ולהשתמש בלוח הצרוב כאילו היה ארדואינו שנקנה זה-עתה!
יחי ההבדל הקטן
אם יש לכם עין לפרטים, אולי הבחנתם שבתמונה העליונה מצוינים, למעשה, שני דגמים שונים של מיקרו-מעבדים: ATMega328P-PU ו-ATMega328-PU. שימו לב ל-P המודגשת. השבבים בלי ה-P הזו הם קצת יותר בזבזניים בחשמל, וקצת יותר זולים. אבל זה לא כל ההבדל. אם תנסו לצרוב ג'וק מהדגם בלי ה-P בתהליך שהראיתי למעלה, תקבלו את השגיאה המוזרה הבאה:
למזלי, ידעתי מראש שאני קונה את הרכיבים בלי ה-P וידעתי מראש על הבעיה הזו ואיך פותרים אותה. הפתרון מצריך שינוי של החתימה (Signature) באחד מקובצי ההגדרות של סביבת הפיתוח, ואתחול מחדש של סביבת הפיתוח בין שלב הכנת הצורב לשלב הצריבה. המידע המדויק מופיע כאן.
מיקרו-בקרים כאלה עם או בלי Bootloader אפשר להשיג באיביי, למשל, במחיר 4-6 דולר ליחידה. כאמור, הם מהווים גיבוי משתלם למקרה של ג'וק שנשרף, ואם לא אכפת לכם שתוכנת ה-Bootloader תשב על הג'וק, הם גם פתרון מהיר וקל לתכנות מיקרו-בקרים ליישומים ספציפיים בנפרד מלוח הארדואינו.
רכשתי H BRIDGE וחיברתי אליו 37V כש ע"פ המפרט שלו הוא תומך 42-46V והוא עלה באש ולקח איתו את הארדואינו
מוזר ומטריד. אם אתה או מישהו פה מבינים מספיק באלקטרוניקה, אשמח להסבר מעמיק יותר איך דבר כזה יכול לקרות.
היי עידן
נישרף לי שבב הארדואינו עם הP והזמנתי חדש עם BOOT LOADER הוא הגיע בלי P.
אני לא מצליח לצרוב לו תוכניות והוא נותן לי אזהרת סינכרון, האם גם הלך הFTDI?
עידו, לא עידן 🙂
קודם כל, איך נשרף המקורי? שגם האחרים פה יידעו ממה להיזהר…
דבר שני, שבב עם Bootloader אמור לעבוד בלי בעיה גם אם הוא מהדגם בלי ה-P, יכול להיות שאיזו רגל התעקמה בתוך התושבת, או שבאמת עוד רכיב נשרף, או משהו אחר – קשה לדעת. נסה לבודד את הבעיה – אם אתה יכול להשיג לוח ארדואינו אחר ולהכניס את השבב לתוכו, או לתכנת בעזרת USB-to-UART במקום דרך לוח הארדואינו וכו'. וכמובן, חפש את מלל השגיאה המדויק בגוגל, בטוח שמישהו כבר נתקל בזה ואולי יש איפשהו פתרון.
אני לא בטוח שהבנתי את מה שאני צריך,
לפי מה ששמעתי (יותר נכון קראתי), ברגע שפיתחת פרוייקט זה יהיה בזבוז להשאיר את הפרויקט על הארדואינו אז צורבים את התוכנית על בקר ATM328. ואותו שמים על מטריצה קטנה בהרבה או על לוח הלחמה שאני לא זוכר איך קוראים לו באנגלית.
מה שהסברת פה זה איך להחליף בקר. אולי אתה יכול לעזור לי להבין איך "להעביר את הפרוייקט" לצ'יפ? קישור חיצוני גם יעבוד 🙂 פה גם יש הרבה מושגים שאני לא מכיר ולא יודע אם אני צריך להכיר בשביל המטרה שלי (גביש,מתנד UART,ads,MULL וכו')
תודה רבה על הפוסט ! מצוין 🙂
הפוסט הזה למעשה לא קשור להכנה של מיקרו-בקר לעבודה "עצמאית". קרא את הפוסט הבא, הוא יעזור לך יותר: https://www.idogendel.com/whitebyte/archives/664
(שים לב גם לקישורים שמתחבאים שם)
עידו, שלום. בזכותך נחשפתי לראשונה למופע הקסמים הזה, הארדואינו. קראתי את הכתבה בY, עברו כמה ימים, נתקלתי שוב בארדואינו במקום אחר ו… עכשיו הוא כבר כאן, מדליק לדים ומוסר מסרים סריאליים שגורמים לי הנאה צרופה. יש קושי מסויים בפרידה מפרוייקטים לטובת פרוייקטים חדשים, שאני מקווה שאוכל לפתור בעזרת הפתרון שהצגת כאן. לצערי, רכשתי את גירסת ה-SMD, כלומר הצ'יפ ב-surface mount על פני הלוח. יש אפשרות לצרוב באמצעותו בוטלואדר לארדואינו אחר שאינו SMD? בנוסף, במידה וארכוש את הצ'יפים המגיעים עם בוטלואדר מוכן מראש, לא אזדקק כלל ל-2 מכשירים? אלא רק למכשיר שאינו SMD וכן לגביש שיתפקד בתור השעון? (ו-2 קבלים 22pF)… לקרוא עוד »
ברוך הבא לעולם הארדואינו – אולי נראה בקרוב גם פרוייקטים שלך כאן? 😉
הארדואינו הצורב (זה שמשמש כ-ISP) יכול להיות מכל סוג שהוא, גם SMD.
את הג'וק שעליו צורבים נוח להתקין על ארדואינו רגיל, אבל זה לא הכרחי – לא בשביל ה-Bootloader ולא בשביל התוכניות הרגילות שמעלים עליו. כמו שאמרת, צריך רק מטריצה, קצת חוטים, גביש וקבלים – לפעמים אפילו פחות. קרא בעיון בקישור שנתתי לעדי סופר, למטה בתגובות.
בהחלט אשתמש בקישור, כשיגיעו החלקים… 🙂
חבל שאי-אפשר לקפוץ לחנות ולקנות, במקום להמתין מס' שבועות.
ייתכן שאפשר להסתדר בלי ארדואינו צורב?
http://waihung.net/making-your-own-arduino-part-2-arduino-on-breadboard/
הרכיב הזה מאפשר, לכאורה, לחבר את ה"ארדואינו-על-מטריצה" ישירות למחשב.
(מצריך צ'יפ עם Bootloader)
מקווה שהבנתי נכון.
תראה, בסופו של דבר לוח ארדואינו הוא לא יותר מכמה רכיבי עזר שמסודרים סביב המיקרו-בקר, ואם יש לך את המיקרו-בקר אתה יכול להרכיב סביבו את הרכיבים בעצמך.
בכל מקרה אין טעם להקדיש לוח לצריבת Bootloader בלבד – בשביל כמה שאני ואתה צורבים, פשוט מעלים זמנית את הקוד של ArduinoISP ללוח כזה או אחר, צורבים ומחזירים כמו שהיה…
[עריכה: רגע, אם הבנתי נכון את השאלה – לא, אי אפשר לצרוב Bootloader ישירות מהמחשב לארדואינו בשיטות כאלה. אתה חייב ארדואינו/מיקרו-בקר מתווך]
אם אתה רוצה באמת להכין ארדואינו קטן וחסכוני במקום ( במחיר של וויתור על המון פינים ) ) תנסה את המיקרובקר ATtiny . למידע מפורט http://bit.ly/zTqgEB .
במקרה שלי, דניאל, אני זקוק לפינים בשביל סרבו, ארבעה סוויצ'ים וארבעה לדים, אבל תודה – זה בהחלט מעניין.
ראיתי את המדריך הזה בעבר והקונספט מסקרן מאד. עם זאת, צריך לזכור שה-ATTiny מוגבל מאד לא רק במספר הפינים שלו ובגודל הזיכרון אלא גם בפקודות שהוא מכיר – לפחות אם מתכנתים אותו בדרך הזו. בעצם, מה שהם עושים שם זה העברה של תוכנית ארדואינו, שיועדה במקור ל-ATMega, אל ה-ATTiny וזה אומר הרבה פשרות.
ברור שהוא לא מתאים לכל פרוייקט,
נראה לי שסה"כ ההוראות המוגבלות הן לא בעיה אמיתית – אם אין פקודת MUL "טבעית" במעבד אז הקומפיילר ייצר לך אחת בתוכנה, פשוט יקח לזה יותר זמן לרוץ. בסופו של דבר אתה כותב אותו קוד C. יתכן וישמגבלות של פיצ'רים שלמים שחסרים במעבד: אם אין ADC אז אי אפשר לעשות ANALOG READ.
המגבלות הפיזיות – הן באמת מגבלות פיזיות
להיפך, אלה הפקודות high-level שעושות בעיות. למשל, attachInterrupt – לטייני יש פסיקות, אבל הפקודה הספציפית הזו לא נתמכת בשיטת התכנות-בעזרת-ארדואינו.
כוונתי אחרת:
יש ברשותך CHIP עם Bootloader צרוב. (Ebay) מחובר למטריצה, קבלים שעון וכו'.
האם אתה יכול לתכנת אותו מהמחשב בעזרת מתאם usb to uart?
על פניו, מהלינק שהצגתי בפוסט הקודם, זה נראה אפשרי. אלא אם כן לא הבנתי נכון.
נראה שהפתרון הנ"ל חוסך את הצורך בהוצאת הצ'יפ מהמכשיר לצורכי העלאת תוכנה מהמחשב ל"ארדואינו-על-מטריצה".
אשמח לתובנות שלכם בעניין ובכל מקרה הזמנתי אחד כדי לנסות, אם כי הוא יגיע במועד מאוחר יותר :).
כמו שהוספתי בעריכה מאוחרת לתגובה שלי למעלה, חיבור ישיר של UART למחשב מיועד לתקשורת "רגילה", לא לצריבה. המתאם USB/UART החיצוני הזה הוא רק תחליף לזה הקטן שקיים בלוחות ארדואינו רגילים, וכמו שאי אפשר לצרוב Bootloader ישירות מהמחשב ללוח ארדואינו , כך גם פה.
המון תודה על הפוסט הנהדר ועל כל העזרה.
איזה פוסט מעולה. תודה. למעשה אם קניתי ג'וק עם Bootloader אוכל להניח אותו במקום המקורי שבuno שלי, לצרוב עליו את הקוד הרלוונטי לי, וללבנות סביבו לוח קטן ופונקציונאלי ולחסוך מקום וכסף? אני מבין שאני צריך להוסיף עוד גביש קריסטלי (איזה?מאיפה?) ולדאוג להתחבר לפינים הנכונים שלו…?
למעשה, ה-ATMega328 יכול לעבוד גם בלי גביש, על סמך מתנד פנימי – אבל אז מהירות השעון תהיה בערך חצי מהרגיל וחבל.
עוד לא ניסיתי דבר כזה בעצמי. הסברים ושרטוטים יש בדף הזה: http://arduino.cc/en/Tutorial/ArduinoToBreadboard ,
גבישים של 16MHz אפשר למצוא בכל מקום – אני הזמנתי בינתיים עשרה בדולר וחצי אצל הסינים כאן: http://www2.buyincoins.com/details/new-10pcs-16-000mhz-16-mhz-crystal-oscillator-hc-49s-low-profile-product-11859.html
לגביש יש רק שני פינים, ואם אינני טועה אין חשיבות לכיוון שלהם.
ואם אתה עובד עם גביש, תצטרך גם שני קבלים קטנים (אלה שנראים כמו עדשים כתומות עם רגליים) בערך של 22 פיקו-פאראד (22pF), שגם אותם יש בחנויות אלקטרוניקה, איביי וכו'.
תודה!