דברים חדשים: ATtiny85 נוסח DigiSpark

לאחרונה הגיעו אליי שני מודולים שהזמנתי בשלהי השנה שעברה. אלו הם חיקויים/זיופים זולים של ה-DigiSpark, שפרץ לעולם המייקינג בסערה דרך Kickstarter לפני יותר משנתיים, ונמכר גם כיום במסגרות אחרות. הנה ההתרשמות הראשונית שלי מהם…

לוח DigiSpark מזויף וזול מסין
לוח DigiSpark מזויף וזול מסין ("Rev3")

מה זה

מבחינה פיזית מדובר בלוח קטן מאד, כ-18×18 מ"מ + "בליטה" לחיבור USB. הרכיבים העיקריים על הלוח הם מייצב מתח (מ-7-35 וולט, לפחות לפי הפרסום, ל-5V), מיקרו-בקר מדגם ATtiny85, ושני לדים מובנים – אינדיקטור לאספקת מתח גלובלית + לד בשליטת אחד הפינים של המיקרו-בקר.

שורה אחת של שישה חורים "חושפת" את ששת הפינים השימושיים של הטייני (כלומר, לא כולל Vcc ו-GND), וטור של שלושה חורים בצלע סמוכה מעניק גישה למתח הכניסה, ל-5V ול-GND. הסידור הזה מקשה מאד כמובן על עבודה עם מטריצות או Stripboard, אם כי רוב השימושים המעשיים יהיו כנראה ממילא בהלחמה ישירה, כך שזה לא חיסרון גדול.

האטרקציה כאן היא הקוד – מעין Bootloader צרוב מראש מבוסס V-USB, וספריות לסביבת הפיתוח של ארדואינו (בהתקנת קבצים נוספים או כהתקנה נפרדת לגמרי). השילוב של התוכנות הללו מאפשר לתכנת את הלוח הזעיר כמעט כמו ארדואינו, וגם להשתמש בו כמקלדת או עכבר וירטואליים למחשב (בדומה למה שהארדואינו לאונרדו יכול לעשות). הקוד הצרוב מראש תופס כ-2KB מתוך 8KB של המיקרו-בקר. מי שרוצה יכול, כמובן, לוותר על הפונקציונליות הזו ולדרוס אותו עם קוד אחר לגמרי.

בניגוד לארדואינו, ה-DigiSpark ותואמיו אינם מאפשרים תקשורת סריאלית רגילה עם המחשב, אבל מי שממש מתעקש יוכל למצוא תוכנות וספריות למימוש תקשורת דו-סטרית מוגבלת כזו או אחרת.

למה זה טוב

מהאמור לעיל אפשר כבר להבין שמגוון השימושים המעשיים של הלוחות האלה מצומצם למדי, בלשון המעטה. בגלל המגבלה המטורפת על מספר הפינים הזמינים – ועל כך בהרחבה בהמשך – הם לא מהווים תחליף ראוי לארדואינו, ומצד שני הם מגושמים מכדי להתחרות בעבודה עם ATtiny85 "נטו". לטעמי, הסיבה היחידה להתעסק איתם (וזו גם הסיבה שבגללה קניתי אותם) היא אם צריך לממש בזריזות המרה של אמצעי קלט פיזי כלשהו לפקודות מקלדת או עכבר.

הלוח המזויף מזווית אחרת

הלוח המזויף מזווית אחרת

מינימליסטים בעל-כורחם

לטייני יש כאמור 6 פינים שאפשר לנצל, ואחד מהם הוא פין ה-Reset שבדרך כלל עדיף לא לגעת בו. ניתן להפוך אותו לפין I/O באמצעות צריבה של פיוז מסוים, אך הביצועים שלו עדיין יהיו נחותים מאלה של הפינים האחרים, וכדי לאתחל את השבב או להעלות קוד חדש צריך לבצע הליך שונה של צריבה ב-12V, שהלוח לא בנוי בכלל לתמוך בו.

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

…וגם הם, כך גיליתי בדרך הקשה, לא זמינים במלוא מובן המילה. במערכת שבניתי ניסיתי להשתמש בשניים מהם בתור פיני קלט, עם נגד pull-up פנימי. אחד מהם עבד, השני הראה לי אפס לוגי גם כשלא היה שום דבר מחובר אליו. אחרי שעברתי על המעגל שלי בזכוכית מגדלת (מילולית!) ושללתי כל אפשרות לבעיה שם, בדקתי את הלוח "על ריק" והסתבר שאכן, גם כאשר הפין פנוי לגמרי, המתח בו הוא 1.75V במקום 5V, ומתח זה נמוך יותר מהסף המינימלי לקריאה של אחד לוגי. בירור נוסף העלה שהסיבה לבעיה היא הלד המובנה שמחובר לפין הזה. הפתרונות המעשיים הם להתקין נגד pull-up חיצוני או להלחים החוצה את הלד הזעיר, ושניהם משאירים תחושה של החמצה.

הצד התחתון של הלוח
הצד התחתון של הלוח

וזה עוד לא הכל

החומרה, אם לא הייתי ברור מספיק עד עכשיו, היא לא להיט. מה לגבי התוכנה? ובכן, סביבת הפיתוח המותאמת עובדת והדוגמאות שבדקתי רצות. אגב, כדי להעלות קוד חדש צריך לנתק את הלוח פיזית ולחבר אותו מחדש כאשר מופיעה ההודעה המתאימה בסביבת הפיתוח.

לרוע המזל, הספריות למקלדת וירטואלית ולעכבר וירטואלי אינן מסוגלות לעבוד זו לצד זו (כבר הזכרתי שאני מתעב ספריות?). בארדואינו לאונרדו למשל זה עובד יופי, אבל כאן הקימפול נכשל בגלל הגדרה כפולה של פונקציה מסוימת. גם ניסיון למזג את שתי הספריות נידון לכישלון מכיוון שגם בלי קשר לכפילות, כל ספריה מתנהגת לכל אורך הדרך כאילו הלוח מיועד לפעול אך ורק איתה.

אני מנסה למצוא פתרון תכנותי להתנגשות הזו, אך מכיוון שאינני מומחה לענייני USB אני לא תולה בכך תקוות גדולות. עדכונים, אם יהיו, בהמשך…

להרשמה
הודע לי על
5 Comments
מהכי חדשה
מהכי ישנה לפי הצבעות
Inline Feedbacks
הראה את כל התגובות

הפוסט הזה לא יכל לבוא בעיתוי יותר טוב..

לא בא לזרות מלח על הפצעים או משהו, אבל..
בימים האחרונים עבדתי משהו כמו 8-9 שעות ביום עם רכיב fpga שיש לו משהו בסביבות 300 I/O.. (שאגב בהחלט לא נחשב בין הגדולים שבהם).

הגעתי לבית לנוח קצת,
אני פותח את האתר האהוב עלי (אהמ..אהמ..)..
מה אני רואה דבר ראשון? את הפוסט הנפלא הזה..

צחוק הגורל..

לדעתי דווקא הDigiSpark מתאים בדיוק להרכבה על מטריצה- החיבורים שבצד (של V5 ושל GND) מיועדים להיכנס בשורות הצמודות לצידי המטריצה