הדור החדש של ארדואינו Uno (שנקרא R4 ושהצגתי אותו כאן) נותן לנו גישה למיקרו-בקר 32-ביט חזק ומשוכלל. הנה כל מה שצריך לדעת כדי לשלב את היכולות של השבב הזה ואת הנוחות של ארדואינו עם הגמישות של PCB משלנו.

בפוסט הקודם שכתבתי על ה-Uno R4 הזכרתי שה-Bootloader שלו זמין ברשת, וזה מאפשר לנו, בתיאוריה, לתכנן לוחות משלנו שיזוהו במחשב ויתנהגו כמו לוחות ארדואינו. הרעיון הזה עבד יופי עם מיקרו-בקר ATmega328P של הדור הקודם: יכולנו להכין מעגל עם המידות ועם הרכיבים שמתאימים לנו, ועדיין לתכנת אותו באמצעות סביבת הפיתוח המוכרת – ובמיוחד עם הספריות הקיימות! – של ארדואינו. יש בערך מיליון מדריכים ברשת שמסבירים איך לצרוב Bootloader ל-328P ואילו רכיבים היקפיים צריך שיהיו במעגל, אבל למיטב ידיעתי עוד לא קיים מדריך כזה עבור המיקרו-בקר R7FA4M1AB3CFM שב-R4. אז הנה.
רק תזכורת קטנה: לקוד של ה-Bootloader, וכמובן גם של ספריות ארדואינו למיניהן, יש תנאי שימוש. אם תשתמשו בקוד הזה רק בפרויקטים ביתיים, לאף אחד לא יהיה אכפת ואף אחד גם לא יידע. לעומת זאת, כבסיס למוצר מסחרי… זהירות.
החומרה הדרושה
בגדול, מבחינת חומרה, חוץ מהמיקרו-בקר עצמו כמובן, אנחנו צריכים שלושה דברים: צורב מתאים (על זה נדבר מייד), קונקטור שדרכו נוכל לצרוב את ה-Bootloader, וקונקטור USB שאיתו נוכל להתחבר אחר כך למחשב ולהעלות קוד רגיל.
את החיווט והרכיבים ההיקפיים עבור הקונקטורים והמיקרו-בקר מצאתי בסכמה הרשמית של ה-R4 Minima, ופחות או יותר העתקתי אותם כמות שהם למעגל שלי. שם השתמשו בקונקטור USB C, וגם אני כי כבר היה לי, אבל זיכרו שזה לא חייב להיות C ובטח שלא USB 3, כי המיקרו-בקר עצמו תומך רק ב-2.0. ביחרו מה שנוח לכם. הוספתי גם לד על פין 37 (שם "פנימי" P111), כמו הלד המובנה של ארדואינו, כדי שקוד "בלינק" יעבוד ישר מהקופסה.
מעניין לציין שבשרטוט הסכמטי, גביש השעון החיצוני למיקרו-בקר אינו מאוכלס, והוא אכן לא קיים על הלוח הרשמי. לעומת זאת, בחיקוי סיני שהשגתי דווקא יש גביש. האם הגביש הזה באמת בשימוש, או סתם נמצא שם? בינתיים אין לי תשובה. את המעגל שלי, בכל אופן, הכנתי על סמך הארדואינו הרשמי ולא החיקויים.
ועכשיו נדבר על הצורב. אולי יש פתרונות "מייקריים" זולים, שעוד לא ראיתי; אני בחרתי לעבוד עם תוכנת צריבה רשמית, והיא מגבילה אותנו לשתי אפשרויות: צורב של Renesas (דגם E2 היקר מאוד, או E2 Lite שעולה קרוב ל-300 ש"ח לפני משלוח), או J-Link כלשהו. בעליאקספרס מוכרים חיקויי J-Link, אין לי מושג אם הם יעבדו או לא. לי יש J-Link EDU שעדיין מתאים למשימה, אף על פי שהוא מוגדר כמיושן (Obsolete).
ל-J-Link EDU יש קונקטור סטנדרטי עם 20 פינים. את המיפוי שלהם אפשר לראות בדף הזה, למטה (תחת הכותרת ARM Standard JTAG Connector). מתוכם יש חמישה שאנחנו צריכים בשביל לצרוב את ה-Bootloader: מתח (חיובי ואדמה, פינים 1 ו-4 בהתאמה), איפוס (פין 3), ושני קווי התקשורת SWDIO ו-SWDCLK (פינים 7 ו-9). כך זה נראה בשטח – שימו לב שכל החוטים מתחברים לאותה שורה, פרט לחוט השחור (אדמה) שנמצא מאחורי הלבן, בשורה שרחוקה מהמצלמה:
אחרי שנחבר את הקצה השני של כל חוט לקונקטור שעל הלוח, ונספק ללוח חשמל, נעבור למחשב.
התוכנה
הנה שוב הקישור ל-Bootloader לארדואינו R4 Minima . נוריד אותו, ונפתח את תוכנת הצריבה Renesas Flash Programmer. במבט ראשון נדמה שהיא לא תקינה – כל מה שבלשונית Operation בכלל לא מגיב:
אבל זה רק כי צריך ליצור "פרויקט חדש" דרך התפריט File. זה אומר בעצם לבחור איזושהי תיקיה, ולאחר מכן הממשק ייפתח ונוכל לבחור בו את הצורב הפיזי, את ממשק הצריבה (SWD במקרה שלנו), וגם את קובץ ה-HEX שהורדנו. חוץ מזה לא צריך הגדרות נוספות, אצלי לפחות זה עבד על הפעם הראשונה:
הלוח שלי היה מחובר כל אותו זמן ל-USB, וכמובן שעד אותו שלב הוא לא זוהה על ידי המחשב. מיד לאחר הצריבה, סביבת הפיתוח של ארדאינו זיהתה את החיבור החדש. משום מה הוא עדיין לא נקרא COM – השם הזה הופיע רק מאוחר יותר, אחרי ניתוק וחיבור-מחדש של הלוח.
אחרי בחירת הלוח "Arduino UNO R4 Minima" בסביבת הפיתוח, קוד ה"בלינק" הסטנדרטי עלה בלי שום בעיה ללוח, כאילו היה מדובר בלוח ארדואינו קנוי למהדרין.
אגב, בית הסוללה שרואים בתמונה מיועד לפיצ'ר מסוים של המיקרו-בקר, שארצה לבדוק בהמשך. בכל אופן, עכשיו כשהעסק עובד, אפשר להתקדם לדברים המעניינים באמת – לשלב לוחות בהתאמה אישית עם הנוחות, הספריות והיכולות של ארדואינו, וגם לנצל פיצ'רים נוספים של המיקרו-בקר עצמו בעזרת הפינים שאינם נגישים לנו בלוח ה-Uno. על כך – בעתיד…