Kazalo:

Tipkovnica: 6 korakov
Tipkovnica: 6 korakov

Video: Tipkovnica: 6 korakov

Video: Tipkovnica: 6 korakov
Video: Flight of the Bumblebee - Rimsky-Korsakov (arr. Rachmaninoff) 2024, Julij
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

Trenutno študiram NMCT na Howestu. Za zadnji semester smo morali narediti projekt. Tako sem naredil Keysorter.

Kaj to naredi?

Doma imamo veliko avtomobilskih ključev in vsi so si podobni. Zato sem naredil Keysorter za rešitev tega vprašanja.

Skenirati mora ključ po RFID in mu dati mesto v škatli. Če znova skeniram isti ključ, bo prikazano njegovo prej dodeljeno mesto. Obstaja tudi gumb za prikaz zadnjega opranega avtomobila.

To bo delovalo tudi na Raspberry Pi, ki ima tudi možnost dodajanja spletne strani prek Flaska.

Na strani bi si moral ogledati vse ključe, ključu dodati ime in ključ odstraniti.

1. korak: 1. korak: Kaj bom potreboval?

1. korak: Kaj bom potreboval?
1. korak: Kaj bom potreboval?
1. korak: Kaj bom potreboval?
1. korak: Kaj bom potreboval?

Začel sem tako, da sem sestavil seznam komponent, ki jih bom potreboval za delovanje te stvari.

Sestavine:

  • Malina pi
  • 2 x register premika (74hc595)
  • 3 x gumb
  • 9 x zelena led
  • Optični bralnik RFID (MFRC522)
  • 12 x upor 220 ohm

Potem sem vse to spravil v svojo shemo fritovanja.

Ko sem to naredil, mi je uspelo v resničnem življenju.

2. korak: 2. korak: izdelava sheme baze podatkov

2. korak: Izdelava sheme baze podatkov
2. korak: Izdelava sheme baze podatkov

Če sem želel shraniti vse svoje podatke, sem moral ustvariti bazo podatkov, ki bi se lahko izvajala na mojem Pi.

Uspelo mi je v Mysqlu.

Namizni avto:

  • ID avtomobila
  • Uporabniško ime
  • Blagovna znamka (znamka avtomobila)
  • Vrsta
  • Nazadnje oprano
  • Ključ
  • RFID_ID

3. korak: 3. korak: Kodiranje

3. korak: Kodiranje
3. korak: Kodiranje

Ko je bilo vse pripravljeno, sem lahko začel kodirati.

Začel sem z izdelavo kode za svoj senzor v Pythonu 3.5.

Za prenos kode kliknite tukaj.

Za povezavo klonirajte projekt.

Korak 4: Korak 4: Vnos kode na mojo Raspberry Pi

Namestitev paketov

Najprej sem namestil vse pakete, ki so bili potrebni za to.

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 okolje

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- paketi spletnih mest 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

Naložite projekt na svoj Pi z uporabo pycharma

Odprite Pycharm in pojdite na VCS> Uvozi iz različice Nadzor različic> Github in klonirajte mojo datoteko github.

Konfiguracijo uvajanja postavite v imenik, ki ste ga pravkar ustvarili. (/home/me/project1). Pritisnite Apply!

Pojdite v nastavitve tolmača in izberite pravkar ustvarjeno virtualno okolje. (/home/me/project1/env/bin/pyhon)

Preverite, ali je preslikava poti pravilna.

Zdaj lahko kodo naložite v svoj imenik s pomočjo Pycharma.

Baza podatkov

Preverite, ali zbirka podatkov deluje. Morali bi dobiti nekaj takega:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - strežnik baz podatkov MariaDB Naloženo: naloženo (/lib/systemd/system/mariadb.service; omogočeno; prednastavitev prodajalca: omogočena) Aktivno: aktivno (deluje) od ned 2018-06-03 09:41:18 CEST; 1 dan in 4 ure Glavni PID: 781 (mysqld) Stanje: "Zdaj sprejemam vaše zahteve SQL …" Opravila: 28 (omejitev: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld

3. junij 09:41:13 my-rpi systemd [1]: Zagon strežnika baz podatkov MariaDB… 3. junij 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Opomba] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03. jun 09:41:18 my-rpi systemd [1]: Zagnan strežnik zbirk podatkov MariaDB.

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

Ustvarite uporabnike in dodajte bazo podatkov

me@my-rpi: ~ $ sudo mariadb

ko ste v bazi podatkov, to storite.

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

CREATE DATABASE project1;

DODELITE VSE PRIVILEGIJE NA PROJEKT1.* Na 'project1-admin'@'localhost' Z GRANT MOŽNOSTO; 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`)) ENGINE = 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, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser``), CONKSTARIN_ TUJI KLJUČ (`idUser`) REFERENCE` user` (`idUser`) ON DELETE NO ACTION ON UPDATE NO ACTION)

Povežite svojo bazo podatkov s programom Pycharm

Kliknite zavihek zbirke podatkov na desni strani. Če nimate odprtega zavihka, naredite to: Pogled> Orodja Windows> Baza podatkov.

Kliknite Dodaj povezavo. Izberite Vir podatkov> MySQL (Če obstaja gumb za prenos gonilnika, ga pritisnite.)

Pojdite na SSH/SSL in preverite SSH. Izpolnite poverilnice Raspberry pi (gostitelj/uporabnik/geslo). Vrata naj bodo 22 in ne pozabite preveriti gesla za zapomnitev.

Vrnite se na General. Gostitelj mora biti localhost, baza podatkov pa projekt1. Izpolnite poverilnice iz project1-admin in preizkusite povezavo.

Če je povezava v redu, pojdite na zavihek Sheme in preverite, ali je projekt1 preverjen.

Preverite, ali je zbirka podatkov pravilna

me@my-rpi: ~ $ echo 'pokaži tabele;' | mysql project1 -t -u project1-admin -pVnesite geslo: + --------------------------- + | Tabele_v_projektu1 | + ---------------------------+ | senzor | | uporabniki | +---------------------------+

Konfiguracijske datoteke

V imeniku conf boste našli 4 datoteke. Uporabniška imena morate spremeniti v svoje uporabniško ime.

Systemd

Če želite zagnati vse, morate izvesti te ukaze.

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

me@my-rpi: ~/project1 $ sudo systemctl daemon -reload me@my-rpi: ~/project1 $ sudo systemctl začni project1-* me@my-rpi: ~/project1 $ sudo systemctl status project1-* ● projekt1- flask.service-primerek uWSGI za streženje spletnega vmesnika project1 Naloženo: naloženo (/etc/systemd/system/project1-flask.service; onemogočeno; prednastavitev prodajalca: omogočeno) Aktivno: aktivno (deluje) od pon 2018-06-04 13: 14:56 CEST; Pred 1 s 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

4. junij 13:14:56 my-rpi uwsgi [6618]: preslikanih 383928 bajtov (374 KB) za 5 jeder 4. junij 13:14:56 my-rpi uwsgi [6618]: *** Način delovanja: predformiranje ***

● project1-sensor.service-storitev senzorja Project 1 Naloženo: naloženo (/etc/systemd/system/project1-sensor.service; onemogočeno; prednastavitev prodajalca: omogočeno) Aktivno: aktivno (v teku) od pon 2018-06-04 13: 16:49 CEST; Pred 5 s Glavni PID: 6826 (python) Naloge: 1 (omejitev: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

4. junij 13:16:49 my-rpi systemd [1]: Začetek storitve senzorja projekta 1. 4. junij 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Shranjeno tipalo process_count = b'217 / n 'v bazo podatkov 04. junij 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Shranjeno tipalo process_count = b'218 / n 'v bazo podatkov

nginx

me@my-rpi: ~/project1 $ ls -l/etc/nginx/sites-*

/etc/nginx/sites-available: skupaj 4 -rw-r-r-- 1 korenski koren 2416 12. julij 2017 privzeto

/etc/nginx/sites-enabled: skupaj 0 lrwxrwxrwx 1 korenski koren 34. januar 18 13:25 privzeto->/etc/nginx/sites-available/default

Če želite, da je vse privzeto, izvedite te ukaze.

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 znova zaženite nginx.service

Samodejni zagon

Poskrbimo, da se vse začne samodejno.

Pojdite v imenik conf in izvedite te zadnje ukaze in končali ste!

me@my-rpi: ~/project1 $ sudo systemctl omogoči project1-*

Če znova zaženete Pi, bi se moral samodejno zagnati.

5. korak: 5. korak: izdelava stanovanja

5. korak: Izdelava stanovanja
5. korak: Izdelava stanovanja
5. korak: Izdelava stanovanja
5. korak: Izdelava stanovanja
5. korak: Izdelava stanovanja
5. korak: Izdelava stanovanja
5. korak: Izdelava stanovanja
5. korak: Izdelava stanovanja

Recikliranje

Za stanovanje sem uporabil staro omaro, ki bi jo mama odvrgla.

bazo

Razžagal sem 4 deske (34 x 26 cm). (torej kocka velikosti 34 x 34 x 26).

Na dnu sem kot dno dodal tanek kos lesa.

Plošča z LED diodami

Na sredino sem dal 2 majhna kosa lesa na vsaki strani, oba na 9 cm od vrha. To drži desko, kjer bodo sedeli vodilni.

Deska s svetilkami je majhna deska (32 x 32 cm).

Naredil sem 9 lukenj, iz katerih bodo prišle lednice.

delitev

Delitev sem naredil iz istega materiala kot dno in ploščo z led.

4 kosi vsak z zarezo 10,3 cm (9 cm x 31 cm). Zdaj jih lahko sestavim.

Gumbi in bralnik RFID

V podnožju sem naredil luknjo, v katero sem vstavil čitalnik RFID in gumbe. Za RFID sem prednj postavil tanek kos plošče, da je videti čistejši.

Korak 6: Korak 6: Dajanje vsega v ohišje

To je odvisno od tega, kako želite to narediti. Osebno sem uporabil veliko kablov brez spajkanja, ker želim ponovno uporabiti svoj Raspberry Pi.

LED sem prilepila na mesto in na ohišje prilepila čitalnik RFID in plošče.

In tako narediš Keysorterja!

Priporočena: