תוכן עניינים:
- שלב 1: שלב 1: מה אני צריך?
- שלב 2: שלב 2: יצירת סכמטי של מסד נתונים
- שלב 3: שלב 3: קידוד
- שלב 4: שלב 4: לשים את הקוד על פטל הפטל שלי
- שלב 5: שלב 5: יצירת דיור
- שלב 6: שלב 6: הכנסת הכל לדיור
וִידֵאוֹ: סדר המפתחות: 6 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
אני לומד כרגע NMCT בהווסט. במשך הסמסטר האחרון שלנו היינו צריכים להכין פרויקט. אז עשיתי Keysorter.
מה זה עושה?
יש לנו הרבה מפתחות לרכב בבית וכולם דומים. אז עשיתי למפתח Keys כדי לפתור את הבעיה הזו.
הוא צריך לסרוק מפתח באמצעות RFID ולתת לו מקום בתיבה. אם אסרוק שוב את אותו מפתח הוא יראה את מקומו שהוקצה בעבר. יש גם כפתור להצגת המכונית השטופה האחרונה.
זה יופעל על פי פטל שיש לו גם אפשרות להוסיף דף אינטרנט באמצעות Flask.
בדף אני אמור להיות מסוגל להסתכל על כל המפתחות, להוסיף שם למפתח ולהסיר מפתח.
שלב 1: שלב 1: מה אני צריך?
התחלתי ביצירת רשימה של רכיבים שאצטרך כדי שהדבר הזה יעבוד.
רכיבים:
- פאי פטל
- 2 x מרשם משמרות (74hc595)
- כפתור 3 x
- 9 x LED ירוק
- סורק RFID (MFRC522)
- נגד 12 x 220 אוהם
אחר כך הכנסתי את כל זה לסכמטי הטירוף שלי.
ברגע שסיימתי את זה הצלחתי בחיים האמיתיים.
שלב 2: שלב 2: יצירת סכמטי של מסד נתונים
כדי לשמור את הנתונים שלי הייתי צריך ליצור מסד נתונים שיכול לרוץ על ה- Pi שלי.
הכנתי אותו ב- Mysql.
מכונית שולחן:
- תעודת זהות לרכב
- תעודת זהות של משתמש
- מותג (מותג רכב)
- סוּג
- נשטף לאחרונה
- מַפְתֵחַ
- RFID_ID
שלב 3: שלב 3: קידוד
כשכל זה היה מוכן יכולתי להתחיל לקודד.
התחלתי בהכנת הקוד לחיישן שלי ב- Python 3.5.
להורדת הקוד לחץ כאן.
השתמש בקישור כדי לשכפל את הפרויקט.
שלב 4: שלב 4: לשים את הקוד על פטל הפטל שלי
התקנת חבילות
ראשית התקנתי את כל החבילות הדרושות לי כדי לגרום לזה לעבוד.
me@my-rpi: ~ $ sudo apt update
me@my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
סביבה וירטואלית
me@my-rpi: ~ $ python3 -m pip להתקין-שדרוג pip setuptools גלגל virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 me@my-rpi: ~/project1 $ python3 -m venv --system- חבילות אתר env me@my-rpi: ~/project1 $ source env/bin/activ (env) me@my-rpi: ~/project1 $ python -m pip התקן את mysql-connector-python argon2-cffi Flask Flask-HTTPAuth בקבוק- MySQL mysql-connector-python passlib
העלה את הפרויקט לפי שלך באמצעות pycharm
פתח את Pycharm ועבור אל VCS> ייבוא מבקרת גרסאות> Github ושבט את קובץ github שלי.
שים את תצורת הפריסה לספרייה שיצרת זה עתה. (/home/me/project1). לחץ על החל!
עבור אל הגדרות המתורגמן ובחר את הסביבה הווירטואלית שיצרת זה עתה. (/home/me/project1/env/bin/pyhon)
בדוק אם מיפוי הנתיבים נכון.
כעת תוכל להעלות את הקוד לספרייה שלך באמצעות Pycharm.
מאגר מידע
בדוק אם מסד הנתונים פועל. אתה אמור לקבל משהו כזה:
me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - שרת מסד הנתונים של MariaDB טעון: טעון (/lib/systemd/system/mariadb.service; מופעל; הגדרת קביעות מראש של הספק: מופעל) פעיל: פעיל (פועל) מאז השמש 2018-06-03 09:41:18 CEST; לפני יום אחד לפני 4 שעות PID ראשי: 781 (mysqld) סטטוס: "לוקח את בקשות ה- SQL שלך כעת …" משימות: 28 (מגבלה: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld
03 ביוני 09:41:13 my-rpi systemd [1]: הפעלת שרת מסד הנתונים של MariaDB … 03 ביוני 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [הערה] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03 ביוני 09:41:18 my-rpi systemd [1]: הפעל את שרת מסד הנתונים של MariaDB.
me@my -rpi: ~ $ ss -lt | grep mysql האזן 0 80 127.0.0.1:mysql *: *
צור משתמשים והוסף את מסד הנתונים
me@my-rpi: ~ $ sudo mariadb
ברגע שאתה במאגר הנתונים עשה זאת.
צור משתמש 'project1-admin'@'localhost' מזוהה על ידי 'adminpassword'; צור משתמש 'project1-web'@'localhost' מזוהה על ידי 'סיסמת אינטרנט'; צור משתמש 'project1-sensor'@'localhost' המזוהה על ידי 'sensorpassword';
צור פרויקט DATABASE1;
להעניק את כל ההפרטים על פרויקט 1.* ל- 'project1-admin'@'localhost' עם אופציית GRANT; GRANT SELECT, INSERT, UPDATE, DELETE on project1.* ל- 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE on project1.* ל- 'project1-sensor'@'localhost'; זכויות הדחה;
CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) Default NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8
צור טבלה `מכונית` (` idCar` int (11) NOT NULL AUTO_INCREMENT, `idUser` int (11) NOT NULL,` Brand` varchar (45) DEFAULT NULL, `Type` varchar (45) DEFAULT NULL,` LastWashed` datetime DEFAULT NULL, `RFID_Number` varchar (15) DEFAULT NULL,` Key` varchar (5) Default NULL, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`), CONSTRAINT `fk_C מפתח זר (`idUser`) הפניות` user` (`idUser`) על מחיקת פעולה ללא עדכון אין פעולה) ENGINE = InnoDB AUTO_INCREMENT = 4 Default CHARSET = utf8
חבר את מסד הנתונים שלך ל- Pycharm
לחץ על כרטיסיית מסד הנתונים בצד ימין. אם אין לך כרטיסייה פתוחה בצע זאת: תצוגה> כלי Windows> מסד נתונים.
לחץ על הוסף חיבור. בחר מקור נתונים> MySQL (אם יש כפתור להורדת הורדה לחץ עליו.)
עבור אל SSH/SSL ובדוק את SSH. מלא את פרטי הכניסה שלך ל- Raspberry pi (מארח/משתמש/סיסמה). הפורט צריך להיות 22 ואל תשכח לבדוק את הסיסמה זכור.
תחזור לגנרל. המארח צריך להיות מארח מקומי ומסד הנתונים צריך להיות פרוייקט 1. מלא את האישורים של project1-admin ובדוק את החיבור.
אם החיבור תקין, עבור לכרטיסייה סכימות וודא שפרויקט 1 מסומן.
בדוק אם מסד הנתונים נכון
me@my-rpi: ~ $ echo 'הצג טבלאות;' | mysql project1 -t -u project1-admin -p הזן סיסמה: + --------------------------- + | Tables_in_project1 | + ---------------------------+ | חיישן | | משתמשים | +---------------------------+
קבצי תצורה
בספריית conf תמצא 4 קבצים. עליך לשנות את שמות המשתמש לשם המשתמש שלך.
Systemd
כדי להתחיל הכל עליך לבצע פקודות אלה.
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 סטטוס project1-* ● project1- flask.service-מופע uWSGI לשרת ממשק אינטרנט project1 טעון: טעון (/etc/systemd/system/project1-flask.service; מושבת; הגדרת קביעות מראש של ספק: מופעלת) פעילה: פעילה (פועלת) מאז שני 2018-06-04 13: 14:56 CEST; לפני 1 שניות PID ראשי: 6618 (uwsgi) משימות: 6 (גבול: 4915) CGroup: /system.slice/project1-flask.service ├─6618/usr/bin/uwsgi --ini/home/me/project1/conf/ uwsgi-flask.ini ├─6620/usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621/usr/bin/uwsgi --ini/home/me/project1/ conf/uwsgi-flask.ini ├─6622/usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623/usr/bin/uwsgi --ini/home/me/ project1/conf/uwsgi-flask.ini └─6624/usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini
יוני 04 13:14:56 my-rpi uwsgi [6618]: ממופה 383928 בתים (374 KB) עבור 5 ליבות יוני 04 13:14:56 my-rpi uwsgi [6618]: *** מצב תפעולי: עיבוד מוקדם ***
● project1-sensor.service-שירות חיישן פרוייקט 1 טעון: טעון (/etc/systemd/system/project1-sensor.service; מושבת; ספק מוגדר מראש: מופעל) פעיל: פעיל (פועל) מאז שני 2018-06-04 13: 16:49 CEST; לפני 5 שניות PID ראשי: 6826 (פייתון) משימות: 1 (גבול: 4915) קבוצה: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py
4 ביוני 13:16:49 my-rpi systemd [1]: התחיל שירות חיישן של פרויקט 1. 4 ביוני 13:16:49 my-rpi python [6826]: DEBUG: _ main _: חיישן שמור process_count = b'217 / n 'למסד הנתונים יוני 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: חיישן שמור process_count = b'218 / n 'למסד הנתונים
nginx
me@my-rpi: ~/project1 $ ls -l/etc/nginx/sites-*
/etc/nginx/sites-available: סה כ 4 -rw-r-r-שורש שורש אחד 2416 ברירת מחדל 12 ביולי 2017
/etc/nginx/sites-enabled: total 0 lrwxrwxrwx 1 root root 34 ינואר 18 13:25 ברירת מחדל->/etc/nginx/sites-available/default
כדי להפוך הכל לברירת המחדל בצע פקודות אלה.
me@my-rpi: ~/project1 $ sudo cp conf/nginx/etc/nginx/sites-available/project1me@my-rpi: ~/project1 $ sudo rm/etc/nginx/sites-enabled/default 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
התחלה אוטומטית
בואו לוודא שהכל יתחיל באופן אוטומטי.
עבור לספריית conf והפעל את הפקודות הסופיות האלה וסיימת!
me@my-rpi: ~/project1 $ sudo systemctl אפשר project1-*
אם אתה מפעיל מחדש את ה- Pi שלך הוא צריך להתחיל אוטומטית.
שלב 5: שלב 5: יצירת דיור
מִחזוּר
כדי להפוך את הדיור שלי השתמשתי בארון ישן שאמא שלי הייתה זורקת.
בסיס
ניסרתי 4 קרשים (34 ס"מ על 26 ס"מ). (אז זו קובייה מ 34 x 34 x 26).
בתחתית הוספתי פיסת עץ דקה כתחתית.
לוח עם לד
באמצע שמתי 2 חתיכות עץ קטנות מכל צד הן 9 ס מ מהחלק העליון. זה מחזיק את הלוח שבו יושבים הלדים.
הלוח עם הלדים הוא לוח קטן (32 ס"מ על 32 ס"מ).
קידחתי 9 חורים כדי שהלדים ייצאו.
חֲלוּקָה
עשיתי את החלוקה עם אותו חומר כמו החלק התחתון והקרש עם הלדים.
4 חלקים כל אחד עם חתך בגודל 10.3 ס"מ (9 ס"מ על 31 ס"מ). עכשיו אני יכול להרכיב אותם.
לחצנים וקורא RFID
עשיתי חור בבסיס להכניס את קורא ה- RFID והכפתורים שלי. עבור ה- RFID הנחתי לפניו פיסת לוח דקה כדי שייראה נקי יותר.
שלב 6: שלב 6: הכנסת הכל לדיור
זה תלוי איך אתה רוצה לעשות את זה. אני אישית השתמשתי בהרבה כבלים בלי הלחמה מכיוון שאני רוצה להיות מסוגל לעשות שימוש חוזר ב- Raspberry Pi שלי.
הדבקתי את הלייד במקום והדבקתי את קורא ה- RFID ולוחות הלחם למארז.
וככה אתה עושה Keysorter!
מוּמלָץ:
כספת המפתחות של אנג'לה: 5 שלבים
כספת המפתחות של אנג'לה: בהשראת: https://www.instructables.com/id/Key-Safe/ כספת מובנית היטב לאחסון החפצים האישיים שלך. ביצעתי מספר התאמות המבוססות על הגרסה המקורית. על ידי הוספת 3 סיסמאות נוספות, " A ", " B ", " C " ו &
סדר מטבעות אלקטרוניים: 7 שלבים (עם תמונות)
סדר מטבעות אלקטרוניים: לפני הרבה מאוד זמן, כשעוד היה אפשר ללכת לבית הספר, הגענו לרעיון מעניין לייצר מכשיר שעובד בצורה פשוטה למדי - אחרי שזרקנו את הכסף הנכון, אנחנו יוציא מוצר ספציפי. אני לא יכול לחשוף
סדר כרטיס למכונת כרטיסי מסחר (עדכון 2019-01-10): 12 שלבים (עם תמונות)
סדר כרטיסים למכונת כרטיסי מסחר (עדכון 2019-01-10): מיון כרטיסים למכונת כרטיסי מסחר ניתן למצוא את יומן השינויים בשלב האחרון. הרקע הסברתי כבר את המוטיבציה של הפרויקט שלי במאמר מזין הכרטיסים. אבל בקיצור, ילדיי ואני צברנו כמות גדולה של כרטיס מסחר
אלקסה, איפה המפתחות שלי ?: 4 שלבים
אלקסה, איפה המפתחות שלי ?: אלקסה מתאימה במיוחד למשימות אחזור מידע ולניטור נכסים באמצעות רשתות ביתיות אלחוטיות. זה טבעי לשקול לשים חפצי ערך על הרשת לאחזור מהיר. אנו פורצים משואות Bluetooth זולות באנרגיה נמוכה לרשת
סדר האשפה CPE 133: 14 שלבים
סדר האשפה CPE 133: לשיעור CPE 133 שלנו ב- Cal Poly נאמר לנו ליצור פרויקט VHDL/Basys 3 שיעזור לסביבה והיה פשוט מספיק כדי שנוכל ליישם אותו עם הידע החדש שלנו בנושא עיצוב דיגיטלי. הרעיון מאחורי הפרויקט שלנו שבאופן כללי