Obsah:

Kľúč: 6 krokov
Kľúč: 6 krokov

Video: Kľúč: 6 krokov

Video: Kľúč: 6 krokov
Video: Видеть музыку - Развивающий мультфильм для детей 2024, November
Anonim
Kľúčenec
Kľúčenec
Kľúčenec
Kľúčenec

Momentálne študujem NMCT na Howest. Na posledný semester sme museli vypracovať projekt. Tak som urobil Keysorter.

Čo to robí?

Máme doma veľa kľúčov od auta a všetky sú si podobné. Na vyriešenie tohto problému som teda urobil Keysorter.

Musí skenovať v kľúči prostredníctvom RFID a dať mu miesto v schránke. Ak znova naskenujem ten istý kľúč, zobrazí sa mu predtým priradené miesto. K dispozícii je tiež tlačidlo na zobrazenie naposledy umytého auta.

Toto bude bežať na Raspberry Pi, ktoré má tiež možnosť pridať webovú stránku prostredníctvom banky.

Na stránke by som mal mať možnosť pozrieť sa na všetky kľúče, pridať ku kľúču meno a kľúč odstrániť.

Krok 1: Krok 1: Čo budem potrebovať?

Krok 1: Čo budem potrebovať?
Krok 1: Čo budem potrebovať?
Krok 1: Čo budem potrebovať?
Krok 1: Čo budem potrebovať?

Začal som zostavením zoznamu komponentov, ktoré budem potrebovať na to, aby táto vec fungovala.

Komponenty:

  • Malinový koláč
  • 2 x posuvný register (74hc595)
  • 3 x tlačidlo
  • 9 x zelená LED
  • RFID skener (MFRC522)
  • 12 x odpor 220 ohmov

Potom som to všetko vložil do svojej dráždivej schémy.

Keď som to urobil, presadil som sa v skutočnom živote.

Krok 2: Krok 2: Vytvorenie schémy databázy

Krok 2: Vytvorenie schémy databázy
Krok 2: Vytvorenie schémy databázy

Aby som uložil všetky svoje údaje, musel som vytvoriť databázu, ktorá by mohla bežať na mojom Pi.

Urobil som to v MySQL.

Stolové auto:

  • ID auta
  • ID používateľa
  • Značka (značka auta)
  • Napíšte
  • Naposledy prané
  • Kľúč
  • RFID_ID

Krok 3: Krok 3: Kódovanie

Krok 3: Kódovanie
Krok 3: Kódovanie

Keď bolo toto všetko pripravené, mohol som začať kódovať.

Začal som vytvorením kódu pre môj senzor v Pythone 3.5.

Ak chcete stiahnuť kód, kliknite sem.

Pomocou odkazu klonujte projekt.

Krok 4: Krok 4: Vloženie kódu Al na moju Raspberry Pi

Inštalácia balíkov

Najprv som nainštaloval všetky balíky, ktoré som potreboval, aby to fungovalo.

ja@my-rpi: ~ $ sudo apt update

ja@my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Virtuálne prostredie

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-packages 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

Nahrajte projekt na svoj Pi pomocou pycharm

Otvorte Pycharm a prejdite na VCS> Import z ovládania verzií> Github a klonujte môj súbor github.

Vložte konfiguráciu nasadenia do adresára, ktorý ste práve vytvorili. (/home/me/project1). Stlačte tlačidlo Použiť!

Prejdite na nastavenia tlmočníka a vyberte virtuálne prostredie, ktoré ste práve vytvorili. (/home/me/project1/env/bin/pyhon)

Skontrolujte, či je mapovanie cesty správne.

Teraz môžete kód nahrať do svojho adresára pomocou Pycharm.

Databáza

Skontrolujte, či je databáza spustená. Mali by ste získať niečo také:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - databázový server MariaDB načítaný: načítaný (/lib/systemd/system/mariadb.service; povolený; predvoľba dodávateľa: povolený) aktívny: aktívny (v prevádzke) od slnka 2018-06-03 09:41:18 SELČ; Pred 1 dňom pred 4 hodinami Hlavný PID: 781 (mysqld) Stav: „Teraz beriem vaše požiadavky SQL …“Úlohy: 28 (limit: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld

3. júna 09:41:13 my-rpi systemd [1]: Spustenie databázového servera MariaDB… 3. júna 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Poznámka] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 3. júna 09:41:18 my-rpi systemd [1]: Spustený databázový server MariaDB.

ja@my -rpi: ~ $ ss -lt | grep mysql POČÚVAJTE 0 80 127.0.0.1:mysql *: *

Vytvorte používateľov a pridajte databázu

ja@my-rpi: ~ $ sudo mariadb

akonáhle ste v databáze, urobte to.

VYTVORIŤ UŽÍVATEĽA 'project1-admin'@'localhost' IDENTIFIKOVANÉ 'adminpassword'; VYTVORIŤ UŽÍVATEĽA 'project1-web'@'localhost' IDENTIFIKOVANÉ 'webpassword'; VYTVORIŤ UŽÍVATEĽA 'project1-sensor'@'localhost' IDENTIFIKOVANÉ 'senzorovým heslom';

VYTVORIŤ DATABÁZU project1;

UDELIŤ VŠETKY VÝHODY NA projekt1.* Na 'project1-admin'@'localhost' S MOŽNOSŤOU GRANTU; VYBERTE, VLOŽTE, AKTUALIZUJTE, VYMAZÁVAJTE na project1.* TO 'project1-web'@'localhost'; VYBERTE, VLOŽTE, AKTUALIZUJTE, VYMAZÁVAJTE na project1.* TO 'project1-sensor'@'localhost'; FLUSH PRIVILEGES;

VYTVORIŤ TABUĽKU `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

VYTVORIŤ TABUĽKU `auto` (` 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`), CONSTRAINT `f`_ar_ ZAHRANIČNÝ KĽÚČ (`idUser`) ODKAZY` user` (`idUser`) NA VYMAZANIE ŽIADNA AKCIA NA AKTUALIZÁCII ŽIADNA AKCIA) MOTOR = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Pripojte svoju databázu k Pycharmu

Kliknite na kartu databázy na pravej strane. Ak nemáte kartu otvorenú, postupujte takto: Zobraziť> Nástroje Windows> Databáza.

Kliknite na položku pridať pripojenie. Vyberte položku Zdroj údajov> MySQL (Ak existuje tlačidlo na stiahnutie ovládača, stlačte ho.)

Prejdite na SSH/SSL a skontrolujte SSH. Vyplňte svoje prihlasovacie údaje k Raspberry pi (hostiteľ/používateľ/heslo). Port by mal mať 22 a nezabudnite si zapamätať heslo.

Vráťte sa k generálovi. Hostiteľ by mal byť localhost a databáza by mala byť project1. Vyplňte poverenia od project1-admin a vyskúšajte pripojenie.

Ak je pripojenie v poriadku, prejdite na kartu Schémy a uistite sa, že je začiarknutý projekt1.

Skontrolujte, či je databáza správna

ja@my-rpi: ~ $ echo 'show tables;' | mysql project1 -t -u project1-admin -pZadajte heslo: + --------------------------- + | Tables_in_project1 | + ---------------------------+ | snímač | | užívatelia | +---------------------------+

Konfiguračné súbory

V adresári conf nájdete 4 súbory. Používateľské mená by ste mali zmeniť na svoje používateľské meno.

Systemd

Na spustenie všetkého by ste mali vykonať tieto príkazy.

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

me@my-rpi: ~/project1 $ sudo systemctl daemon-reload me@my-rpi: ~/project1 $ sudo systemctl start project1-* me@my-rpi: ~/project1 $ sudo systemctl status project1-* ● project1- flask.service-inštancia uWSGI na obsluhu webového rozhrania project1 Načítané: načítané (/etc/systemd/system/project1-flask.service; deaktivované; predvoľba dodávateľa: zapnuté) Aktívne: aktívne (v prevádzke) od Po 2018-06-04 13: 14:56 SELČ; Pred 1 s Hlavný PID: 6618 (uwsgi) Úlohy: 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

4. júna 13:14:56 my-rpi uwsgi [6618]: namapovaných 383928 bajtov (374 KB) pre 5 jadier 4. júna 13:14:56 my-rpi uwsgi [6618]: *** Prevádzkový režim: predbežná vidlica ***

● project1-sensor.service-Služba senzora projektu 1 Načítané: načítané (/etc/systemd/system/project1-sensor.service; deaktivované; predvoľba dodávateľa: povolená) Aktívna: aktívna (v prevádzke) od Po 2018-06-04 13: 16:49 SELČ; Pred 5 s Hlavný PID: 6826 (python) Úlohy: 1 (limit: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

4. júna 13:16:49 my-rpi systemd [1]: Spustená služba senzora projektu 1. 4. júna 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Uložený senzor process_count = b'217 / n 'do databázy, jún 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Senzor process_count = b'218 / n 'bol uložený do databázy

nginx

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

/etc/nginx/sites-available: total 4 -rw-r-r-- 1 root root 2416 July 12 2017 default

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

Vykonajte tieto príkazy, aby bolo všetko predvolené.

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

Automatický štart

Zaistite, aby sa všetko začalo automaticky.

Prejdite do adresára conf a vykonajte tieto posledné príkazy a máte hotovo!

ja@my-rpi: ~/project1 $ sudo systemctl povoliť project1-*

Ak reštartujete počítač Pi, malo by sa to spustiť automaticky.

Krok 5: Krok 5: Výroba bývania

Krok 5: Výroba bývania
Krok 5: Výroba bývania
Krok 5: Výroba bývania
Krok 5: Výroba bývania
Krok 5: Výroba bývania
Krok 5: Výroba bývania
Krok 5: Výroba bývania
Krok 5: Výroba bývania

Recyklácia

Na bývanie som použil starú skriňu, ktorú mama zhodila.

základňa

Pílil som 4 dosky (34 cm x 26 cm). (je to teda kocka s rozmermi 34 x 34 x 26).

Na spodok som ako dno pridal tenký kus dreva.

Doska s LED diódami

V strede som položil 2 malé kúsky dreva na obe strany, obidve vo vzdialenosti 9 cm od vrcholu. To drží dosku, kde budú sedieť LED diódy.

Doska s LED diódami je malá doska (32 cm x 32 cm).

Vyvrtal som 9 otvorov, z ktorých budú vychádzať LED diódy.

rozdelenie

Delenie som vyrobil z rovnakého materiálu ako dno a doska s LED diódami.

4 kusy, každý s rezom 10,3 cm (9 cm x 31 cm). Teraz ich môžem dať dohromady.

Tlačidlá a čítačka RFID

Do základne som urobil dieru, do ktorej som vložil čítačku RFID a tlačidlá. V prípade RFID som pred ňu položil tenký kus dosky, aby vyzeral čistejšie.

Krok 6: Krok 6: Umiestnenie všetkého do krytu

To závisí od toho, ako to chcete urobiť. Osobne som použil veľa káblov bez spájkovania, pretože chcem mať možnosť znova použiť svoj Raspberry Pi.

Prilepil som LED diódy na miesto a prilepil čítačku RFID a dosku k puzdru.

A takto si vyrobíte kľúčenku!

Odporúča: