Sadržaj:

Tipkalo za tipke: 6 koraka
Tipkalo za tipke: 6 koraka

Video: Tipkalo za tipke: 6 koraka

Video: Tipkalo za tipke: 6 koraka
Video: Красивая история о настоящей любви! Мелодрама НЕЛЮБОВЬ (Домашний). 2024, Studeni
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

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

Što to 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 ponovno skeniram isti ključ, prikazat će se njegovo prethodno dodijeljeno mjesto. Tu je i gumb za prikaz posljednjeg opranog automobila.

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

Na stranici bih trebao moći pogledati sve tipke, dodati naziv ključu i ukloniti ključ.

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

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

Počeo sam tako što sam napravio popis komponenti koje će mi trebati da bi ova stvar funkcionirala.

Komponente:

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

Zatim sam sve to stavio u svoju shemu prefarbavanja.

Kad sam to učinio, 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 spremio sve svoje podatke, morao sam stvoriti bazu podataka koja bi se mogla izvoditi na mom Pi.

Uspio sam u Mysqlu.

Stolni automobil:

  • ID automobila
  • Korisnički ID
  • 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 s izradom koda za svoj senzor u Pythonu 3.5.

Za preuzimanje koda kliknite ovdje.

Pomoću veze klonirajte projekt.

Korak 4: Korak 4: Stavljanje Al koda na moj 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

Virtualno 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 --sustav- 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 projekt na svoj Pi pomoću pycharma

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. (/dom/ja/projekt1). Pritisnite Apply!

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

Provjerite je li mapiranje puta 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 - poslužitelj baze podataka MariaDB 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

3. lipnja 09:41:13 my-rpi systemd [1]: Pokretanje MariaDB poslužitelja baze podataka… 03. lipnja 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. lipnja 09:41:18 my-rpi systemd [1]: Pokrenut MariaDB poslužitelj baze podataka.

ja@moj -rpi: ~ $ ss -lt | grep mysql SLUŠAJ 0 80 127.0.0.1:mysql *: *

Stvorite korisnike i dodajte bazu podataka

ja@moj-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' IDENTIFIKIRANO sa 'sensorpassword';

CREATE DATABASE project1;

ODOBRI SVE PRIVILEGIJE NA Project1.* Na 'project1-admin'@'localhost' S GRANT OPTION; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSH PRIVILEGIJE;

CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) MOTOR = InnoDB ZADNJA KARTA = 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 karticu baze podataka s desne strane. Ako nemate otvorenu karticu, učinite sljedeće: Pogled> Alati Windows> Baza podataka.

Pritisnite dodaj vezu. Odaberite Izvor podataka> MySQL (Ako postoji gumb za preuzimanje upravljačkog programa, pritisnite ga.)

Idite na SSH/SSL i provjerite SSH. Ispunite svoje vjerodajnice za Raspberry pi (host/korisnik/lozinka). Ulaz 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 i testirajte vezu.

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

Provjerite je li 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.

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

me@my-rpi: ~/project1 $ sudo systemctl daemon-ponovno 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 web 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]: mapirano 383928 bajtova (374 KB) za 5 jezgri 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 zadane postavke 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. lipnja 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. lipnja 16:16:55 my-rpi python [6826]: DEBUG: _ main_: Spremljen proces_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. srpnja 2017 zadano

/etc/nginx/sites-enabled: total 0 lrwxrwxrwx 1 root root 34. siječnja 18 13:25 zadano->/etc/nginx/sites-available/default

Izvršite ove naredbe kako bi sve postalo zadano.

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 ponovno 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: 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
Korak 5: Izrada stambenog prostora

Recikliranje

Za stanovanje sam koristio stari ormar koji bi mama odbacila.

baza

Pilio sam 4 daske (34 cm x 26 cm). (dakle to je kocka od 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 drva sa svake strane, oba na 9 cm od vrha. Ovo drži ploču na kojoj će sjediti LED diode.

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

Izbušio sam 9 rupa za izlazak LED dioda.

podjela

Podjelu sam napravio istim materijalom kao i dno i ploču sa LED diodama.

4 komada svaki s urezom na 10,3 cm (9 cm x 31 cm). Sada ih mogu spojiti.

Gumbi i RFID čitač

Napravio sam rupu u podnožju za umetanje RFID čitača i gumba. 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 to želite učiniti. Osobno sam koristio puno kabela bez lemljenja jer želim moći 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čeni: