Cuprins:
- Pasul 1: Pasul 1: De ce voi avea nevoie?
- Pasul 2: Pasul 2: Realizarea unei scheme de baze de date
- Pasul 3: Pasul 3: Codificare
- Pasul 4: Pasul 4: Punerea codului Al pe Raspberry Pi
- Pasul 5: Pasul 5: Realizarea unei locuințe
- Pasul 6: Pasul 6: Punerea totul în carcasă
Video: Keysorter: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
În prezent studiez NMCT la Howest. Pentru ultimul nostru semestru a trebuit să realizăm un proiect. Așa că am făcut un Keysorter.
Ce face?
Avem o mulțime de chei auto acasă și toate seamănă. Așa că am creat un Keysorter pentru a rezolva această problemă.
Trebuie să scaneze o cheie prin RFID și să-i dea un loc în cutie. Dacă scanez din nou aceeași tastă, acesta va afișa locul atribuit anterior. Există, de asemenea, un buton pentru a afișa ultima mașină spălată.
Acest lucru va rula pe un Raspberry Pi, care are și opțiunea de a adăuga o pagină web prin Flask.
Pe pagină ar trebui să pot examina toate tastele, să adaug un nume la o cheie și să o șterg.
Pasul 1: Pasul 1: De ce voi avea nevoie?
Am început prin a face o listă de componente de care voi avea nevoie pentru ca acest lucru să funcționeze.
Componente:
- Raspberry pi
- 2 x registru Shift (74hc595)
- 3 x buton
- 9 x led verde
- Scanner RFID (MFRC522)
- 12 x rezistor 220 ohm
Apoi am pus toate acestea în schema mea plină de viață.
Odată ce am făcut acest lucru, am reușit în viața reală.
Pasul 2: Pasul 2: Realizarea unei scheme de baze de date
Pentru a salva toate datele mele, a trebuit să creez o bază de date care să poată rula pe Pi.
Am făcut-o în Mysql.
Masina de masa:
- Cod auto
- numele de utilizator
- Marca (marca automobilului)
- Tip
- Ultima spălare
- Cheie
- RFID_ID
Pasul 3: Pasul 3: Codificare
Când toate acestea au fost gata, am putut începe codificarea.
Am început prin a crea codul pentru senzorul meu în Python 3.5.
Pentru a descărca codul, faceți clic aici.
Utilizați linkul pentru a clona proiectul.
Pasul 4: Pasul 4: Punerea codului Al pe Raspberry Pi
Instalarea pachetelor
Mai întâi am instalat toate pachetele de care aveam nevoie pentru a face acest lucru.
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
Mediu virtual
me @ my-rpi: ~ $ python3 -m pip install --upgrade pip setuptools wheel virtualenvme @ my-rpi: ~ $ mkdir project1 && cd project1 me @ my-rpi: ~ / project1 $ python3 -m venv --system- site-pachete env me @ my-rpi: ~ / project1 $ source env / bin / activate (env) me @ my-rpi: ~ / project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib
Încărcați proiectul pe Pi utilizând pycharm
Deschideți Pycharm și accesați VCS> Import din Control versiuni> Github și clonați fișierul meu github.
Puneți configurarea implementării în directorul pe care tocmai l-ați făcut. (/ acasă / eu / proiect1). Apăsați aplicați!
Accesați setările pentru interpret și alegeți mediul virtual pe care tocmai l-ați creat. (/ home / eu / project1 / env / bin / pyhon)
Verificați dacă maparea căilor este corectă.
Acum puteți încărca codul în directorul dvs. utilizând Pycharm.
Bază de date
Verificați dacă baza de date rulează. Ar trebui să obțineți așa ceva:
me @ my-rpi: ~ $ sudo systemctl status mysql ● mariadb.service - server de baze de date MariaDB Încărcat: încărcat (/lib/systemd/system/mariadb.service; activat; presetare furnizor: activat) Activ: activ (rulează) de la Sun 2018-06-03 09:41:18 CEST; Acum 1 zi 4h PID principal: 781 (mysqld) Stare: „Luând cererile dvs. SQL acum …” Sarcini: 28 (limită: 4915) CGroup: /system.slice/mariadb.service └─781 / usr / sbin / mysqld
03 iunie 09:41:13 my-rpi systemd [1]: Pornirea serverului de baze de date MariaDB … 03 iunie 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Notă] / usr / sbin / mysqld (mysqld 10.1.26-MariaDB-0 + deb9u1) 03 iunie 09:41:18 my-rpi systemd [1]: A pornit serverul de baze de date MariaDB.
eu @ my-rpi: ~ $ ss -lt | grep mysql ASCULTĂ 0 80 127.0.0.1:mysql *: *
Creați utilizatori și adăugați baza de date
me @ my-rpi: ~ $ sudo mariadb
după ce vă aflați în baza de date, faceți acest lucru.
CREATE USER 'project1-admin' @ 'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web' @ 'localhost' IDENTIFIED BY 'webpassword'; CREAȚI UTILIZATOR 'project1-sensor' @ 'localhost' IDENTIFICAT DE 'sensorpassword';
CREATE DATABASE project1;
ACORDAȚI TOATE PRIVILEGII PE proiect1. * Către „project1-admin” @ „localhost” CU OPȚIUNE DE GRANT; GRANT SELECT, INSERT, UPDATE, DELETE ON project1. * TO 'project1-web' @ 'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1. * TO 'project1-sensor' @ 'localhost'; PRIVILEGII DE FLUSH;
CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, CHEIE PRIMARĂ (` idUser`)) MOTOR = InnoDB DEFAULT CHARSET = utf8
CREATE TABLE `car` (` 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, CHEIE PRIMARĂ (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`), CONSTRAINT `fk_Car_User CHEIE STRĂINĂ ("idUser") REFERINȚE "user" ("idUser") LA ȘTERGERE FĂRĂ ACȚIUNE LA ACTUALIZARE FĂRĂ ACȚIUNE) MOTOR = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8
Conectați-vă baza de date la Pycharm
Faceți clic pe fila bază de date din partea dreaptă. Dacă nu aveți o filă deschisă faceți acest lucru: Vizualizare> Instrument Windows> Baza de date.
Faceți clic pe adăugați conexiune. Alegeți Sursă de date> MySQL (Dacă există un buton descărcați driverul, apăsați-l.)
Accesați SSH / SSL și verificați SSH. Completați datele de conectare Raspberry pi (gazdă / utilizator / parolă). Portul ar trebui să fie 22 și nu uitați să verificați amintiți-vă parola.
Întoarce-te la General. Gazda ar trebui să fie localhost și baza de date ar trebui să fie project1. Completați acreditările de la project1-admin și testați conexiunea.
Dacă conexiunea este OK, accesați fila Scheme și asigurați-vă că proiectul1 este bifat.
Verificați dacă baza de date este corectă
me @ my-rpi: ~ $ echo 'arată tabele;' | mysql project1 -t -u project1-admin -pIntroduceți parola: + --------------------------- + | Tables_in_project1 | + --------------------------- + | senzor | | utilizatori | + --------------------------- +
Fișiere de configurare
În directorul conf veți găsi 4 fișiere. Ar trebui să schimbați numele de utilizator cu numele de utilizator.
Systemd
Pentru a porni totul trebuie să executați aceste comenzi.
me @ my-rpi: ~ / project1 $ sudo cp conf / project1 - *. service / etc / systemd / system /
me @ my-rpi: ~ / project1 $ sudo systemctl daemon-reoad me @ my-rpi: ~ / project1 $ sudo systemctl start project1- * me @ my-rpi: ~ / project1 $ sudo systemctl status project1- * ● project1- flask.service - instanță uWSGI pentru a deservi interfața web project1 Încărcat: încărcat (/etc/systemd/system/project1-flask.service; dezactivat; presetare furnizor: activat) Activ: activ (rulează) de luni, 2018-06-04 13: 14:56 CEST; Acum 1 s PID principal: 6618 (uwsgi) Sarcini: 6 (limită: 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 iun 13:14:56 my-rpi uwsgi [6618]: mapat 383928 octeți (374 KB) pentru 5 nuclee 04 iun 13:14:56 my-rpi uwsgi [6618]: *** MOD operațional: preforking ***
● project1-sensor.service - Serviciul senzorului Project 1 Încărcat: încărcat (/etc/systemd/system/project1-sensor.service; dezactivat; presetarea furnizorului: activat) Activ: activ (rulează) începând de luni 2018-04-04 13: 16:49 CEST; 5s în urmă PID principal: 6826 (python) Sarcini: 1 (limită: 4915) CGroup: /system.slice/project1-sensor.service └─6826 / home / me / project1 / env / bin / python / home / me / project1 /sensor/sensor.py
04 iunie 13:16:49 my-rpi systemd [1]: a început serviciul senzorului Project 1. 04 iun 13:16:49 my-rpi python [6826]: DEBUG: _ main _: senzor salvat process_count = b'217 / n 'în baza de date 04 iun 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Senzorul salvat process_count = b'218 / n 'în baza de date
nginx
me @ my-rpi: ~ / project1 $ ls -l / etc / nginx / sites- *
/ etc / nginx / sites-available: total 4 -rw-r - r-- 1 rădăcină rădăcină 2416 12 iulie 2017 implicită
/ etc / nginx / sites-enabled: total 0 lrwxrwxrwx 1 root root 34 Jan 18 13:25 default -> / etc / nginx / sites-available / default
Pentru ca totul să fie implicit, executați aceste comenzi.
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 restart nginx.service
Pornire automată
Să ne asigurăm că totul începe automat.
Mergeți la directorul conf și executați aceste comenzi finale și gata!
me @ my-rpi: ~ / project1 $ sudo systemctl enable project1- *
Dacă reporniți Pi-ul, acesta ar trebui să înceapă automat.
Pasul 5: Pasul 5: Realizarea unei locuințe
Reciclarea
Pentru a-mi face locuința, am folosit un dulap vechi pe care mama mea îl arunca.
baza
Am tăiat 4 scânduri (34 cm x 26 cm). (deci este un cub de la 34 x 34 x 26).
Pe fund am adăugat o bucată subțire de lemn ca fund.
Placă cu led
În mijloc am pus 2 bucăți mici de lemn pe fiecare parte, ambele la 9 cm de sus. Aceasta ține tabloul unde va sta led-ul.
Placa cu led-ul este o placă mică (32 cm x 32 cm).
Am forat 9 găuri pentru ca ledurile să iasă.
Divizia
Am făcut diviziunea cu același material ca fundul și placa cu led-uri.
4 bucăți fiecare cu o incizie la 10,3 cm (9 cm x 31 cm). Acum sunt capabil să le pun împreună.
Butoane și cititor RFID
Am făcut o gaură în bază pentru a pune cititorul și butoanele RFID. Pentru RFID am pus o bucată subțire de placă în fața ei, pentru a arăta mai curată.
Pasul 6: Pasul 6: Punerea totul în carcasă
Acest lucru depinde de modul în care doriți să o faceți. Personal am folosit o mulțime de cabluri fără lipire, deoarece vreau să pot să-mi refolosesc Raspberry Pi.
Am lipit led-ul în poziție și am lipit cititorul RFID și panourile de carcasă.
Și așa faci un Keysorter!
Recomandat:
Cum să faci 4G LTE dublă antenă BiQuade Pași simpli: 3 pași
Cum să fac 4G LTE Double BiQuade Antenna Pași simpli: De cele mai multe ori mă confrunt, nu am o putere de semnal bună pentru lucrările mele de zi cu zi. Asa de. Căut și încerc diferite tipuri de antenă, dar nu funcționează. După un timp pierdut, am găsit o antenă pe care sper să o fac și să o testez, pentru că nu se bazează pe principiul
Design de joc în Flick în 5 pași: 5 pași
Designul jocului în Flick în 5 pași: Flick este un mod foarte simplu de a crea un joc, în special ceva de genul puzzle, roman vizual sau joc de aventură
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino - Pași cu pași: 4 pași
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino | Pași cu pas: în acest proiect, voi proiecta un senzor senzor de parcare inversă Arduino Car Circuit folosind senzorul cu ultrasunete Arduino UNO și HC-SR04. Acest sistem de avertizare auto bazat pe Arduino poate fi utilizat pentru navigație autonomă, autonomie robotică și alte r
Detectarea feței pe Raspberry Pi 4B în 3 pași: 3 pași
Detectarea feței pe Raspberry Pi 4B în 3 pași: În acest instructabil vom efectua detectarea feței pe Raspberry Pi 4 cu Shunya O / S folosind Biblioteca Shunyaface. Shunyaface este o bibliotecă de recunoaștere / detectare a feței. Proiectul își propune să obțină cea mai rapidă viteză de detectare și recunoaștere cu
Cum să faci un contor de pași ?: 3 pași (cu imagini)
Cum să fac un contor de pași ?: obișnuiam să performez bine la multe sporturi: mersul pe jos, alergatul, mersul pe bicicletă, jocul de badminton etc. Îmi place să călăresc să călătoresc în preajmă. Ei bine, uită-te la burtica mea ostilă …… Ei bine, oricum, decid să reîncep să fac mișcare. Ce echipament ar trebui să pregătesc?