בפוסט הקודם ראינו שארדואינו R4 החדש אכן מעניק לנו גישה לחומרה "חזקה" הרבה יותר מזו של R3. כעת נבדוק האם הוא גם תומך בספריות קוד קיימות ונפוצות, מה שיכול להפוך אותו סופית לסטנדרט הבא בעולם הארדואינו.
בגדול, ארדואינו בלי ספריות הליבה (דברים כמו pinMode או Serial) הוא סתם מיקרו-בקר; אבל גם איתן, חובבים יכולים לעשות בו רק שימוש מוגבל יחסית, וחלק גדול מאוד מסיפור ההצלחה של ארדואינו הוא דווקא הספריות הנוספות, החיצוניות והייעודיות. חישבו למשל על הלדים הפופולריים מסוג "Neopixel": כמה מהאנשים שעובדים איתם (ועושים פרויקטים יפים מאוד) היו מסוגלים ומוכנים לכתוב לבד את הקוד שמדבר עם הלדים?
לכן, כל לוח ארדואינו חדש שרוצה להיות פופולרי באמת חייב לתמוך בספריות האלה – וכמובן שהתמיכה הזו יכולה להגיע אך ורק מכיוון הספריות עצמן: זאת אומרת, מישהו חייב לעדכן, לשכתב אותן או ליצור ספריות תואמות כדי שבעלי לוחות R4 יוכלו לעשות איתם את אותם הדברים שעשו עם R3.
מכאן נובעים שני דברים. ראשית, יש פה קצת ביצה-ותרנגולת, כי מי יטרח לעדכן ספריות בשביל לוח שעדיין לא פופולרי – אבל איך הלוח יהפוך לפופולרי אם הוא לא תומך בספריות? שנית, התמיכה והיקפה הם רק עניין של החלטה וזמן עבודה, ותיאורטית יכול להיות שמחר יכריזו שכל ספריות הארדואינו בעולם עודכנו ותומכות ב-R4 במאה אחוזים, והפוסט זה יהפוך מיותר לגמרי.
למזלנו, ואולי קצת בעקבות ניסיון העבר, ארדואינו לא סתם ממציאים חומרה חדשה ומשחררים אותה לטבע בתקווה שתסתדר בעצמה: יש גם יד מכוונת בכל מה שקשור לתוכנה, ויש דף ב-GitHub של ארדואינו שמוקדש לתאימות ספריות ל-R4. דף זה מכסה, כמובן, רק חלק קטן מכל הספריות שנכתבו אי-פעם לארדואינו, ואף על פי כן מוזכרות שם המון ספריות נפוצות ושימושיות. רובן, מסתבר, כבר יכולות לעבוד עם הלוח החדש (אל תשכחו לעדכן אותן אצלכם דרך סביבת הפיתוח או ידנית), אבל אם אתם מתחילים פרויקט שמבוסס על ארדואינו וספריות מוכנות, ומתלבטים אם כדאי להשתמש ב-R4, רצוי מאוד לבקר בדף הזה ולוודא.
עוד כמה פרטים קטנים
מספר מסקנות מהדף (או מהיעדרן בדף) לגבי ספריות שמייקרים רבים משתמשים בהן:
- אם אתם רגילים לעבוד עם הספריה Neopixel של Adafruit ורוצים להפעיל לדים Addressable מלוח R4, תצטרכו נכון להיום לעבור לספריה FastLED.
- ספריית התקשורת האלחוטית IRremote שקוראת/מחקה שלטים באינפרה-אדום עדיין לא עובדת במלואה עם R4, ראו כאן: https://github.com/Arduino-IRremote/Arduino-IRremote/blob/master/README.md#supported-boards
- בניגוד ל-R3, ל-R4 יש שני אובייקטי Serial מובנים: הראשון "רגיל" לתקשורת עם המחשב, והשני, Serial1, לתקשורת דרך פיני GPIO. זה אומר שפחות צריך להיעזר בספריה SoftwareSerial, אבל אם תבחרו בה בכל זאת עבור ה-R4, שימו לב שהקליטה (RX) עובדת רק בחלק מהפינים, ויש עוד כמה מגבלות – ראו למשל כאן: https://forum.arduino.cc/t/software-serial-communication-issues-on-uno-r4-with-garbled-output/1270968
- כמו בארדואינו לאונרדו/מיקרו, ה-R4 יודע לחקות מקלדת ועכבר.
שני קישורים שימושיים: מדריך רשמי למשתמש ב-R4, והסכמה של R4.
למתקדמים: R4 בלי לוח
מי שרוצה לפתח אמבדד ברצינות לא יכול להסתמך על לוחות קנויים, וחייב לעבור ללוחות בתכנון עצמי. אבל זה לא אומר שחייבים לוותר לחלוטין על כל קשר לארדואינו: בתנאים מסוימים אפשר לשים על הלוחות שלנו מיקרו-בקרים זהים לאלה שבלוחות הקנויים, ולהעלות אליהם כך או אחרת קוד שנכתב בסביבת הפיתוח של ארדואינו. האם זה יעבוד גם עם ה-R7FA4M1AB3CFM שעל ה-R4?
בלוח Arduino Nano Every, שיצא לי לעבוד איתו לא מעט, המיקרו-בקר הראשי פסיבי לגמרי מבחינת צריבת קוד: אין עליו Bootloader, והצריבה מנוהלת על ידי שבב נפרד. לעומת זאת, רוב לוחות הארדואינו (כולל R3 וגם R4) מסתמכים על Bootloader ששוכן על המיקרו-בקר הראשי. כלומר, אם אני רוצה לצרוב על מיקרו-בקרים כאלה קוד ארדואינו רגיל לגמרי, אני צריך לדאוג ל-Bootloader, וגם לחיבור כלשהו למחשב שיאפשר להעלות דרכו את הקוד מסביבת הפיתוח. במקרה של R4 זה קל במיוחד, כי המיקרו-בקר יודע לדבר ישירות עם USB, בלי צורך בשבב מתווך. בסכמה של R4 מופיע כל המידע הדרוש לתכנון של חיבור USB וגם של קונקטור SWD לצריבה חד-פעמית של ה-Bootloader. הנה קובץ ה-Bootloader בפורמט HEX, והנה קוד המקור שלו (רק על פי מה שמצאתי ברשת, עוד לא השתמשתי בהם).
מבחינת עלויות, נכון לתחילת ינואר 25', המחיר של מיקרו-בקר בודד מהסוג שב-R4 הוא 17.82 ש"ח לפני מע"מ ב-Digikey, לעומת ATmega328P (במארז SMD) שעולה 6.51. אפרופו, סתם שתדעו, המיקרו-בקר ATmega2560 כמו שבארדואינו מגה עולה כיום 59.20 ש"ח לפני מע"מ.
מסקנות
כבר עכשיו (תחילת ינואר 2025, עדכון 1.3.2 ללוחות R4 בסביבת הפיתוח) הארדואינו R4 מינימה הוא יורש ראוי למדי ל-R3. יש לו מספר יתרונות ברורים, יש כמה חסרונות אבל הם תלויים בשימוש ולא גדולים מספיק כדי לפסול אותו באופן גורף, וכמו שהזכרתי בפוסט הקודם, הוא אפילו זול יותר. בשביל שימושים "מייקריים" רגילים, לא הייתי מהסס להתקדם אליו. מה שבכל זאת חייבים לזכור זה ש-1) התאימות לאחור לא מלאה – לא כל קוד או טיפ נידח שתמצאו באינטרנט לארדואינו Uno יתאים, ו-2) אם אתם רוצים להשתמש בו כפלטפורמה ללמידה של מיקרו-בקרים ברמת "הברזלים", הוא הרבה יותר מורכב וקשה מאשר ה-Uno R3, ונכון להיום כמעט אין מדריכים ומידע למתחילים.