Sadržaj:

Keysorter: 6 koraka
Keysorter: 6 koraka

Video: Keysorter: 6 koraka

Video: Keysorter: 6 koraka
Video: Торт для Филиппа Киркорова // Кондитер. 6 сезон 16 выпуск 2024, Novembar
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

Trenutno studiram NMCT na Howest -u. Za posljednji semestar morali smo napraviti projekt. Tako sam napravio Keysorter.

Šta radi?

Kod kuće imamo puno ključeva od automobila i svi izgledaju slično. Stoga sam napravio Keysorter za rješavanje ovog problema.

Mora skenirati ključ putem RFID -a i dati mu mjesto u kutiji. Ako ponovo skeniram isti ključ, prikazat će se njegovo prethodno dodijeljeno mjesto. Tu je i dugme za prikaz zadnjeg opranog automobila.

Ovo će raditi i na Raspberry Pi -u koji također ima mogućnost dodavanja web stranice putem Flaska.

Na stranici bih trebao moći pregledati sve ključeve, dodati ime ključu i ukloniti ključ.

Korak 1: Korak 1: Šta će mi trebati?

Korak 1: Šta će mi trebati?
Korak 1: Šta će mi trebati?
Korak 1: Šta će mi trebati?
Korak 1: Šta će mi trebati?

Počeo sam tako što sam napravio spisak komponenti koje će mi trebati da ova stvar funkcionira.

Komponente:

  • Malina pi
  • 2 x registar pomaka (74hc595)
  • 3 x dugme
  • 9 x zelena led
  • RFID skener (MFRC522)
  • 12 x otpornik 220 ohma

Zatim sam sve ovo stavio u svoju šemu prefarbavanja.

Kad sam ovo završio, uspio sam u stvarnom životu.

Korak 2: Korak 2: Izrada sheme baze podataka

Korak 2: Izrada sheme baze podataka
Korak 2: Izrada sheme baze podataka

Da bih sačuvao sve svoje podatke, morao sam stvoriti bazu podataka koja bi se mogla pokrenuti na mom Pi.

Uspio sam u Mysqlu.

Stoni automobil:

  • ID automobila
  • Korisnički broj
  • Marka (marka automobila)
  • Tip
  • Zadnje oprano
  • Ključ
  • RFID_ID

Korak 3: Korak 3: Kodiranje

Korak 3: Kodiranje
Korak 3: Kodiranje

Kad je sve ovo bilo spremno, mogao sam početi kodirati.

Počeo sam sa izradom koda za svoj senzor u Pythonu 3.5.

Za preuzimanje koda kliknite ovdje.

Koristite vezu za kloniranje projekta.

Korak 4: Korak 4: Stavljanje Al koda na My Raspberry Pi

Instaliranje paketa

Prvo sam instalirao sve pakete koji su mi bili potrebni da ovo funkcionira.

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

Virtuelno okruženje

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 --sistem- web-paketi env me@my-rpi: ~/project1 $ source env/bin/enable (env) me@my-rpi: ~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

Prenesite projekat na svoj Pi koristeći pycharm

Otvorite Pycharm i idite na VCS> Uvezi iz kontrole verzija> Github i klonirajte moju github datoteku.

Postavite konfiguraciju implementacije u direktorij koji ste upravo napravili. (/home/me/project1). Pritisnite Apply!

Idite na postavke tumača i odaberite virtualno okruženje koje ste upravo napravili. (/home/me/project1/env/bin/pyhon)

Provjerite je li preslikavanje putanje ispravno.

Sada možete učitati kôd u svoj direktorij pomoću Pycharma.

Baza podataka

Provjerite radi li baza podataka. Trebali biste dobiti nešto poput ovoga:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB poslužitelj baze podataka Učitano: učitano (/lib/systemd/system/mariadb.service; omogućeno; tvornička postavka: omogućeno) Aktivno: aktivno (radi) od ned 2018-06-03 09:41:18 CEST; 1 dan i 4 sata Glavni PID: 781 (mysqld) Status: "Odmah primamo vaše SQL zahtjeve …" Zadaci: 28 (ograničenje: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld

03. jun 09:41:13 my-rpi systemd [1]: Pokretanje MariaDB servera baze podataka … 03. jun 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Napomena] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03. jun 09:41:18 my-rpi systemd [1]: Pokrenut MariaDB server baze podataka.

me@moj -rpi: ~ $ ss -lt | grep mysql LISTEN 0 80 127.0.0.1:mysql *: *

Kreirajte korisnike i dodajte bazu podataka

me@my-rpi: ~ $ sudo mariadb

učinite to nakon što ste u bazi podataka.

CREATE USER 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; CREATE USER 'project1-sensor'@'localhost' IDENTIFICIRANO pomoću 'sensorpassword';

CREATE DATABASE project1;

ODOBRITE SVE PRIVILEGIJE NA Project1.* Na 'project1-admin'@'localhost' SA OPCIJOM GRANTA; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSH PRIVILEGES;

CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) MOTOR = InnoDB Zadana 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, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`), CONKSTARIN_ STRANI KLJUČ (`idUser`) LITERATURA` user` (`idUser`) ON IZBRIŠI NIKAKVU AKCIJU NA AŽURIRANJE NEMA DJELOVANJA) MOTOR = InnoDB AUTO_INCREMENT = 4 ZADNJA KARTA = utf8

Povežite svoju bazu podataka s Pycharmom

Kliknite na karticu baze podataka s desne strane. Ako nemate otvorenu karticu, učinite sljedeće: Pogled> Alati Windows> Baza podataka.

Kliknite na dodavanje veze. Odaberite Izvor podataka> MySQL (Ako postoji dugme za preuzimanje upravljačkog programa, pritisnite ga.)

Idite na SSH/SSL i provjerite SSH. Popunite svoje akreditive za Raspberry pi (host/korisnik/lozinka). Port bi trebao biti 22 i ne zaboravite provjeriti zapamti lozinku.

Vratite se na General. Domaćin bi trebao biti localhost, a baza podataka projekt1. Ispunite vjerodajnice iz project1-admin en testirajte vezu.

Ako je veza u redu, idite na karticu Sheme i provjerite je li projekt1 provjeren.

Proverite da li je baza podataka ispravna

me@my-rpi: ~ $ echo 'prikaži tablice;' | mysql project1 -t -u project1-admin -pUnesite lozinku: + --------------------------- + | Tablice_u_projektu1 | + ---------------------------+ | senzor | | korisnici | +---------------------------+

Konfiguracijske datoteke

U direktoriju conf naći ćete 4 datoteke. Korisnička imena trebate promijeniti u svoje korisničko ime.

Systemd

Za pokretanje svega trebate izvršiti ove naredbe.

me@my-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/

me@my-rpi: ~/project1 $ sudo systemctl daemon-ponovo učitaj me@my-rpi: ~/project1 $ sudo systemctl pokreni project1-* me@my-rpi: ~/project1 $ sudo systemctl status project1-* ● projekt1- flask.service-uWSGI instanca za opsluživanje web1 sučelja project1 Učitano: učitano (/etc/systemd/system/project1-flask.service; onemogućeno; zadana postavka dobavljača: omogućeno) Aktivno: aktivno (radi) od pon 2018-06-04 13: 14:56 CEST; Prije 1s Glavni PID: 6618 (uwsgi) Zadaci: 6 (ograničenje: 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. lipnja 13:14:56 my-rpi uwsgi [6618]: preslikano 383928 bajtova (374 KB) za 5 jezgara 04. lipnja 13:14:56 my-rpi uwsgi [6618]: *** Način rada: predformiranje ***

● project1-sensor.service-Usluga senzora projekta 1 Učitano: učitano (/etc/systemd/system/project1-sensor.service; onemogućeno; unaprijed zadana vrijednost dobavljača: omogućeno) Aktivno: aktivno (radi) od pon 2018-06-04 13: 16:49 CEST; Prije 5s Glavni PID: 6826 (python) Zadaci: 1 (ograničenje: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

04. jun 13:16:49 my-rpi systemd [1]: Pokrenuta usluga senzora projekta 1. 04. lipnja 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Spremljen senzorski process_count = b'217 / n 'u bazu podataka 04.06.16:55 my-rpi python [6826]: DEBUG: _ main_: Spremljen procesorski broj senzora = b'218 / n 'u bazu podataka

nginx

ja@moj-rpi: ~/project1 $ ls -l/etc/nginx/sites-*

/etc/nginx/sites-available: total 4 -rw-r-r-- 1 root root 2416 12. jul 2017. podrazumevano

/etc/nginx/enabled-sites: total 0 lrwxrwxrwx 1 root root 34. januar 18 13:25 podrazumevano->/etc/nginx/sites-available/default

Izvršite ove naredbe da bi sve postalo zadano.

me@moj-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 ponovo pokrenite nginx.service

Automatsko pokretanje

Uvjerimo se da sve počinje automatski.

Idite u direktorij conf i izvršite ove posljednje naredbe i gotovi ste!

me@my-rpi: ~/project1 $ sudo systemctl omogući project1-*

Ako ponovno pokrenete Pi, trebao bi se pokrenuti automatski.

Korak 5: Korak 5: Napravite stambeni prostor

Korak 5: Izrada stambenog prostora
Korak 5: Izrada stambenog prostora
Korak 5: Izrada stambenog prostora
Korak 5: Izrada stambenog prostora
Korak 5: Izrada stambenog prostora
Korak 5: Izrada stambenog prostora
Korak 5: Izrada stambenog prostora
Korak 5: Izrada stambenog prostora

Recikliranje

Za stanovanje sam koristio stari ormar koji bi mama odbacila.

baza

Rezao sam 4 daske (34 cm x 26 cm). (dakle, to je kocka dimenzija 34 x 34 x 26).

Na dnu sam dodao tanki komad drveta kao dno.

Ploča sa LED diodama

U sredinu sam stavio 2 mala komada drveta sa svake strane, oba na 9 cm od vrha. Ovo drži ploču na kojoj će LED diode sjediti.

Ploča sa LED diodama je mala ploča (32 cm x 32 cm).

Izbušio sam 9 rupa za izlazak LED -a.

divizija

Napravio sam podjelu od istog materijala kao i dno i ploču sa LED diodama.

4 komada svaki s urezom na 10,3 cm (9 cm x 31 cm). Sada sam u stanju da ih sastavim.

Dugmad i RFID čitač

Napravio sam rupu u podnožju za umetanje RFID čitača i dugmadi. Za RFID sam stavio tanki komad ploče ispred njega kako bi izgledao čišće.

Korak 6: Korak 6: Stavljanje svega u kućište

To ovisi o tome kako želite to učiniti. Osobno sam koristio mnogo kabela bez lemljenja jer želim ponovno koristiti svoj Raspberry Pi.

Zalijepio sam LED diode na mjesto i zalijepio RFID čitač i matične ploče na kućište.

I tako se pravi Keysorter!

Preporučuje se: