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

CleanBot מאת גיום מוריון: 8 שלבים
CleanBot מאת גיום מוריון: 8 שלבים

וִידֵאוֹ: CleanBot מאת גיום מוריון: 8 שלבים

וִידֵאוֹ: CleanBot מאת גיום מוריון: 8 שלבים
וִידֵאוֹ: Новинка робот-мойщик окон Cleanbot Ultrasprey 2024, נוֹבֶמבֶּר
Anonim
CleanBot מאת גיום מוריון
CleanBot מאת גיום מוריון
CleanBot מאת גיום מוריון
CleanBot מאת גיום מוריון

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

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

שלב 1: איסוף החלקים

איסוף החלקים
איסוף החלקים
איסוף החלקים
איסוף החלקים
איסוף החלקים
איסוף החלקים
איסוף החלקים
איסוף החלקים

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

רשימת החלקים תיכלל כקובץ, כך שתוכל לחפש בקלות את החלקים הדרושים לך.

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

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

רשימת חלקים:

  • Raspberry Pi 3 עם לפחות 8GB MicroSD Class 10 ומארז;
  • פטל פי סנדלר וקרש לחם;
  • Arduino Uno או דומה (עדיף גרסה לא סינית עם ADC הגון, לחלק מהסינים יש בעיות AREF) עם סוג של מארז;
  • כבל אתרנט;
  • ואקום רובוט (שבור);
  • 3x מודולים אולטרסוניים HC-SR04;
  • 1x מודול חיישן אולם;
  • מספר נגדים בערכים שונים;
  • LDR;
  • 6 x 18650 סוללות ליתיום + מחזיקי תאים ל 12 וולט (עדיף להשתמש בסוללות חדשות או אפילו טוב יותר להשתמש בסוללות LiPo, אלה יחזיקו מעמד הרבה יותר זמן);
  • 18650 (או כל סוג סוללה שתשתמש) 12V 3-תאי הטעינה;
  • כמה לוחות DIY PCB להלחמת הרכיבים שלך;
  • יריעה מפלסטיק פוליאוריטן;
  • מחשב נייד / שולחן עבודה.

רשימת כלים:

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

רשימת תוכנות (אופציונלי):

  • Adobe XD: wireframing וליצור אב טיפוס;
  • פריצה: יצירת ערכת חשמל;
  • PyCharm Professional: Python IDE עם יכולות שימוש בפריסה ומתורגמן מרחוק;
  • מרק: חיבור ssh מהיר וקל עם Pi;
  • Etcher.io: כלי קל להבהב תמונה מסוג Raspbian לכרטיס SD;
  • Win32DiskImager: כלי קל ליצירת תמונה מתוך התקנה קיימת של Raspbian;
  • מתכנת פנקס רשימות: כלי פשוט בו תוכל להשתמש כדי לערוך בבטחה את הקובץ /boot/cmdline.txt.

שלב 2: ריסוס ועיצוב הממשק

ריסוס ועיצוב הממשק
ריסוס ועיצוב הממשק
ריסוס ועיצוב הממשק
ריסוס ועיצוב הממשק
ריסוס ועיצוב הממשק
ריסוס ועיצוב הממשק
ריסוס ועיצוב הממשק
ריסוס ועיצוב הממשק

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

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

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

שלב 3: יצירת מסד הנתונים

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

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

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

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

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

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

שלב 4: חיבור החלקים יחד

חיבור החלקים ביחד
חיבור החלקים ביחד
חיבור החלקים ביחד
חיבור החלקים ביחד

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

שלב 5: הגדרת ה- Pi Raspberry

הגדרת ה- Raspberry Pi
הגדרת ה- Raspberry Pi

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

כדי להתקין את מערכת ההפעלה, פשוט הורד את Etcher, זהו כלי GUI בכדי לכתוב את התמונה לכרטיס המיקרו SD שלך במהירות ובקלות.

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

ip = 169.254.10.1

רק וודא שלא תיצור שורה חדשה, הוסף זאת לסוף השורה!

לאחר מכן, חזור לשורש תיקיית האתחול, וצור קובץ בשם ssh. אל תוסיף הרחבה, זה יבטיח ששרת SSH יופעל בכל פעם שה- Pi שלך מופעל. עכשיו פשוט הכנס את כרטיס ה- SD ל- Pi שלך, חבר מקור כוח מספיק ל- Pi והוסף כבל אתרנט בין ה- Pi למחשב שלך.

פתח מרק והקלד את כתובת ה- IP: 169.254.10.1. כעת לחץ על YES והתחבר, שם המשתמש המוגדר כברירת מחדל הוא pi והסיסמה היא פטל.

לאחר מכן, בצע את הפקודה הבאה כדי להתעדכן:

sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

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

sudo mkdir project1

cd project1 python3 -m pip להתקין -שדרוג pip setuptools גלגל virtualenv python3 -m venv -system -site -packages venv

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

כתיבת יישום האינטרנט
כתיבת יישום האינטרנט

לאחר חיבור כל חלק והגדרת ה- Raspberry Pi, התחלתי לכתוב את יישום האינטרנט הראשי שלי באמצעות Flask ו- Jinja2. Flask היא מסגרת backend קלה לשימוש עבור פייתון, ו- Jinja2 היא שפת התבניות בה השתמשתי. עם Jinja, אתה יכול ליצור קבצי HTML רגילים עם לולאות, אם מבנים וכן הלאה.

בעת קידוד ה- backend, כתבתי גם את הקצה הקדמי של האפליקציה, כולל HTML, CSS ו- JavaScript עבור כמה אלמנטים. השתמשתי בשיטת ITCSS ובסימון BEM עבור גיליונות הסגנונות שלי.

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

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

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

שלב 7: יצירת חתיכות לסיום המארז

יצירת חתיכות לסיום המארז
יצירת חתיכות לסיום המארז
יצירת חתיכות לסיום המארז
יצירת חתיכות לסיום המארז
יצירת חתיכות לסיום המארז
יצירת חתיכות לסיום המארז
יצירת חתיכות לסיום המארז
יצירת חתיכות לסיום המארז

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

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

הסוגר השני הוא תמיכה בחיישני האולטרסוני HC-SR04 שלי הממוקמים בחזית המכשיר.

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

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

שלב 8: הקוד

כדי להתקין את התוכנית, הורד את קובץ ה- code.zip ופתח אותו בספריית project1.

לאחר מכן, בצע פקודה זו במסוף ב- Raspbian או Putty:

sudo cp project1/conf/project-1*/etc/systemd/system/

sudo cp project1/conf/project1-*/etc/systemd/system/sudo systemctl daemon-reload sudo systemctl הפעל את project-1* sudo systemctl הפעל את project1* sudo systemctl הפעל מחדש nginx

לאחר מכן, פתח את מסד הנתונים שיצרת וצור משתמש חדש עם סיסמת hash מסוג Argon2. עכשיו אתה יכול להשתמש בתוכנית.

תהנה!

מוּמלָץ: