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

מזרקת מים ללא מגע: 9 שלבים (עם תמונות)
מזרקת מים ללא מגע: 9 שלבים (עם תמונות)

וִידֵאוֹ: מזרקת מים ללא מגע: 9 שלבים (עם תמונות)

וִידֵאוֹ: מזרקת מים ללא מגע: 9 שלבים (עם תמונות)
וִידֵאוֹ: תפסתי אותה על חםםםם!!!!!! 2024, יולי
Anonim
מזרקת מים ללא מגע
מזרקת מים ללא מגע

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

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

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

אספקה

רכיבים

- 1x RaspberryPi (השתמשתי בגרסה הרביעית אך גרסאות ישנות יותר עשויות לעבוד גם כן)- טרנזיסטור S8050 1x או טרנזיסטור PN2222 יכול לעבוד גם כן- 1x פוטוזיסטור- 1x HC-SR04 (חיישן מרחק אולטראסוני)- 1x RFID-RC522- 3x שונה צבעי נוריות (כחול, צהוב, אדום)- 1x LCD1602- 1x זמזם פעיל- 1x PCF8574- 1x MCP3008- 1x משאבת מים (נעשה שימוש במשאבה פריסטלטית 12V, קישור לפריט זה)

- 1x ספק כוח DC (12v, 600mAh)- 1x לבנים חשמליים עם 3 נקודות- 3x לוחות לחם (סביר להניח שתשתמשו פחות)- T-cobbler עבור סיכות RaspberryPi GPIO- כבל T-cobbler (לחיבור בין pi לסנדלר)

חומרים וכלים בשימוש

- מקדחה עם המקדחים הבאים:

- 4 מ"מ (לקדוח חורים לברגים) - 15 מ"מ (לקדוח חורים לחיישן המרחק)

- כל מברג- 30 ברגים באורך 45 מ"מ- 6 ברגים של 20 מ"מ- 2 צירים לדלת- צלחת MDF בסביבות 130 ס"מ על 80 ס"מ- כמה קבצים

שלב 1: הרכבת המעגל

הרכבת המעגל
הרכבת המעגל
הרכבת המעגל
הרכבת המעגל
הרכבת המעגל
הרכבת המעגל

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

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

הוספתי את לוח הלוח ואת התצוגות הסכימטיות של המעגל להלן.

שלב 2: הגדרת ה- RaspberryPi שלנו

כדי להתקין את RaspberryPi שלנו, נוריד את תוכנת ההדמיה מאתר Raspberry, באמצעות זה תוכל להוריד את גרסת ה- Raspbian שאתה רוצה ולדמיין עבורך את כרטיס ה- SDCARD שלך. לאחר שכלי זה ביצע את עבודתו תוכל לפתוח את ה- SDCARD בסייר Windows, תוכל לראות את מחיצת האתחול של RaspberryPi שלך. כאן נמצא קובץ בשם cmdline.txt (אל תפתח קובץ זה בפנקס הרשימות, פתח אותו בפנקס רשימות ++ או כל IDE אחר). נוסיף ip = 169.254.10.1 לסוף קובץ זה כדי לוודא שנוכל להתחבר למכשיר שלנו באמצעות אתרנט (ודא שלא תוסיף ENTERS בסוף הקובץ או שתתקל בבעיות).

עכשיו אתה יכול להכניס את ה- SDCARD שלך ל- RaspberryPi ולאתחל אותו, חבר את ה- Pi למחשב שלך והשתמש ב- Putty כדי להתחבר ל- Pi באמצעות SSH. אני משתמש בפקודה הבאה כדי להתחבר ל- Pi שלי במקום להשתמש במרק. "ssh [email protected]" עלול להיגמר הזמן הקצוב, לכן יש להתאזר בסבלנות ולחכות שה- Pi יאתחל. לאחר שתתבקש להזין סיסמה נמלא את סיסמת ברירת המחדל של "פטל". הקפד לשנות סיסמה זו לאחר הכניסה כדי למנוע מכל אדם עם כוונה רעה לגשת ל- Raspberry Pi שלך.

כעת נקבע את תצורת ה- Pi שלנו בכדי לספק את הפונקציונליות הדרושה לקוד שלנו. השתמש ב- "sudo raspi-config" כדי לפתוח את תפריט התצורה ובכאן נלך לאפשרויות ממשק.

מתחת לכאן נחליף את האפשרויות הבאות:- SPI- I2C

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

חבילות: (הפעל את הפקודות לפי הסדר כפי שמופיעות כאן)

להלן כדי לקבל את העדכונים האחרונים עבור עדכון Pi- sudo apt שלנו && apt upgrade -y

התקן את שרת MySQL ואת שרת האינטרנט שלנו- sudo apt install mariadb-server apache2

אני אשתמש ב- MySQL Workbench כדי להתקין את מסד הנתונים בהמשך מדריך זה, אם אינך משתמש בזה ומעדיף phpmyadmin תוכל להתקין זאת באמצעות הפקודה הבאה, אתה רשאי להשתמש בכל לקוח MySQL אחר כל עוד אתה. מסוגלים לייבא כראוי את מסד הנתונים.- sudo apt install phpmyadmin

לאחר שעשית את כל האמור לעיל עלינו ליצור משתמש עבור מסד הנתונים שלנו. השתמש ב- "sudo mysql -u root" כדי להיכנס לשרת MySQL שלך, כאן ניצור משתמש בשם db_admin עם הסיסמה המתאימה שלו, שמור סיסמה זו צוינה איפשהו להמשך ההוראות.תענק את כל ההוראות ב *. * ל- "db_admin"@"%" המזוהה על ידי "yourPasswordHere" עם אופציית מענק;

השתמש בפקודה "\ q" ליציאה ממסוף MySQL.

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

sudo pip3 להתקין Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

כמו גם את חבילות MySQL החיבור הבאות, חבילות פייתון התקנת python3 -mysql.connector -y

אם הכל הלך כשורה, כעת תוכל לבקר ב- Pi שלך בדפדפן האינטרנט שלך עם הכתובת הבאה

שלב 3: הגדרת ה- backend

הגדרת ה- backend
הגדרת ה- backend

כאן אני אסביר כיצד אתה יכול להתקין את ה- backend בעצמך, קודם כל הורד את קובץ ה- rar מלמטה, בטל אותו למדריך זמני כלשהו. התחבר ל- RaspberryPi שלך באמצעות FileZilla או WinSCP עם האישורים הבאים:

IP: 169.254.10.1 משתמש: piPassword: פטל (אם שינית את הסיסמה עשה זאת גם כאן)

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

שמור על תוכנית FTP פתוחה לשלב הבא!

כעת פתח את שורת הפקודה שוב עם חיבור ה- SSH שלך מכיוון שנצטרך לבצע מספר שינויים בשרת האינטרנט כדי שהממשק הקדמי יוכל לתקשר עם הקצה האחורי. נפתח את קובץ ברירת המחדל של Apache2 ולשנות אותו מעט: sudo nano /etc/apache2/sites-available/000-default.conf

הוסף את השורות הבאות למטה DocumentRoot בקובץ התצורה שפתחנו זה עתה: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

אתה יכול להסתכל על התמונה המצורפת לדוגמא.

שלב 4: הגדרת החזית

לפני העברת הקבצים שלנו נצטרך לעשות משהו לפני שנוכל להתחיל להעביר את קבצי החזית שלנו. פתח את שורת הפקודה שלך עם חיבור SSH שיצרת בעבר והשתמש בפקודה שלהלן כדי לעבור למשתמש הבסיס של RaspberryPi שלנו: "sudo su -"

לאחר מכן נוכל לשנות את הסיסמה של משתמש השורש שלנו באמצעות הפקודה הבאה: "passwd" פעולה זו תבקש ממך להזין סיסמה חדשה, לאחר שתעשה זאת תוכל לחזור לתוכנית ה- FTP שלך ולהיכנס עם אישורי הבסיס שלך:

IP: 169.254.10.1 משתמש: rootPassword:

הורד את קובץ ה- rar מלמטה ופרק אותו בתיקייה זמנית, תוכל להעביר את הקבצים האלה ל- RaspberryPi שלך לספרייה הבאה/var/www/html/, לאחר שתעשה זאת תוכל לבקר בחזית ה- http:/ /169.254.10.1, אינך יכול עדיין לקיים אינטראקציה מכיוון שה- backend עדיין לא פועל, אראה לך בהמשך המדריך כיצד לעשות זאת.

שלב 5: ייבוא מסד הנתונים לפרויקט שלנו

ייבוא מסד הנתונים לפרויקט שלנו
ייבוא מסד הנתונים לפרויקט שלנו
ייבוא מסד הנתונים לפרויקט שלנו
ייבוא מסד הנתונים לפרויקט שלנו

פתח את תוכנית ניהול שרת MySQL המועדפת עליך והתחבר ל- Raspberry Pi שלך עם האישורים שיצרנו בשלב 2.

הורד את המאגר של מסד הנתונים מלמטה וייבא אותו כרגיל, שולחן עבודה של MySQL היית עובר לקובץ> פתח סקריפט SQL ובחר את dump המאגר שהורדת. לאחר מכן הקש CTRL + SHIFT + ENTER וצריך להריץ את סקריפט ה- SQL ואת המבנה שכן יש ליצור את מסד הנתונים.

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

שלב 6: הפעלת הפרויקט שלנו

הפעלת הפרויקט שלנו
הפעלת הפרויקט שלנו
הפעלת הפרויקט שלנו
הפעלת הפרויקט שלנו

לפני שנוכל להפעיל את הפרויקט שלנו עלינו לשנות את אישורי מסד הנתונים בקובץ config.py, אם פעלת בדיוק לפי ההנחיות כפי שאמר במדריך זה תוכל למצוא אותן תחת /home/pi/Documents/Backend/src/config.py כאן עליך לשנות את האישורים של המשתנה db_config כך שיתאים לאלה שיצרנו קודם לכן עבור מסד הנתונים שלנו. הוספתי דוגמה למה שתראה בקובץ הזה למטה.

לאחר מכן נוסיף קובץ.service קובץ זה יוודא שהפרויקט שלנו יתחיל כאשר ה- RaspberryPi יתחיל, הקפד לשנות את הספרייה בהתאם למקום שבו התקנת את קבצי ה- backend. השתמש בפקודה הבאה ליצירת קובץ השירות: sudo nano /etc/systemd/system/dispenser.service פעולה זו תיצור קובץ שירות והעתק את הקוד להלן והדבק אותו לקובץ זה.

[יחידה] תיאור = מתקן מים לאחר = mysql.service

[Service] Type = simpleRestart = alwaysRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[התקן] WantedBy = multi-user.target

שנה את השורה שבה כתוב /home/pi/Documents/Backend/index.py למקום שבו התקנת את קבצי ה- backend שלך, אם לא תעשה זאת נכון הפרויקט לא יופעל כהלכה! אוסיף קובץ דוגמה למטה.

לאחר שעשית זאת ויצאת מעורך הטקסט נוכל לאפשר את השירות באמצעות הפקודות הבאות:- sudo systemctl daemon-reload- sudo systemctl אפשר dispenser- sudo systemctl start dispenser

ובתוספת אנו יכולים להריץ: מתקן סטטוס sudo systemctl זה יראה קצת מידע סביב השירות שלנו, אם הוא פעיל או לא, …

שלב 7: התיק

המקרה
המקרה
המקרה
המקרה
המקרה
המקרה
המקרה
המקרה

כל הכבוד שאנחנו כמעט שם, אוסיף כמה תמונות שיציגו במדויק את המידות בהן השתמשתי לפרויקט שלי, השתמשתי בלוחות MDF בעובי 18 מ"מ, ניתן להשתמש בעובי אחר. המארז שלי יכול לשמש קו מנחה לעיצוב שלך או שאתה יכול לשחזר את מה שהכנתי. (אם אתה משתמש בעובי שונה של MDF הציורים שלי כבר לא יאפשרו לך ליצור את העיצוב שלי, הקפד להתאים אותו!) הלוחות שהכנתי:- 2 לוחות בגודל 32 ס"מ על 42 ס"מ (לוחות צד)- פנל אחד של 24 ס"מ על ידי 32 ס"מ (צלחת תחתונה)- 2 לוחות בגודל 16 ס"מ על 24 ס"מ (צלחת קדמית בה נשאר LCD והצלחת השכנה)- פאנל אחד בגודל 28 ס"מ על 24 ס"מ (צלחת אמצעית מלפנים)- פנל אחד בגודל 30 ס"מ על 24 ס"מ (צלחת עליונה)

שלב 8: התפעל מהמוצר הסופי

להעריץ את המוצר הסופי
להעריץ את המוצר הסופי
להעריץ את המוצר הסופי
להעריץ את המוצר הסופי

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

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

שלב 9: הבעיות

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

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

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

מוּמלָץ: