פרויקט אורח: Boozo the Smile

הפרויקט הראשון שמתארח ב"בייט הלבן" הוא Boozo the Smile – חיישן אלכוהול בנשיפה עם תצוגה יוצאת דופן. פרויקט זה תוכנן ובוצע בפסח האחרון על ידי אוריאל גיא, האיש שעומד גם מאחורי הפרויקט השאפתני Giant Pong. לפני התיאורים וההסברים, בואו נראה את Boozo בפעולה:

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

האינטראקציה עם המשתמש מתבצעת דרך שלושה רכיבים: מתג (להתחלת המדידה), חיישן אלכוהול ומסך מטריצת נוריות ה-LED. החיישן כולל שני חלקים פנימיים: גוף חימום – שאוריאל חיבר אותו ישירות לסוללה כדי לא להעמיס יותר מדי על הארדואינו – ונגד, שערכו משתנה בהתאם לכמות אדי האלכוהול באוויר. צד אחד של הנגד הזה חובר ל-5V והצד השני לפין קלט, בתוספת נגד בערך גבוה שחובר ל-Ground ויוצר מה שנקרא "Voltage Divider" – משהו שמזכיר במקצת נגד Pull-down, אך מותאם לקלט אנלוגי במקום לדיגיטלי.

Boozo the Schematic – לחצו להגדלה

מטריצת ה-LED בה נעשה שימוש כאן היא למעשה קיט להרכבה עצמית (יותר נכון, הלחמה עצמית) שנקרא LoL Shield – קיצור של Lots of LEDs: מלחימים 9×14 נוריות LED ללוח, מוסיפים שורות מחברים בצדדים ומרכיבים את כל העסק על הארדואינו. הספריה שמתאימה ל-Shield הזה מבצעת Charlieplexing על הנוריות ודואגת לכל מה שמאחורי הקלעים: המשתמש צריך רק לומר איזו נורית צריכה להיות דלוקה ואיזו כבויה, או פשוט לשלוח מחרוזת להצגה. שימו לב שהרוב המכריע של קוד התוכנה מוקדש ליצירת תבניות ביטים (5×8) עבור כל התווים של ASCII. למזלו של אוריאל, הקוד הזה כבר היה קיים בדוגמאות של ה-LoL Shield ולא היה צורך להקלידו לבד!

עם זאת, ה-Lol Shield צורך הרבה מאד משאבים. בתור התחלה, מספר הנוריות העצום מחייב שימוש בהמון פינים: בלוח ארדואינו רגיל, זה אומר גם את פינים 0 ו-1, מה שמונע תקשורת טורית (Serial), וגם את הפינים שמשמשים לפסיקות חומרה. המגבלה הזו מנעה מאוריאל לבצע דיבוג של התוכנה דרך ה-Serial Monitor, אז הוא מצא תחליף חכם – להציג את המידע על מטריצת ה-LED עצמה, כפי שאפשר לראות בסרטון הבא:

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

Boozo the Inside – לחצו להגדלה

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

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

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

מגניב ביותר 🙂
כמה עולה כזה חיישן?

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

כשיגיעו החלקים מ EBAY אני אשלח את הפרוייקט הבא 🙂

אתה תותח!!!!
אין אין עליך, מתה עליך, אתה הגדול מכולם!

יאי!
כיף נורא שיש במה כזאת. בתקווה לפרוייקטים שרק הולכים ומשתפרים.