Turinys:

Raktų rūšiuotojas: 6 žingsniai
Raktų rūšiuotojas: 6 žingsniai

Video: Raktų rūšiuotojas: 6 žingsniai

Video: Raktų rūšiuotojas: 6 žingsniai
Video: Какого числа от 1 до 31, родился человек, такая у него и вся жизнь 2024, Lapkritis
Anonim
Raktų rūšiuotojas
Raktų rūšiuotojas
Raktų rūšiuotojas
Raktų rūšiuotojas

Šiuo metu studijuoju NMCT „Howest“. Paskutinį semestrą turėjome sukurti projektą. Taigi aš padariau „Keysorter“.

Ką tai daro?

Namuose turime daug automobilių raktų ir jie visi atrodo vienodi. Taigi aš padariau „Keysorter“, kad išspręstų šią problemą.

Jis turi nuskaityti raktą per RFID ir suteikti jam vietą dėžutėje. Jei dar kartą nuskenuosiu tą patį raktą, bus rodoma jo anksčiau paskirta vieta. Taip pat yra mygtukas, rodantis paskutinį kartą nuplautą automobilį.

Visa tai veiks „Raspberry Pi“, kuri taip pat turi galimybę pridėti tinklalapį per kolbą.

Puslapyje turėčiau galėti peržiūrėti visus raktus, pridėti pavadinimą prie rakto ir pašalinti raktą.

1 žingsnis: 1 žingsnis: ko man reikės?

1 žingsnis: ko man reikės?
1 žingsnis: ko man reikės?
1 žingsnis: ko man reikės?
1 žingsnis: ko man reikės?

Pradėjau sudarydamas komponentų sąrašą, kurio man reikės, kad šis dalykas veiktų.

Komponentai:

  • Aviečių pi
  • 2 x pamainų registras (74hc595)
  • 3 x mygtukas
  • 9 x žalia lemputė
  • RFID skaitytuvas (MFRC522)
  • 12 x 220 omų rezistorius

Tada aš visa tai įtraukiau į savo siaubingą schemą.

Kai tai padariau, tai padariau realiame gyvenime.

2 veiksmas: 2 veiksmas: sukurkite duomenų bazės schemą

2 veiksmas: sukurkite duomenų bazės schemą
2 veiksmas: sukurkite duomenų bazės schemą

Norėdami išsaugoti visus savo duomenis, turėjau sukurti duomenų bazę, kuri galėtų veikti mano Pi.

Aš tai padariau „Mysql“.

Stalo automobilis:

  • Automobilio ID
  • Vartotojo ID
  • Prekės ženklas (automobilio markė)
  • Tipas
  • Paskutinį kartą plauti
  • Raktas
  • RFID_ID

3 žingsnis: 3 žingsnis: kodavimas

3 žingsnis: kodavimas
3 žingsnis: kodavimas

Kai visa tai buvo paruošta, galėjau pradėti koduoti.

Pradėjau sukurdamas savo jutiklio kodą „Python 3.5“.

Norėdami atsisiųsti kodą, spustelėkite čia.

Norėdami klonuoti projektą, naudokite nuorodą.

4 žingsnis: 4 žingsnis: įdėkite „Al Ras“kodą į „My Raspberry Pi“

Paketų diegimas

Pirmiausia įdiegiau visus paketus, kurių man reikėjo, kad tai veiktų.

me@my-rpi: ~ $ sudo apt atnaujinimas

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

Virtuali aplinka

me@my-rpi: ~ $ python3 -m pip install-atnaujinti pip setuptools ratą virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 me@my-rpi: ~/project1 $ python3 -m venv-system- svetainių paketai env me@my-rpi: ~/project1 $ source env/bin/aktivuoti (env) me@my-rpi: ~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth „Flask-MySQL“„mysql-connector-python“slaptažodis

Įkelkite projektą į „Pi“naudodami pycharm

Atidarykite „Pycharm“ir eikite į VCS> Importuoti iš versijų valdymo> „Github“ir klonuokite mano „github“failą.

Įdėkite diegimo konfigūraciją į ką tik sukurtą katalogą. (/home/me/project1). Spausk taikyti!

Eikite į vertėjo nustatymus ir pasirinkite ką tik sukurtą virtualią aplinką. (/home/me/project1/env/bin/pyhon)

Patikrinkite, ar teisingas kelio susiejimas.

Dabar galite įkelti kodą į savo katalogą naudodami „Pycharm“.

Duomenų bazė

Patikrinkite, ar duomenų bazė veikia. Turėtumėte gauti kažką panašaus:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB duomenų bazės serveris Įkelta: įkelta (/lib/systemd/system/mariadb.service; įjungta; iš anksto nustatytas tiekėjas: įgalinta) Aktyvus: aktyvus (veikia) nuo „Sun“2018-06-03 09:41:18 CEST; Prieš 1 dieną 4 val. Pagrindinis PID: 781 (mysqld) Būsena: „Dabar imamasi jūsų SQL užklausų …“Užduotys: 28 (apribojimas: 4915) C grupė: /system.slice/mariadb.service └─781/usr/sbin/mysqld

Birželio 03 d. 09:41:13 my-rpi systemd [1]: paleidžiamas „MariaDB“duomenų bazės serveris… birželio 3 d. 09:41:15 „my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Pastaba] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) Bir 03, 09:41:18 my-rpi systemd [1]: paleido MariaDB duomenų bazės serverį.

aš@mano -rpi: ~ $ ss -lt | grep mysql KLAUSYKITE 0 80 127.0.0.1:mysql *: *

Sukurkite vartotojus ir pridėkite duomenų bazę

aš@mano-rpi: ~ $ sudo mariadb

kai esate duomenų bazėje, padarykite tai.

KURTI VARTOTOJĄ 'project1-admin'@'localhost', IDENTIFIZUOTAS 'adminpassword'; CREATE USER 'project1-web'@'localhost', identifikuotas pagal 'webpassword'; KURTI NAUDOTOJĄ 'project1-sensor'@'localhost', IDENTIFIKUOTAS 'sensorpassword';

CREATE DATABASE project1;

SUTEIKITE VISAS privilegijas dėl projekto1.* „Project1-admin“@'localhost “SU DOTACIJOS PARINKTIS; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* Į „project1-web“@„localhost“; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; PLŪŠIMO PRIVILEGIJOS;

KURTI LENTELĘ `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) VARIKLIS = InnoDB DEFAULT CHARSET = utf8

KURTI LENTELĘ "automobilis" ("idCar" int (11) NOT NULL AUTO_INCREMENT, "idUser" int (11) NOT NULL, "Brand" varchar (45) DEFAULT NULL, "Type" varchar (45) DEFAULT NULL, "LastWashed" datos laikas Numatytasis NULL, "RFID_Number" varchar (15) DEFAULT NULL, "Key" varchar (5) Numatytasis NULL, PAGRINDINIS RAKTAS ("idCar", "idUser"), KEY "fk_Car_User1_idx" ("idUser`)" CONSTRAINT UŽSIENIO RAKTAS („idUser“) NUORODOS „user“(„idUser“) ON DELETE NO ACTION ON UPDATE NO ACTION)

Prijunkite savo duomenų bazę prie „Pycharm“

Spustelėkite duomenų bazės skirtuką dešinėje. Jei skirtukas nėra atidarytas, atlikite tai: Rodinys> Įrankiai „Windows“> Duomenų bazė.

Spustelėkite pridėti ryšį. Pasirinkite Duomenų šaltinis> MySQL (jei yra mygtukas atsisiųsti tvarkyklę, paspauskite.)

Eikite į SSH/SSL ir patikrinkite SSH. Užpildykite savo „Raspberry pi“prisijungimo duomenis (priegloba/vartotojas/slaptažodis). Prievadas turėtų būti 22 ir nepamirškite patikrinti slaptažodžio prisiminimo.

Grįžkite į generolą. Priimančioji vieta turėtų būti „localhost“, o duomenų bazė - „project1“. Užpildykite prisijungimo duomenis iš projekto1-admin lt išbandykite ryšį.

Jei ryšys yra geras, eikite į skirtuką Schemos ir įsitikinkite, kad pažymėtas projektas1.

Patikrinkite, ar duomenų bazė teisinga

me@my-rpi: ~ $ echo 'rodyti lenteles;' | mysql project1 -t -u project1-admin -pĮveskite slaptažodį: + --------------------------- + | Lentelės_projekte1 | + ---------------------------+ | jutiklis | | vartotojai | +---------------------------+

Konfigūracijos failai

Kataloge conf rasite 4 failus. Turėtumėte pakeisti vartotojo vardus į savo vartotojo vardą.

Sistem

Norėdami pradėti viską, turite vykdyti šias komandas.

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

aš@mano-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-uWSGI egzempliorius, skirtas aptarnauti projekto1 žiniatinklio sąsają Įkelta: įkelta (/etc/systemd/system/project1-flask.service; išjungta; iš anksto nustatytas tiekėjas: įjungta) 14:56 CEST; Prieš 1s Pagrindinis PID: 6618 (uwsgi) Užduotys: 6 (riba: 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

Birželio 04 d. 13:14:56 my-rpi uwsgi [6618]: suplanuotas 383928 baitų (374 KB) 5 branduoliams birželio 04 d. 13:14:56 my-rpi uwsgi [6618]: *** Veikimo režimas: išankstinis apdorojimas ***

● project1-sensor.service-1 projekto jutiklių paslauga Įkelta: įkelta (/etc/systemd/system/project1-sensor.service; išjungta; iš anksto nustatytas tiekėjas: įjungta) Aktyvus: aktyvus (veikia) nuo pirmadienio 2018-06-04 13: 16:49 CEST; Prieš 5s Pagrindinis PID: 6826 (python) Užduotys: 1 (riba: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

Birželio 04 d. 13:16:49 my-rpi systemd [1]: pradėta 1 projekto jutiklių paslauga. Birželio 04 d. 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Išsaugotas jutiklio procesas_skaičius = b'217 / n 'į duomenų bazę Birželio 04 d. 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Duomenų bazėje išsaugotas jutiklio process_count = b'218 / n '

nginx

aš@mano-rpi: ~/project1 $ ls -l/etc/nginx/sites-*

/etc/nginx/sites-available: iš viso 4 -rw-r-r-- 1 šaknies šaknis 2416 2017 m. liepos 12 d. numatytasis

/etc/nginx/sites-enabled: iš viso 0 lrwxrwxrwx 1 šaknies šaknis 34 sausio 18 d. 13:25 numatytoji->/etc/nginx/sites-available/default

Jei norite, kad viskas būtų numatyta, vykdykite šias komandas.

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

Automatinis paleidimas

Įsitikinkime, kad viskas prasideda automatiškai.

Eikite į conf katalogą ir vykdykite šias paskutines komandas ir baigsite!

me@my-rpi: ~/project1 $ sudo systemctl įgalinti project1-*

Jei iš naujo paleisite „Pi“, jis turėtų prasidėti automatiškai.

5 žingsnis: 5 žingsnis: būsto sukūrimas

5 žingsnis: būsto kūrimas
5 žingsnis: būsto kūrimas
5 žingsnis: būsto kūrimas
5 žingsnis: būsto kūrimas
5 žingsnis: būsto kūrimas
5 žingsnis: būsto kūrimas
5 žingsnis: būsto kūrimas
5 žingsnis: būsto kūrimas

Perdirbimas

Savo būstui gaminti panaudojau seną spintą, kurią mama išmesdavo.

bazė

Pjoviau 4 lentas (34 cm x 26 cm). (taigi tai kubas nuo 34 x 34 x 26).

Ant dugno aš įdėjau ploną medžio gabalą kaip apačią.

Lenta su LED

Viduryje aš įdėjau 2 mažus medienos gabalus iš abiejų pusių, 9 cm atstumu nuo viršaus. Čia laikoma lenta, kurioje sėdės vadovai.

Lenta su šviesos diodais yra maža lenta (32 cm x 32 cm).

Aš išgręžiau 9 skyles, kad išeitų šviesos diodai.

padalijimas

Padalinį padariau iš tos pačios medžiagos kaip ir dugnas, o lentą - su LED.

4 gabalėliai, kurių įpjova 10,3 cm (9 cm x 31 cm). Dabar aš galiu juos sujungti.

Mygtukai ir RFID skaitytuvas

Padariau skylę pagrinde, kad galėčiau įdėti savo RFID skaitytuvą ir mygtukus. RFID dėlei priešais padėjau ploną lentos gabalą, kad jis atrodytų švaresnis.

6 žingsnis: 6 žingsnis: viską įdėkite į korpusą

Tai priklauso nuo to, kaip norite tai padaryti. Aš asmeniškai naudoju daug kabelių be litavimo, nes noriu pakartotinai naudoti savo „Raspberry Pi“.

Priklijavau šviesos diodus vietoje ir priklijavau RFID skaitytuvą ir duonos lentas prie korpuso.

Ir taip jūs pagaminsite raktų rūšiuotoją!

Rekomenduojamas: