סיימונים לפי משקל

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

הדמיית ה-PCB לפרויקט בתוכנת KiCAD
הדמיית ה-PCB לפרויקט בתוכנת KiCAD

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

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

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

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

מטריצה עם רכיבים לבדיקות התחלתיות של המשחק
משחק דמוי סיימון בשלבי פיתוח ובדיקה מוקדמים (לחצו להגדלה)

לגבי אספקת החשמל הייתה לי התלבטות. מצד אחד, עדיין יש לי מאות(!) מייצבי מתח קטנים מדגם 78L05 שקיבלתי פעם ואין לי מה לעשות איתם, ובשילוב עם סוללות 9V (שהילדים ימצאו אצלם בבית) הם יכולים לספק חשמל למעגל. מצד שני, הם זקוקים לקבלים לייצוב, וצריך גם להשיג קונקטורים לסוללות, ודרך לחזק את החוטים כך שלא ייתלשו בקלות, ואולי גם משהו להגנה מפני חיבור הפוך שעלול לשרוף משהו…

אופציה אחרת הייתה פשוט לשים קונקטור לכבל USB, כי גם את זה יש לכולם בבית. היו לי כבר כמה קונקטורים במלאי, מפרויקט לוח הפיתוח ל-ATmega4809, ובאתרים הרציניים שבדקתי הם היו זולים יותר מאשר הקונקטורים הכי זולים לסוללות 9V. מכיוון שגם ככה הייתה לי הזמנה ב-Digikey בקנה, הוספתי את כל הרכיבים החסרים אליה – הדגמים הכי זולים שמצאתי, כמובן – וחסכתי כסף על משלוח.

כעת לנושא הלוח עצמו. הפרמטרים היו מאוד פשוטים וסלחניים, אז עריכת ה-PCB הייתה קלילה ומהירה. בלי לפגוע בנוחות השימוש, דאגתי גם שהלוח יהיה קטן כדי להקטין את עלויות הייצור (עוד יתרון כשקהל היעד הוא ילדים קטנים עם ידיים קטנות!) אבל איפה לייצר אותו? ב-PCBWay, אצלם ייצרתי לעתים קרובות בעבר, המחיר לארבעים לוחות + משלוח איטי היה 57 דולרים. בדקתי באתר השוואת מחירים ושם הבטיחו שב-JLCPCB אוכל לקבל, באותו מחיר, חמישים לוחות במשלוח מהיר. באתר עצמו חיכתה לי הפתעה נעימה: גם מחיר זול עוד יותר לייצור, וגם הנחה של 8 דולרים נוספים על הזמנה ראשונה, סה"כ 33 דולרים בלבד.

בהנחה שהכול יגיע בזמן ואיכות ה-PCB תהיה סבירה, יוצא שהחומרה תעלה לי בסביבות 6-7 שקלים לכל יחידה. כמובן שגם תכנון המעגל, תכנות המיקרו-בקר והלחמת הרכיבים לוקחים זמן, אבל זה עדיין בגבולות הסביר מבחינתי כרגע.

התוכנה של משחק סיימון לא מורכבת במיוחד. צריך איזושהי פונקציה דמוית millis של ארדואינו לצורך תזמון, קצת קוד שידליק ויכבה לדים, יקרא קלט מהלחצנים וישמיע צלילים ברמקול (את זה מימשתי באמצעות ערוץ ה-PWM הבודד של המיקרו-בקר), וניהול של רצף האורות שהשחקן צריך לזכור. כאן יש בעיה קטנה: הרצף צריך להיות אקראי כמובן, או לפחות דמוי-אקראי, אבל מה יהיה ה"גרעין" (seed) האקראי להגרלת הרצף הזה?

אחד הפתרונות הידועים להשגת seed משתנה הוא לשמור מספר ב-EEPROM ולעדכן אותו בכל הדלקה של המכשיר, אבל לדגם המיקרו-בקר הזה אין בכלל EEPROM! אפשר לנסות להפיק ביטים אקראיים מקלט אנלוגי שמגיע מפין צף, אך כשקראתי חומר על הסיימון המקורי הסתבר שנעשה בו משהו עוד יותר פשוט: הרצף האקראי נבנה תוך כדי המשחק, על סמך תזמון של לחיצות המשתמש על הלחצנים. אף אדם לא מסוגל לשלוט בתזמון ברזולציה של אלפיות שנייה, אז אם יש לנו מונה (counter) שסופר פרקי זמן מספיק קצרים, אנחנו יכולים לחשב את השארית מחלוקה שלו ב-4 בכל פעם שהשחקן לוחץ על משהו, ומובטחת לנו תוצאה שלא ניתן לחזות מראש.

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

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

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