פרוטוקול 1-Wire, ספרים, רכיבים ועוד דברים שמעסיקים אותי בימי הקיץ החמים האלה. הפוסט מכסה בקיצור כמה נושאים, אבל לא לדאוג – ברגע שיהיה לי מספיק מידע עליהם, הם יופיעו בפורמט הרגיל והמפורט!
מאז תצוגת ה"שלום!" המתגלגלת לא עשיתי עם הלוח הזה שום דבר מיוחד, אך אני בהחלט מתכנן לעשות. שיטת העבודה המומלצת עם פייתון לא מצאה חן בעיני (הקטע הזה שהודעות שגיאה רצות על "מסך" הלדים הזעיר במקום להופיע כבר בסביבת הפיתוח), אז התחלתי לבדוק אפשרויות נוספות. הסתבר שסביבת הפיתוח המקוונת והרצינית mbed תומכת ב-Micro:bit, ויש ספריות C++ מותאמות שעושות חיים קלים למתחילים, בדיוק כמו בפייתון. הזמנתי מתאם שיאפשר גישה קלה לכל הפינים של הלוח, ובקרוב אבדוק את נוחות העבודה ומהירות הריצה של קוד C++ לעומת פייתון כדי להחליט סופית.
Hacker's Delight
הספר הזה, שתליתי בו תקוות גדולות, היה די מאכזב. היו שם כמה דברים מעניינים, ואני בטוח שיום אחד עוד אחזור אליו (למעשה זה כבר קרה, במובן מסוים – ראו בהמשך), אבל הוא לא באמת מיועד לאנשים כמוני. הרבה חומר שם רלוונטי בעיקר למי שמתכנן מעגלי חומרה או כותב קומפיילרים, וחלק מהדברים מותאמים לארכיטקטורות ספציפיות שאינן קשורות כלל למיקרו-בקרים. יש שם גם הרבה מתמטיקה (יחסית לספר התכנות הממוצע) – יותר מדי לטעמי ולרמת ההבנה שלי… בקיצור, לא פריט חובה בספריה של מתכנת המיקרו-בקרים הטיפוסי.
1-Wire
לצורך פרויקט כלשהו, התחלתי ללמוד את פרוטוקול התקשורת המעניין הזה, שמוכר לעולם המייקרים החובבים בעיקר בזכות הספריה OneWire של ארדואינו וחיישן הטמפרטורה ds1820. הפרוטוקול מאפשר לשדר מידע באופן דו-סטרי (אם כי לא בו-זמנית), ולפעמים אפילו לספק חשמל, בעזרת חוט אחד ויחיד (פרט לאדמה המשותפת). אני לא יכול להשתמש בספריית הארדואינו כי, קודם כל, ארדואינו והמיקרו-בקר שלו לא מתאימים לפרויקט הספציפי, ושנית, אני צריך לדמות דווקא את צד ה-Slave של הפרוטוקול, בעוד שספריית הארדואינו ורוב החומר ברשת מדברים על צד ה-Master. ה-Slave אמנם קצת יותר פשוט, אבל אני צריך להכיר גם את ה-Master כדי לדעת למה לצפות – וכדי שאבין מה קורה ברגע שאתקדם ואתחיל לדבג את התשדורות על הקו.
גם בפרוטוקול הזה וגם בנושא ה-Bootloader שהתחלתי ללמוד לאחרונה נעשה שימוש בחישובי CRC לבדיקת נתונים. לא קשה למצוא קוד מוכן ברשת לחישובים כאלה, אבל מה שקראתי עליהם ב-Hacker's Delight זמן קצר לפני כן עזר לעשות סדר בראש – מה שמוכיח שאין צירופי מקרים בעולם… 🙂
פילוסופיה בדקה
קרה לי כבר הרבה פעמים שלמדתי או שמעתי משהו במקרה, וזמן קצר מאד לאחר מכן הסתבר שהוא רלוונטי ואפילו חיוני לפרויקט חדש. איך זה יכול להיות? האם פועל כאן איזשהו כוח עליון? קארמה של מייקרים?
ההסבר ההגיוני הוא כזה: אני משתדל ללמוד כל הזמן דברים חדשים, ואני נתקל כל הזמן בפרויקטים שונים ומשונים שלכל אחד מהם יש, בדרך כלל, כמה אלמנטים. סביר להניח שפה ושם תופיע באקראי איזו חפיפה. אבל אם אין חפיפה כזו, באופן טבעי אני לא מודע לכך. אני לא חושב "איזה קטע, בפרויקט הזה משתמשים ברכיב X שלא קראתי עליו בכלל בשבוע האחרון." רק המקרים יוצאי הדופן נכנסים לתודעה ו"נרשמים".
יש כאן גם מוסר השכל. אם אתם לוקחים את המייקינג ברצינות, כדאי תמיד לחפש ולקרוא חומר מעבר למה שדרוש באופן מיידי לפרויקט הנוכחי שלכם: שאלות ותשובות של אחרים בפורומים, מסמכים טכניים, בלוגים… 😉 יום יבוא והידע הזה יהיה שימושי.
ומה עוד
בתחום ה-RF, בעקבות ניסיון גרוע מאד, התייאשתי סופית ממודולי ה-RF Link Kit הזולים מסין (אלה הירוקים שעולים פחות מדולר לצמד משדר-מקלט). עדיין אפשר לשחק איתם, כמובן, אבל בשום פנים ואופן לא לסמוך עליהם למשהו חשוב. מודולים יקרים-יותר של חברת NiceRF (שנקראים STX882 ו-SRX882) הוכיחו את עצמם בינתיים בשטח, והם עולים בהתאם. אפשרות נוספת היא מודולי HC-11, שמבוססים על הרכיב המשוכלל CC1101 ומעניקים לנו המפתחים ממשק UART נוח (גם לנתונים וגם להגדרות). מניסויים ראשונים נראה שהם עובדים יפה. איך שלא יהיה, אם תרצו להזמין כמות גדולה של מודולים, או לייבא אותם באופן רשמי, תצטרכו להתמודד עם משרד התקשורת.
בתחום המיקרו-בקרים הקטנטנים, גיליתי את הדגם PIC10F322, שעולה בערך אותו הדבר כמו ה-PIC10F220 המינימליסטי שיש לי. ל-322 יש יכולות מודרניות יותר, והוא אמנם לא מסוגל עדיין להתחרות עם מיקרו-בקרים רגילים, אבל אם המשימה פשוטה יחסית והגודל הפיזי של המעגל הוא שיקול ראשון במעלה, הוא בהחלט מהווה כיוון מעניין.
על מה אתם עובדים הקיץ?
אני מתכנן להכנס חזק לתחום הרובוטיקה זה נושא רחב מאוד ותחום הראייה המלאכותית מעניין אותי במיוחד.
התנסית קצת ברובוטיקה?
לא ממש, ונושאים מתקדמים כמו ראייה ממוחשבת הם בסדר גודל שונה לגמרי מהמיקרו-בקרים שאני עובד איתם כעת. התחום מעניין בהחלט, אבל אני לא רואה את עצמי נכנס אליו ברצינות בעתיד הקרוב…
לצערי, עדיין לא פתחתי בלוג כרגע.
קשה לנהל בלוג בזמן לימודי הנדסת מחשבים… אבל זה יגיע מתי שהוא. אני אפנה אליך בפייסבוק.
הכנתי כרטיס ג'ויסטיק עם שילוב של BT על בסיס ארדואינו להרכבה עצמית עבור חוגי אלקטרוניקה ותכנות.
זה עדיין לא הסתיים אבל זה יוצא ממש מגניב כרגע!
מה ה-BT משדר? כמו ג'ויסטיק "קנוי", או שאתה עושה איזו המרה של המידע בדרך?
מה שאתה מגדיר לו. הרעיון הוא כרטיס עם כפתורים וסטיק אנלוגי שאיתו הילדים יכולים לתכנת שליטה בפרויקטים אחרים שלהם.
יתכנתו על ארדואינו ויקחו את הצ'יפ לג'ויסטיק.
אז מבחינת החומרה זה מודול BT סריאלי רגיל?
כן. זה לא מורכב במיוחד… אבל זה אמור להיות לא מורכב.
אין בעיה 🙂 פשוט חשבתי שאולי מצאת דרך לחקות ג'ויסטיק אלחוטי אמתי.
עם אונו? אני חושב שאני יכול. גרמתי לו לחשוב שהוא ג'ויסטיק אמיתי (בלי האלחוטי). אבל עשיתי את זה ע"י שינוי הדרייברים על הצ'יפ תקשורת של הארדואינו. אני צריך לבדוק איך אני עושה את באלחוטי….
אשמח לשמוע פרטים על הטריק עם הארדואינו – אבל כאן אין מקום, אז אולי במייל, או שכתבת על זה איפשהו?