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

Raspberry Pi IoT שולחן כדורגל כדורגל: 11 שלבים
Raspberry Pi IoT שולחן כדורגל כדורגל: 11 שלבים

וִידֵאוֹ: Raspberry Pi IoT שולחן כדורגל כדורגל: 11 שלבים

וִידֵאוֹ: Raspberry Pi IoT שולחן כדורגל כדורגל: 11 שלבים
וִידֵאוֹ: BEST LAMB IN KAZAN (Chakapuli) IT'S WORTH COOKING 2024, דֵצֶמבֶּר
Anonim
Raspberry Pi IoT שולחן כדורגל
Raspberry Pi IoT שולחן כדורגל

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

ההתקנה העיקרית היא שימוש בשולחן כדורגל קיים הקשור ל- Raspberry Pi שיכול לבצע את כל המשימות הבאות:

  • משתמש בסיכות GPIO להנעת ה- LED/מקלט IR ומודולי מטריצת 8x8 נקודות
  • מפעיל אתר Flask באמצעות nginx
  • מפעיל מסד נתונים של MySQL/MariaDB לאחסון נתונים

כדי שתוכל לשחזר את הפרויקט הזה תזדקק למיומנויות הבאות:

סוף אחורי:

  • הבנת HTML/CSS/Javascript ללקוח האתר
  • הבנת Python עם Flask/Flask-SocketIO/Jinja2 עבור צד השרת של האתר
  • ידע בסיסי ב- MySQL
  • דע כיצד להפעיל שרת אינטרנט

אב טיפוס

  • ידע בסיסי כיצד לחבר מעגל חשמלי
  • הַלחָמָה
  • הבנה בסיסית כיצד לכתוב סקריפט ב- Python
  • עבודה עם לינוקס (Raspbian)
  • בעל סבלנות רבה מכיוון שיהיו הרבה ניפוי באגים

שלב 1: החומרים

להלן הרשימה עם כל החלקים הדרושים לטבלה:

  • פטל פי דגם 3 (עם מעטפת)
  • T-Cobbler לחיבור ה- Pi ללוח הלחם
  • שולחן כדורגל (השתמשתי בשולחן ישן מאוד הדומה לשולחן זה. חייב להיות מוכן לקדוח בו חורים)
  • מודול מטריקס MAX7219 Arduino Dot (2)
  • פולטות LED IR (2+ כיוון שהם נשברים, בדומה לזה)
  • מקלטים IR (2+ מכיוון שהם גם נשברים, בדומה לזה)
  • קרש לחם בסיסי ללא הלחמה
  • הרבה חוטים (תלוי בגודל שולחן הכדורגל)
  • מחברים גבריים (30+)
  • מחברים נקביים (10+)
  • נגדי 100-220 אוהם (4+)
  • חומרי הלחמה
  • רצועות חוט
  • מחזיקי לד
  • כמה עץ/ברגים למקרה שתרצו להעביר את הכדור למרזב

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

שלב 2: המעגל החשמלי

מעגל החשמל
מעגל החשמל
מעגל החשמל
מעגל החשמל
מעגל החשמל
מעגל החשמל

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

בהתחלה ניסיתי ליישם את מטריצת ה- LED 8x8 עם מאגר משמרות 74HC595 (תמונה ראשונה) ומערך טרנזיסטורים, אך בשל החוטים הרבים והפלט הנמוך מאוד עברתי למודול MAX7219 Dot Matrix מכיוון שהוא לוקח רק 5 חוטים ומונע ישירות על ידי אוטובוס SPI.

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

מקבלי ה- IR וה- LED צריכים להיות ישירות זה מול זה וחלקו העליון של ה- LED צריך להיות מופנה כלפי המקלט. מכיוון שאנו רוצים לדמות קרן ישירה אשר ניתנת לשבירה על ידי תנועת הכדור ובמקרה זה יהיה שינוי מצב של קו ה- DATA של המקלט מ -0 ל -1.

שלב 3: קידוד החיישנים

קידוד החיישנים
קידוד החיישנים

קידדתי את רוב הפרויקט הזה באמצעות Pycharm מכיוון שהוא מאפשר פריסה נוחה של SSH ל- Raspberry Pi שלך באמצעות מתורגמן מרחוק. לא אפרט על אופן הפעולה של תוכנית זו, אך ניתן למצוא מידע רב באתר pycharm.

כרגע אני עדיין עובד על הפרויקט אבל ברגע שהכל יסתיים כל הפרויקט יהיה זמין בפרופיל github שלי

הקוד לחיישנים מורכב מ -3 מחלקות המופעלות בשרשור רקע בשרת הבקבוק שלי (שיוסבר בהמשך):

  1. מחלקת המטרות (קישור) -קובץ זה מפעיל את כל הרכיבים הנפרדים, שניתן לפנות אליהם על ידי הכנסת התקן/אוטובוס ופין PIN נכון
  2. מחלקת מטריקס (קישור) -זוהי המחלקה העיקרית בהפעלת מודול MAX7219
  3. מחלקת הלדים והמקלט (קישור) - זו המעמד העיקרי להפעיל את קרן השבירה האינפרא אדומה באמצעות חוטים נפרדים כדי להפחית את עומס המעבד של ה- RPi

הנורית והמקלט פועלים שניהם בתדר של 38 קילוהרץ והמקלט תמיד מצפה שדופק של מעלה 50% ומטה של 50% יפעל כראוי.

שלב 4: הכנה ומיקום החיישנים

הכנה והצבת החיישנים
הכנה והצבת החיישנים
הכנה והצבת החיישנים
הכנה והצבת החיישנים
הכנה והצבת החיישנים
הכנה והצבת החיישנים

עכשיו אנחנו הולכים להכין את ה- IR LED והמקלט. בתמונת הטבלה ניתן למצוא את המיקומים שבהם יש למקם את ה- RPi והחיישנים.

אך ראשית עלינו להכין את החיווט:

  1. וודא שאתה מודד את כמות החוט הדרושה ממיקום ה- RPi/קרש הלוח למיקום החיישן
  2. הלחם את סיכות מקלט ה- IR לקצה אחד של החוט (COM/GND/V+)
  3. הלחם את חלקי המחבר הזכר בקצה השני של החוט

כעת אנו הולכים להכין את הטבלה:

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

שלב 5: הכנה והצבה של מודול המטריקס

הכנה והצבה של מודול המטריקס
הכנה והצבה של מודול המטריקס

בשלב הבא אנו הולכים לחבר את 2 מודולי מטריצת ה- LED

הערה:

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

להכנת החוטים:

  1. מדוד את החוט מלוח הלחם לכיוון החלק העליון של השולחן
  2. הלחם כמה מחברים נקביים לקצה הראשון של החוט
  3. הלחם כמה מחברים זכרים לקצה השני של החוט

הצבת המטריצה:

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

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

שלב 6: הפיכתו ל- IoT

הפיכתו ל- IoT
הפיכתו ל- IoT

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

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

בשלבים הבאים נתייחס לדברים הבאים:

  • הגדרת ה- Raspberry Pi
  • הכנת מסד נתונים לאחסון
  • יצירת האתר
  • לשים את זה ברשת

בשלב זה, אם אתה מכיר git, אני ממליץ לך ליצור מאגר ב- GitHub/GitLab כדי לעקוב אחר הקבצים שלך. אם אינך יכול ליצור תיקיה בעלת מבנה זהה לתמונה.

הפרויקט המלא יהיה זמין בקרוב ב- GitHub. עם זאת קיים קובץ rar זמני עם כל הקבצים הדרושים.

שלב 7: חיבור ה- Raspberry Pi

בשלב הבא אנו הולכים להתקין את סביבת הפטל פטל, לשם כך עליך לבצע את השלבים הבאים:

  • התחבר באמצעות SSH ל- Rasberry Pi שלך (אתה יכול להשתמש ב- PuTTY)
  • צור תיקיה (פרוייקט mkdir לדוגמה) ועבור לתיקייה זו באמצעות הפקודה cd
  • צור סביבת Python וירטואלית בתיקייה זו באמצעות הפקודה python3 -m venv-system-site-packages env
  • הפעל את המתורגמן הווירטואלי באמצעות הפקודה source/env/bin/activ
  • התקן את החבילות מתוך requirements.txt באמצעות הפקודה python -m pip להתקן את שם החבילה
  • העבר את הקבצים מהקובץ project_example.rar שסופק בעבר דרך SSH בתיקיית הפרויקט שלך

עכשיו אתה אמור להיות מסוגל להריץ את הפרויקט המלא ב- Raspberry Pi שלך. אני ממליץ לך להשתמש ב- Python IDE כמו PyCharm המאפשר לך להשתמש בך כדי לבצע איתור באגים מהמתורגמן המרוחק שלך באמצעות SSH ולהעלות שינויים ישירות במידת הצורך.

שלב 8: הגדרת מסד הנתונים

הגדרת מסד הנתונים
הגדרת מסד הנתונים

כעת עליך להקים מסד נתונים בסיסי ביותר, המבוסס על מודל זה.

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

לאחר שתסיים תוכל לייצא dump של מסד הנתונים שלך ולהעלות אותו ל- RPi שלך ולאחר מכן לבצע אותו עם sudo mariadb <pathtofile/file.sql

שלב 9: יצירת האתר

יצירת האתר
יצירת האתר
יצירת האתר
יצירת האתר
יצירת האתר
יצירת האתר

לאחר מכן תוכל לנתח (ולהשתמש) בקוד המסופק בקובץ project_example.rar.

הקובץ הראשי הוא Flask.py שהוא הלחם והחמאה של הפרויקט הזה:

  • מפעיל אפליקציה Flask-SocketIO המטפלת בתמיכה האחורית של האתר
  • יוצר חיבור בין מסד הנתונים לבקבוק
  • מספק אימות התחברות ורישום משתמשים
  • מספק את הקוד הדרוש כיצד משחק משחק משתמש ב- socketio לעדכון האתר בזמן אמת במהלך המשחק
  • מכניס את תוצאות המשחק למאגר הנתונים

בתיקיות הסטטיות והתבניות תוכל למצוא את HTML/CSS/JS המספקות את החלק הקדמי של האתר. אל תהסס לשנות אלה בהתאם לרצונך.

שלב 10: התחברות לרשת העולמית

כדי לחבר את האתר שלנו לרשת נשתמש ב- nginx ו- uwsgi. בדוגמת הפרויקט תוכל למצוא את הקבצים הדרושים בתיקיית conf.

קודם כל עליך לעדכן את הקבצים הבאים:

  • ב- uwsgi-flask.ini אתה צריך לשנות את הנתיב של הפרמטר virtualenv למתורגמן שלך
  • ב- project1-flask.service עליך לעדכן את החלק [Service] של הקובץ עם האישורים והנתיבים שלך לקבצים המשויכים
  • בקובץ nginx עליך לעדכן את השרת ואת המיקום / הנתיב לשקע המשויך שלך

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

  • me@my-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1
  • me@my-rpi: ~/project1 $ sudo rm/etc/nginx/sites-enabled/defaul t
  • me@my-rpi: ~/project1 $ sudo ln -s/etc/nginx/sites-available/project1/etc/nginx/sites-enabled/project1
  • me@my-rpi: ~/project1 $ sudo systemctl הפעלה מחדש של nginx.service

לבסוף עליך להוסיף את השירותים המותאמים אישית לתיקיית המערכת שלך, זוהי דוגמה כיצד לעשות זאת:

  • me@my-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
  • me@my-rpi: ~/project1 $ sudo systemctl daemon-reload
  • me@my-rpi: ~/project1 $ sudo systemctl התחל project1-*
  • me@my-rpi: ~/project1 $ sudo systemctl status project1-*

אם אתה רוצה ששרת האינטרנט יתחיל באתחול של פטל הפאי שלך, עליך להשתמש בפקודת שירות sudo systemctl enable project1-*.

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

שלב 11: סיום

מסיים
מסיים

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

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

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

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

מוּמלָץ: