בפוסט הקודם ראינו איך להגדיר טריגר עבור הלוג'יק, לבצע דגימה של אותות לוגיים מלוח ארדואינו, ולראות את התוצאות הגולמיות בתוכנה של Saleae. הפעם נראה איך מוציאים מהמדידה מידע מדויק יותר על זמנים ותדרים, וכיצד מפענחים נתונים שנשלחים בפרוטוקול תקשורת.
נתחיל במקום בו הפסקנו בפעם שעברה, עם המדידה של אות ה-PWM. זוכרים?
מנתח לוגי ("Logic Analyzer") ראוי לשמו הוא מכשיר גדול, מורכב ויקר מאד – בערך בסדר גודל של אוצילוסקופ. עם זאת, בניגוד לסקופ, הלוג'יק מתעד רק רמות מתח דיגיטליות ("0" ו-"1" לוגיים, מכאן השם), ולכן מתאים ונוח במיוחד לעבודה עם מיקרו-בקרים, מעבדים למיניהם ומערכות דיגיטליות אחרות.
יש בשוק מספר התקנים בסיסיים יותר, שעושים את אותו הדבר אך עם יכולות מוגבלות פי כמה ובחיבור למחשב, כלומר ללא מסך או ממשק משל עצמם. בין המוכרים שבהם נמצאים Logic הקומפקטי של חברת Saleae, שמחירו $149 בלבד, ואחיו הגדול והמשוכלל Logic16 שעולה, נכון לעכשיו, פי שניים. התקנים כאלה הם מושלמים לחובבים שעובדים עם מיקרו-בקרים איטיים יחסית, כמו בארדואינו או ב-MSP430 Launchpad. לרוע המזל, המחיר עדיין קצת גבוה עבור החובב המתחיל הטיפוסי, ולנישה הזו נכנסו – כרגיל – חיקויים סיניים זולים.
סיפורנו מתחיל במתכנת אמריקני מסוים, בואו נקרא לו נ', שאני מכיר (לא אישית) דרך הרשת. נ' הוא מקצוען כבד בשפת Object Pascal וגם, עד כמה שאני יכול לשפוט, בעל הבנה מעמיקה בכל מה שקשור להנדסת תוכנה, ניהול פרוייקטי תכנות וכל הדברים הגדולים והחשובים האלה. מדי פעם, לקול מצהלות העוקבים אחריו ברשתות החברתיות, נ' מציג פיסות קוד תמוהות ועקומות שהוא מוצא במסגרת עבודתו.
בפוסט זה אציג את הטכניקות בהן השתמשתי ליצירת חיישן התראה אחורי למשאית צעצוע. מערכת זו מבוססת על חיישן אולטרה-סוני פשוט מדגם HC-SR04 ומיקרו-בקר ATtiny85, וכמו המערכות האמתיות לרכב, היא מציגה התראה ויזואלית על גבי שורה של נוריות LED צבעוניות. ראשית, הנה וידאו של המערכת בפעולה:
בפוסט מס' 2 בסדרה דיברתי על הגדרות שעון שאפשר לבחור עבור ה-ATtiny85 (ומיקרו-בקרים אחרים ממשפחת AVR) באמצעות צריבת פיוזים. מבחר האפשרויות היה כה גדול, עד שבחרתי לדלג שם על חלק מהפרמטרים ולהתרכז אך ורק במקור השעון ובתדר שנבחר עבורו. כעת נתקלתי, לראשונה, במצב בו גם הפרמטרים הנוספים חשובים. אז כהשלמה קטנה לפוסט על הגדרות השעון, בואו נדבר על השהיה באתחול.
לפני זמן-מה הצגתי כאן את הג'וק CD4017BE, הידוע בכינויו "מונה עשרוני" ("Decade Counter"), וציינתי שבימינו די קשה למצוא לו שימושים מעשיים. בתגובות לפוסט הנ"ל הוצעו אפשרויות ספורות, ומשני ג'וקים כאלה יצרתי גם קישוט אורות לסוכה, אך רוב הג'וקים שקניתי במבצע באיביי עדיין נותרו ללא שימוש. ובכן, מסתבר שיש עוד משהו שאפשר לעשות איתם – לפחות כתרגיל מחשבתי…
ברוח ההתחדשות הכללית של כל מיני אתרים, וכדי שהמערכת תפסיק להציק לי עם השדרוג של ערכת הנושא הקודמת, החלטתי לעבור לעיצוב חדש, מודרני ותקני יותר. ניסוי ראשוני הראה שערכת הנושא הזו מסתדרת לא רע עם העברית, ואפילו יש סיכוי שהיא תתאים קצת לתצוגה בסמארטפונים, טאבלטים ושאר צעצועים.
אם יש לכם משהו לומר בעד או נגד העיצוב החדש, אם נתקלתם בתקלות ובאגים מכל סוג שהוא, אנא דווחו בתגובות ונראה אם ומה אפשר לעשות בנדון 🙂
המיקרו-בקר של הארדואינו Uno הוא של 8 ביטים. זה של ה-MSP430 Launchpad עובד עם 16 ביטים, וללוחות מתקדמים כמו Arduino Due, Tiva-C Launchpad ואפילו Rapsberry Pi יש מיקרו-בקרים/מעבדים של 32 ביט. מה זה בעצם אומר? מה נותן המספר הזה? למה אין מיקרו-בקר של, נניח, 19 ביטים, ואיזה כדאי לבחור בשביל הפרויקט הבא שלכם?
הטרנזיסטור (Transistor) הוא רכיב פשוט יחסית, אך הוא מלווה בטרמינולוגיה שכאילו נועדה להקשות על החובב המתחיל. בפוסט זה אסתפק במינימום ההכרחי, כולל דוגמה קטנה, ואת ההבנה המעמיקה יותר נשמור לעתיד. זה לא אומר שזה יהיה קצר… 🙂
פוסט קצר וקל זה עוסק בפורט (Port) של ה-ATtiny85 – אמצעי הגישה שלנו לקריאה וכתיבה של ערכים דיגיטליים בפיני הקלט/פלט. לטייני יש אמנם פורט אחד בלבד, שמסומן באות B, אך גם מיקרו-בקרים אחרים ממשפחת AVR עובדים באותה שיטה, כך שמה שאציג כאן מתאים – עם התאמות מינימליות – גם לעבודה בארדואינו.