תוכן עניינים:

פיפבוי בנוי מגרוטאות: 26 שלבים (עם תמונות)
פיפבוי בנוי מגרוטאות: 26 שלבים (עם תמונות)

וִידֵאוֹ: פיפבוי בנוי מגרוטאות: 26 שלבים (עם תמונות)

וִידֵאוֹ: פיפבוי בנוי מגרוטאות: 26 שלבים (עם תמונות)
וִידֵאוֹ: בלואי | סופרמרקט 2024, יולי
Anonim
Image
Image
בונים את לב הפיפבוי
בונים את לב הפיפבוי

זהו פיפבוי העובד שלי, הבנוי מזבל אקראי מהמוסך ופשיטה על מלאי הרכיבים האלקטרוניים שלי. מצאתי שזה מבנה מאתגר וזה לקח לי כמה חודשים של עבודה, כך שלא הייתי מסווג את זה כפרויקט שלם למתחילים. המיומנויות הדרושות כוללות עבודות פלסטיק ועץ, אלקטרוניקה וקידוד. הגוף בנוי מחתיכות שונות של פלסטיק גרוטאות חתוכות ומרותכות יחד. השתמשתי ב- Raspberry Pi 0 כבקר המיקרו, עם כותרת תצוגה המותקנת בחלק מהסיכות של GPIO. הפינים הנותרים משמשים להנעת נוריות LED ולחיבור כפתורים/פקדים. כתבתי ממשק משתמש בסגנון "Pipboy" עם כמה מסכי הדגמה בפייתון להשלמת הפרויקט.

המטרות שלי לפרויקט היו:

  • היה צריך לעבוד - כלומר צריך להיות בעל תצוגה שעושה דברים
  • רציתי שיהיה לו "חיוג" לבחירת המסכים השונים, שכן זה תמיד בלט עבורי כחלק איקוני בממשק המשתמש ב- Fallout
  • את כל הבנייה היה צריך להשלים באמצעות דברים שכבר היו לי במוסך או במשרד שלי (זה לא הושג לגמרי, אבל התקרבתי - למעלה מ 90% מזה נמצאו פריטים או דברים שכבר היו לי).
  • צריך להיות לביש

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

אספקה

אספקה

  • צינור נשא רחב (כגון פיסת צינור ניקוז)
  • גרוטאות פלסטיק (הן ליצירת הגוף והן למטרות דקורטיביות)
  • מיכל קטן
  • שטיח רצפת קצף
  • פאי פטל
  • מסך בגודל 3.5 אינץ '
  • מקודד סיבובי KY040
  • 3x נוריות
  • 2x כפתורי לחיצה
  • מקור אנרגיה
  • תִיוּל
  • ברגים, דבקים, צבעים, חומרי מילוי וכו '

כלים

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

שלב 1: בניית לב הפיפבוי

בונים את לב הפיפבוי
בונים את לב הפיפבוי

הדבר הראשון שהייתי צריך לעשות היה לוודא שאני יכול להשיג תצוגה ובקר מיקרו בגורם צורה שאוכל לעבוד איתו. במקרה יצא לי מסך בגודל 3.5 אינץ 'שמתעטש ככובע על סיכות ה- GPIO של פטל PI, אז החלטתי להשתמש בזה. זיווגתי אותו עם Raspberry Pi 0 וודאתי שהוא עובד תקין, יש כמה צעדים לגרום ללינוקס לזהות את התצוגה שעליכם לעבור.

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

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

להלן כמה קישורים שימושיים לכך:

www.raspberrypi.org/forums/viewtopic.php?t…

www.raspberrypi.org/forums/viewtopic.php?t…

www.raspberrypi.org/forums/viewtopic.php?f…

learn.sparkfun.com/tutorials/serial-periph…

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

שלב 2: אב טיפוס מקרטון

אב טיפוס מקרטון
אב טיפוס מקרטון
אב טיפוס מקרטון
אב טיפוס מקרטון
אב טיפוס מקרטון
אב טיפוס מקרטון

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

שלב 3: מאב טיפוס לתבנית

מאב טיפוס לתבנית
מאב טיפוס לתבנית
מאב טיפוס לתבנית
מאב טיפוס לתבנית
מאב טיפוס לתבנית
מאב טיפוס לתבנית

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

שלב 4: הוסף מארז למסך ופי

הוסף מארז למסך ופי
הוסף מארז למסך ופי
הוסף מארז למסך ופי
הוסף מארז למסך ופי

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

שלב 5: חזור על לוח הבקרה

חזור על לוח הבקרה
חזור על לוח הבקרה
חזור על לוח הבקרה
חזור על לוח הבקרה
חזור על לוח הבקרה
חזור על לוח הבקרה

לאחר מכן, עשיתי בדיוק את אותה תבנית בשינוי, חיתוך והדבקה לבניית בית לוח הבקרה.

שלב 6: חותכים את הצינור

חותכים את הצינור
חותכים את הצינור

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

שלב 7: מסגרת

בזל
בזל
בזל
בזל

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

שלב 8: בדיקת סוללה

בדיקת סוללה
בדיקת סוללה
בדיקת סוללה
בדיקת סוללה
בדיקת סוללה
בדיקת סוללה

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

שלב 9: בדיקת התאמה

בודק התאמה
בודק התאמה
בודק התאמה
בודק התאמה
בודק התאמה
בודק התאמה

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

שלב 10: הוסף פקדים ופירוט

הוסף פקדים ופירוט
הוסף פקדים ופירוט
הוסף פקדים ופירוט
הוסף פקדים ופירוט
הוסף פקדים ופירוט
הוסף פקדים ופירוט

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

שלב 11: בניית מחדש מסגרת מס '3

בניית בז 'מס' 3
בניית בז 'מס' 3
בניית בז 'מס' 3
בניית בז 'מס' 3
בנייה מחדש של בז 'מס' 3
בנייה מחדש של בז 'מס' 3

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

שלב 12: אבות טיפוס לאלקטרוניקה

אב טיפוס של האלקטרוניקה
אב טיפוס של האלקטרוניקה
אב טיפוס של האלקטרוניקה
אב טיפוס של האלקטרוניקה

אני משתמש בלוח לחם כדי לפרוס את המעגלים הפשוטים שלי בצורה כזו, וכמו שאני עושה את החלק הזה של הפרויקט לעתים קרובות בחלל אחר מבניית הגוף המרכזי, זיווגתי אותו גם עם פטל PI אחר. כאן השתמשתי בדגם 3, שנתן לי קצת יותר כוח להתחבר אליו ישירות ולהריץ IDE על הסיפון. זה פשוט הקל עלי קצת את אב טיפוס הקוד המהיר. יש עוד המון דרכים להתחבר מרחוק/לקודד/לאתר באגים, זה רק רצון שהעדפתי לעשות כאן.

העיצוב כאן פשוט למדי, יש לנו;

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

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

התמונה השנייה פחות או יותר מראה את הפריסה הפנימית הסופית שאיתה הלכתי. ביליתי כאן קצת זמן בבדיקת דרכי הנהיגה ברכיבים ואימות שהכל הסתדר לפני שהעברתי זאת לגוף המבנה. כל הקוד נמצא ב- github.

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

אם אתה חדש ב- Raspberry Pi, GPIO ואלקטרוניקה, אני ממליץ בחום על הדרכות הבאות אשר ילוו אותך בכל מה שאתה צריך לעשות את הפריסה למעלה;

projects.raspberrypi.org/en/projects/physi…

thepihut.com/blogs/raspberry-pi-tutorials/…

שלב 13: העברת האלקטרוניקה לגוף

העברת האלקטרוניקה לגוף
העברת האלקטרוניקה לגוף
העברת האלקטרוניקה לגוף
העברת האלקטרוניקה לגוף
העברת האלקטרוניקה לגוף
העברת האלקטרוניקה לגוף

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

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

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

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

לאחר מכן חתכתי חורים למיכל כדי להעביר את החוטים אל ה- Pi ולהתחבר ל- GPIO. העיצוב הזה איפשר לי להסיר הכל אם צריך (משהו שעשיתי כמה פעמים בזמן שסיימתי את הבנייה).

שלב 14: כוונון עדין של ההתאמה

כוונון עדין של ההתאמה
כוונון עדין של ההתאמה
כוונון עדין של ההתאמה
כוונון עדין של ההתאמה

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

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

שלב 15: הרטרו את המקודד הרוטרי

רטרו למעלה המקודד הרוטרי
רטרו למעלה המקודד הרוטרי

מקודדים רוטרי מגיעים לעתים קרובות (כמו שלי) עם כפתור מודרני ומבריק בסגנון "הי -פי". זה לגמרי לא היה אופי לבנייה, אז הייתי צריך להמציא משהו אחר. בקופסת החלקים האקראית שלי נתקלתי בשן ישן ממקדח ששברתי לפני זמן רב. זה נראה טוב, אבל לא התאים למקודד הרוטרי. הפתרון שלי כאן היה לנסות תקעי קיר שונים עד שמצאתי אחד שמתאים לחוגה סיבובית, ואז לחתוך אותו לצורה כך שאוכל להשתמש בו כ"צווארון פנימי "כדי להושיב את גלגל הקידוח על המקודד הרוטרי כנושא מתאים יותר. לִשְׁלוֹט.

שלב 16: בטנה פנימית

בטנה פנימית
בטנה פנימית
בטנה פנימית
בטנה פנימית

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

שלב 17: הוספת פירוט

הוספת פירוט
הוספת פירוט
הוספת פירוט
הוספת פירוט

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

שלב 18: צביעה וגימור מבנה גוף

ציור וגימור בניית גוף
ציור וגימור בניית גוף
ציור וגימור בניית גוף
ציור וגימור בניית גוף
ציור וגימור בניית גוף
ציור וגימור בניית גוף

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

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

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

שלב 19: קידוד

סִמוּל
סִמוּל

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

אני בוחר לכתוב את זה ב- Python בגלל התמיכה המצוינת ב- Raspberry Pi, GPIO וכו 'Python די נמוך ברשימת השפות שאני מכיר, אז זו הייתה עקומת למידה גדולה בשבילי, וחלק גדול מהקוד הוא מבולגן כתוצאה מכך. אני אעדכן את זה עם הזמן כיוון שלא סיימתי לגמרי את כל מה שרציתי לעשות כאן - אבל זה קרוב מספיק כדי לחלוק אותו כעת מכיוון שכל המושגים העיקריים נמצאים שם.

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

ספריות עיקריות בשימוש:

  • משחק משחקים: אני משתמש בזה כמנוע להפעלת ממשק המשתמש מכיוון שהוא איפשר לי לצייר גרפיקה שרירותית, לתפעל תמונות, גופנים, לעבור למסך מלא וכו '.
  • pyky040: זה מספק את הטיפול בחוגה הסיבובית וחסך לי הרבה זמן (תודה רבה לרפאל יאנסי ששחרר זאת.
  • RPi. GPIO: לנהיגה טובה ב- GPIO, השתעשעתי כאן בכמה אפשרויות, אבל זה נתן לי את הגמישות הנכונה שרציתי, במיוחד בדברים כמו שימוש ב- GPIO רזרבי כעוד 3.3v להנעת המקודד הסיבובי וכו '.
  • רעש: ליצירת רעש פרלין, כדי לאפשר לי ליצור צורת גל אקראית למסך הרדיו שנראה טבעי יותר
  • תור: נתקלתי בבאג מתסכל עם תזמון האירועים מהמקודד הרוטרי שהופך וקצב הרענון האיטי (מאוד) של צג ה- LCD. בסופו של דבר הדרך שבה פתרתי זאת הייתה לחכות לתורים לאירועים נכנסים מהמקודד הרוטרי ולבחור אותם אחד בכל פעם כשהמסך מתרענן.
  • מערכת ההפעלה, sys, שרשור, זמן: כולם משמשים לפונקציות פייתון סטנדרטיות

הערה על עיצוב הטיפול במסך. מסכים מוגדרים כרשימת שמות בתוך הקוד. לכל ערך ברשימה יכול להיות קשור קובץ-p.webp

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

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

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

להלן קישורים לספריות העיקריות בהן השתמשתי כאן:

www.pygame.org/news

pypi.org/project/pyky040/

pypi.org/project/noise/

שלב 20: מסך סטטיסטיקה

מסך סטטיסטיקה
מסך סטטיסטיקה

אף פיפבוי לא יהיה שלם ללא מסך הסטטיסטיקה הקלאסי של צללית פיפבוי. לשם כך, חבר שלי יצר-p.webp

שלב 21: מסך מלאי

מסך מלאי
מסך מלאי

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

שלב 22: מסך מפה

מסך מפה
מסך מפה

מסך זה היה אחד המסכים המורכבים יותר לעבודה. ה- Raspberry Pi 0 אינו מגיע עם מודול GPS, אך רציתי לגרום למפה להיות תוקף למקום בו נמצא ה- Pi. הפתרון שלי לזה הוא סקריפט נפרד שמושך את כתובת ה- IP של Pi, משתמש ב https://ipinfo.io כדי לחפש מיקום משוער. תגובת JSON נלכדת ואז אני ממיר את הקואורדינטות כך שאוכל למשוך אריח openstreetmap.org עבור המיקום בערך.

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

במהלך התהליך לעיל נוצר קובץ טקסט עם המיקום המשוער והקואורדינטות, ואריח המפה נוצר כ- png. ממשק המשתמש של pipboy מושך את שני הקבצים הללו ומכסה את התוכן על מנת ליצור מסך מפה שעובד (עד דיוק רזולוציית כתובת ה- IP למיקום).

שלב 23: מסך נתונים

מסך נתונים
מסך נתונים

זהו רק כרטיס בדיקה (שנוצר על ידי סקריפט פייתון אחר ופלט לקובץ png) שמוצג כדי לסייע בבדיקת גודל/פריסה. השארתי את זה כי זה עדיין די שימושי כדי לוודא כמה נדל ן אני צריך לשחק איתו בעת לעגת מסכים.

שלב 24: מסך רדיו

מסך רדיו
מסך רדיו

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

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

שלב 25: מחשבות אחרונות

Image
Image
מחשבות אחרונות
מחשבות אחרונות

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

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

שלב 26: קוד פתוח ב- Github

קוד פתוח ב- Github
קוד פתוח ב- Github

סוף סוף הצלחתי לפתוח את הקוד ב- Github. הוא זמין בקישור הזה:

מוּמלָץ: