Cuprins:

Keysorter: 6 pași
Keysorter: 6 pași

Video: Keysorter: 6 pași

Video: Keysorter: 6 pași
Video: MMS - Key Sorter 400V 2024, Iulie
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

Î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?

Pasul 1: De ce voi avea nevoie?
Pasul 1: De ce voi avea nevoie?
Pasul 1: De ce voi avea nevoie?
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

Pasul 2: Realizarea unei scheme de baze de date
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

Pasul 3: Codificare
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

Pasul 5: Realizarea unei locuințe
Pasul 5: Realizarea unei locuințe
Pasul 5: Realizarea unei locuințe
Pasul 5: Realizarea unei locuințe
Pasul 5: Realizarea unei locuințe
Pasul 5: Realizarea unei locuințe
Pasul 5: Realizarea unei locuințe
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: