תקשורת אלחוטית לטווח בינוני-קצר בין יחידות ארדואינו היא "גביע קדוש" קטן עבור מתחילים רבים. יש כל כך הרבה שימושים ללוחות ארדואינו שמדברים בינם לבין עצמם בלי צורך בחוט – אך המימוש של זה בפועל מתגלה בדרך כלל כעסק לא פשוט, או יקר, או שניהם גם יחד. לוח הפיתוח Zigduino מבית Logos Electromechanical LLC הוא פתרון שנוטה לצד היקר של המשוואה, אך יכולות התקשורת שהוא מציע מגוונות ואיכותיות, וברמה הבסיסית הן גם כל כך פשוטות, שמספיקה התנסות קצרה כדי להתאהב בלוח הזה.
לפני הכל, חשוב להבהיר: זיגדואינו אינו ארדואינו ואפילו לא חיקוי שלו. זהו לוח פרטי של חברה פרטית, משהו שעשוי להתפתח ועשוי באותה מידה להיעלם מהשטח. הוא עובד במתח של 3.3V וגם מבוסס על מיקרו-בקר שלא תמצאו בשום ארדואינו רגיל (Atmega128RFA1 בעל 128K זכרון FLASH לתכנות ו-16K זכרון RAM). עם זאת, סידור חיבורי הפינים בו תואם לזה של לוחות ארדואינו, הוא מסוגל לקלוט מתחים של 5V כקלט בלי להיפגע (ואפילו הרבה יותר מזה, בזכות הגנה מובנית), ומה שהכי חשוב – עם קצת העברה וסידור ידניים של קבצים, אפשר לתכנת אותו כמעט בדיוק כמו את הארדואינו, עם אותה שפה ופקודות, בעזרת אותה סביבת פיתוח!
כדי להתחיל לעבוד עם זיגדואינו ולבצע בעזרתו תקשורת אלחוטית בסיסית, צריך להשלים מספר שלבים. קודם כל, להשיג שני לוחות. נכון לרגע הכתיבה, נראה שהאפשרות היחידה לרכוש זיגדואינו "מהמדף" היא דרך seedstudio.com. יחידה אחת עולה שם $65, וייתכן שצריך להלחים בה מעט רכיבים.
השלב הבא הוא להוסיף ולהחליף מספר ספריות בתיקיית הארדואינו במחשב. התיקיות להוספה הן אלה שאומרות לסביבת הפיתוח איך לפרש פקודות כלליות בהתאם למיקרו-בקר הספציפי. ניקח את הדוגמה הכי טריוויאלית: סביבת הפיתוח מתריעה כאשר תוכנה גדולה מכדי להיכנס לזיכרון של מיקרו-בקר. איך היא יודעת כמה מקום יש עליו? בעזרת ההגדרות שבקבצים כאלה. כל מי שעבד עם מיקרו-בקרים מסוג ATTiny למיניהם, עם לוח Teensy וכדומה דרך סביבת הפיתוח של ארדואינו כבר הוסיף למעשה תיקיות כאלה.
הספריות שצריך להחליף, לעומת זאת, הן אלה של המהדר (קומפיילר). כברירת מחדל, נכון לזמן הכתיבה, סביבת הפיתוח של ארדואינו מגיעה עם מהדר WinAVR – שהוא, למעשה, בעצמו מעטפת למהדר GCC – בגרסה ישנה יחסית שאינה מסוגלת לעבוד עם המיקרו-בקר של הזיגדואינו. בין קובצי ההורדה של הזיגדואינו יש גרסה שלמה חדשה יותר, ועד כמה שראיתי אין בעיית תאימות בינה לבין לוחות ארדואינו רגילים.
לסיום, עבור מי שמעוניין בפתרון התקשורת הפשוט ביותר, צריך להוסיף לסביבת הפיתוח את הספריה ZigduinoRadio ולכלול אותה בקוד. מכיוון שפוסט זה הוא רק הצגה של לוח ולא מדריך מפורט, לא אכנס לכל הפרטים של ההתעסקות עם התיקיות והספריות. רק אציין שהספריה ZigduinoRadio כוללת, בין שאר התכונות החזקות יותר, גם פונקציונליות כמעט זהה לזו של ספריית Serial המוכרת של הארדואינו: הפונקציות begin, read, write ו- available. הזיגדואינו מטפל בכל הצד הטכני בעזרת מודול ה-802.15.4 והאנטנה המובנים, ולנו נשאר רק לכתוב ולקרוא מצד לצד!
הספריה ZigduinoRadio אינה מציעה שליטה בקצב העברת המידע. הפונקציה begin שלה אינה מקבלת כפרמטר מהירות שידור אלא מספר של ערוץ רדיו לשימוש. בדיקה לא רשמית שערכתי הראתה קצב של כ-1.5K בייטים לשנייה, כלומר כ-12,300 ביטים לשניה נטו (אחרי שנפטרים מכל הביטים לביקורת, בדיקת שגיאות וכו' שעוברים בלי שנרגיש בהם). השידור עובר דרך קירות ובין חדרים בדירה בלי בעיה, ואפילו קצת יותר מזה.
שכחת להזכיר שכמובן מדובר בתקשורת zigbee. אני מאמין שקניית משדר/מקלט בנפרד מבקר תחסוך בעלויות 🙂
המחיר הופך את זה ללא כדאי לחלוטין…
בשביל תקשורת נטו, בהחלט. מצד שני, אל תשכח שיש לך פה בעצם תואם ארדואינו Uno עם נפח זכרון כמו של Mega, כך שזה כבר לא כל כך רחוק מהמחיר של כל החלקים האלה בנפרד.