להפוך מצה לדיסק און קי
אפשר לנצל את החורים ובתפיחות הקטנות של המאפה לפסח בשביל לשמור ולהעביר מידע. הכירו את האינפורמצה - פרוייקט מייקינג ואפייה מיוחד לפסח
כולם מכירים את בדיחת הקרש על העיוור שמישש מצה ושאל מי כתב את השטויות האלה, אבל אפשר להסתכל על הנושא גם מהכיוון ההפוך: האם ניתן להשתמש בחורים ובתפיחות הקטנות שבמצה, או בתכונה אחרת כלשהי שלה, כמצע להעברת אינפורמציה? הכירו את האינפורמצה – פרויקט משולב של אפיה ושל מייקינג, שמחזיר לחיים ברוח החג את הטכנולוגיה העתיקה של כרטיסים מנוקבים.
היה נותן בהם סימנים
הטמעה נוחה של מידע במצה יכולה להיעשות באופן מכני (חירור סלקטיבי) או תרמי (חריכה של "פיקסלים" נבחרים). הרזולוציה של השיטות הללו, ומכאן גם כמות המידע שאפשר לאחסן בכל מצה, תלויה בדיוק של אמצעי ה"כתיבה" וגם של אמצעי הקריאה. כדי לשמור על הפשטות של הפרויקט, בחרתי לבצע חירור גס של הבצק בטרם האפיה, ולממש את קריאת המידע בעזרת חיישנים אופטיים. זוהי פחות או יותר הטכניקה שבבסיס הכרטיסים המנוקבים – אמצעי להעברת מידע דיגיטלי למכונות ואפילו למחשבים, שהיה בשימוש עד סוף שנות השבעים.
הכרטיסים הללו, שהיו עשויים לרוב מנייר, כללו מקומות קבועים מראש ל"ביטים" של מידע, ואדם או מכונה היו מנקבים את הביטים הללו לפי הצורך. מנורה במנגנון הקריאה היתה מאירה דרך הכרטיס לכיוון מערך של חיישני אור שהוצבו בצדו השני. האזורים המחוררים איפשרו לאור להגיע לחיישנים שמולם, וכך המחשב הפרימיטיבי חילץ את סימני ה-"0" וה-"1" הבינאריים מהנייר והעתיק אותם לזיכרון הפנימי שלו לצורך עיבוד. כרטיס טיפוסי יכול היה לאחסן, במקרה הטוב, בסביבות 120 בייטים – אחד חלקי שנים-עשר אלף מנפח תקליטון "3.5 הנפוץ של שנות התשעים.
באינפורמצה, מכיוון שמדובר במלאכת יד מייגעת שגם צריכה להסתיים, מטעמי כשרות, תוך שמונה-עשרה דקות, בחרתי לעבוד עם מטריצה של 6x5 ביטים בלבד. זה מספיק כדי לאחסן צירופים בני חמישה תווים של אותיות לטיניות, ספרות או סימני פיסוק. מילה על כל מצה.
הא לחמא עניא
המתכון לאינפורמצה פשוט מאד. מערבבים כ-40 גרם קמח עם כ-24 גרם מים, לשים היטב ומרדדים דק ככל האפשר. מחוררים המוני חורים זעירים למניעת תפיחה, ואז – בעזרת אביזר עגול ודק-שוליים כגון קש פלסטיק נוקשה – "מנקבים" את הביטים הרצויים תוך שמירה על ריווח של חצי אינץ' בין נקודות האמצע של הביטים, בין אם הם מנוקבים או לא. הריווח הזה נבחר מפני שהוא מסתדר יפה עם ריווח מקובל בעולם אלקטרוניקה, של 0.1 אינץ'.
אופים מספר דקות בתנור שחומם מראש לחום מקסימלי, עד שהמצה מקבלת צבע. סביר להניח שהתנור הביתי לא יגיע לטמפרטורות של תנורי מצות אמתיים, כך שהתוצאה לא תיראה זהה במאה אחוזים למצות הקנויות.
המידע שבמצה מקודד לפי קוד ASCII הידוע, בהבדל אחד: מכיוון שיש לנו רק שישה ביטים, ואנחנו רוצים להגיע לתווי הספרות והאותיות, על מנגנון הקריאה להוסיף 31 לכל ערך שנקרא מהמצה. למשל, אם הביטים בשורה מסוימת על המצה הם 100010, זה מיתרגם לערך העשרוני 34; נוסיף לזה 31 ונקבל את המספר 65, שפירושו בקוד ASCII האות "A".
ויתנו עלינו עבודה קשה
החלק המורכב יותר הוא ההכנה של החומרה והקוד של הקורא. במעגל שבתמונות חיברתי בריווח של חצי אינץ' את החיישנים - נגדים תלויי-אור. אלו הם רכיבים שההתנגדות החשמלית שלהם פוחתת ככל שנופל עליהם יותר אור. כל הנגדים האלה מתחברים לכניסות של ג'וק מסוג Multiplexer, שמהווה מין טלפון: ניתן "להתקשר" דרכו לכל אחד מהחיישנים בנפרד כדי לשמוע איזה מידע הוא קולט.
מי שמבצע את ההתקשרות בפועל הוא לוח ארדואינו, שאליו הוצמד מודול מסך LCD פשוט. קוד התוכנה שכתבתי עבור הארדואינו מתקשר לחיישנים השונים מספר פעמים בשניה, אוסף את המידע שמגיע מהם למשתנה פנימי בזיכרון, וכאשר הוא משתכנע שהקריאה יציבה ומדויקת, הוא ממיר את הערך לקוד ASCII המתאים ומציג אותו על המסך. את קוד המקור לארדואינו אפשר לראות כאן.
מכת חושך
במכונות קוראות הכרטיסים הוצב מקור אור קבוע וחזק מול החיישנים, והמערכת כולה נמצאה בתוך מארז אטום שמנע כמעט לגמרי חדירה של אור מבחוץ. לנו אין את הלוקסוס הזה, ולכן כמות הרעש בנתונים גדולה. כצעד ראשון להתמודדות עם הבעיה הצבתי סביב כל חיישן גליל קצר מקש פלסטיק אטום, שמונע מעבר של אור תועה מהצדדים. עדיין, החיישנים קולטים הרבה אור מהסביבה, ומה שגרוע עוד יותר, כל אחד מהם עשוי לקלוט כמות אחרת, בהתאם למקורות ולזוויות התאורה.
לכן, התוכנית מתחילה במדידה של רמות האור הרגילות, ללא שום חסימה: המידע מכל חיישן נאסף מספר פעמים ומחושב עבורו ממוצע. לאחר מכן, בשלב הקריאה, הערך שכל חיישן מחזיר נבדק לעומת הממוצע שחושב קודם לכן. אם הם מספיק קרובים, סימן ששום דבר לא חוסם את האור, כלומר יש חור במצה. בניתי את התוכנה כך כאשר כל החיישנים נמצאים בצל היא תפענח זאת כרווח בין תווים, וכאשר כולם מוארים היא תאפס את הקריאה כולה.
רשע מה הוא אומר
מה העבודה הזאת לכם? כלומר, מי צריך מכונה לקריאה של מצות מנוקבות? התשובה, כמו ברבים מפרוייקטי המייקינג, היא שהשאלה פשוט לא נכונה. העיקר כאן הוא לא הפונקציונליות הסופית אלא האתגר עצמו והדברים שלומדים תוך כדי בניה: אלגוריתמים, ממשקי חומרה-תוכנה, התמודדות עם נתונים רועשים מכל מיני סוגים – בקיצור, בדיוק אותן בעיות שמעסיקות מתכנני מערכות "בעולם האמיתי". בנוסף, כמו בסרטי הריגול הישנים, אפשר לאכול את ההודעה בסיום הפענוח כדי להשמיד אותה, וזה אולי לא יותר טעים, אבל בהחלט הרבה יותר פריך מאשר כרטיס מנוקב רגיל.