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

סדר המפתחות: 6 שלבים
סדר המפתחות: 6 שלבים

וִידֵאוֹ: סדר המפתחות: 6 שלבים

וִידֵאוֹ: סדר המפתחות: 6 שלבים
וִידֵאוֹ: בין סיגופים לשמחה - מסילת ישרים שיעור 6 - הרב אהרן לוי 2024, יולי
Anonim
סדר מפתחות
סדר מפתחות
סדר מפתחות
סדר מפתחות

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

מה זה עושה?

יש לנו הרבה מפתחות לרכב בבית וכולם דומים. אז עשיתי למפתח Keys כדי לפתור את הבעיה הזו.

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

זה יופעל על פי פטל שיש לו גם אפשרות להוסיף דף אינטרנט באמצעות Flask.

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

שלב 1: שלב 1: מה אני צריך?

שלב 1: מה אני צריך?
שלב 1: מה אני צריך?
שלב 1: מה אני צריך?
שלב 1: מה אני צריך?

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

רכיבים:

  • פאי פטל
  • 2 x מרשם משמרות (74hc595)
  • כפתור 3 x
  • 9 x LED ירוק
  • סורק RFID (MFRC522)
  • נגד 12 x 220 אוהם

אחר כך הכנסתי את כל זה לסכמטי הטירוף שלי.

ברגע שסיימתי את זה הצלחתי בחיים האמיתיים.

שלב 2: שלב 2: יצירת סכמטי של מסד נתונים

שלב 2: הכנת סכמטי מסד נתונים
שלב 2: הכנת סכמטי מסד נתונים

כדי לשמור את הנתונים שלי הייתי צריך ליצור מסד נתונים שיכול לרוץ על ה- Pi שלי.

הכנתי אותו ב- Mysql.

מכונית שולחן:

  • תעודת זהות לרכב
  • תעודת זהות של משתמש
  • מותג (מותג רכב)
  • סוּג
  • נשטף לאחרונה
  • מַפְתֵחַ
  • RFID_ID

שלב 3: שלב 3: קידוד

שלב 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: יצירת דיור

שלב 5: בניית דיור
שלב 5: בניית דיור
שלב 5: בניית דיור
שלב 5: בניית דיור
שלב 5: בניית דיור
שלב 5: בניית דיור
שלב 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!

מוּמלָץ: