Sisukord:

Võtmesortija: 6 sammu
Võtmesortija: 6 sammu

Video: Võtmesortija: 6 sammu

Video: Võtmesortija: 6 sammu
Video: Консультант от бога Tg: cadrolikk 2024, November
Anonim
Võtmesortija
Võtmesortija
Võtmesortija
Võtmesortija

Praegu õpin Howestis NMCT -d. Viimase semestri jaoks pidime tegema projekti. Seega tegin võtmesorteri.

Mida see teeb?

Meil on kodus palju autovõtmeid ja need on kõik sarnased. Seega tegin selle probleemi lahendamiseks võtmesorteri.

See peab RFID kaudu võtme sisse skaneerima ja sellele karbis koha andma. Kui ma sama võtit uuesti skannin, näitab see tema varem määratud kohta. Samuti on nupp viimati pestud auto näitamiseks.

See töötab ka Raspberry Pi -l, millel on ka võimalus lisada veebileht Flaski kaudu.

Lehel peaksin saama vaadata kõiki võtmeid, lisada võtmele nime ja eemaldada võtme.

1. samm: 1. samm: mida ma vajan?

Samm: mida ma vajan?
Samm: mida ma vajan?
Samm: mida ma vajan?
Samm: mida ma vajan?

Alustasin sellest, et koostasin nimekirja komponentidest, mida vajan, et see asi toimiks.

Komponendid:

  • Vaarika pi
  • 2 x vahetuste register (74hc595)
  • 3x nupp
  • 9 x roheline LED
  • RFID -skanner (MFRC522)
  • 12 x takisti 220 oomi

Seejärel panin ma selle kõik oma skemaatilisse skeemi.

Kui ma seda tegin, tegin seda päriselus.

2. samm: 2. samm: andmebaasi skeemi koostamine

2. samm: andmebaasiskeemi koostamine
2. samm: andmebaasiskeemi koostamine

Oma andmete salvestamiseks pidin looma andmebaasi, mis saaks minu Pi peal töötada.

Tegin selle Mysqlis.

Laua auto:

  • Auto ID
  • kasutaja ID
  • Bränd (automark)
  • Tüüp
  • Viimati pestud
  • Võti
  • RFID_ID

3. samm: 3. samm: kodeerimine

Samm: kodeerimine
Samm: kodeerimine

Kui see kõik oli valmis, võisin hakata kodeerima.

Alustasin sellest, et tegin Python 3.5 -s oma anduri koodi.

Koodi allalaadimiseks klõpsake siin.

Projekti kloonimiseks kasutage linki.

4. samm: 4. samm: koodi lisamine minu Raspberry Pi -le

Pakettide installimine

Esmalt installisin kõik paketid, mida mul selle töö tegemiseks vaja oli.

me@my-rpi: ~ $ sudo apt uuendus

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

Virtuaalne keskkond

me@my-rpi: ~ $ python3 -m pip install-uuenda pip setuptools ratas virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 mina@my-rpi: ~/project1 $ python3 -m venv --süsteem- saidipaketid env me@my-rpi: ~/project1 $ source env/bin/aktiveeri (env) mind@my-rpi: ~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

Laadige projekt pücharmi abil oma Pi -le üles

Avage Pycharm ja avage VCS> Impordi versioonikontrollist> Github ja kloonige minu githubi fail.

Asetage juurutamise konfiguratsioon äsja loodud kataloogi. (/kodu/mina/projekt1). Vajuta Apply!

Avage tõlgi seaded ja valige äsja loodud virtuaalne keskkond. (/home/me/project1/etv/bin/pyhon)

Kontrollige, kas tee kaardistamine on õige.

Nüüd saate Pycharmi abil koodi oma kataloogi üles laadida.

Andmebaas

Kontrollige, kas andmebaas töötab. Peaksite saama midagi sellist:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB andmebaasiserver Laetud: laaditud (/lib/systemd/system/mariadb.service; lubatud; tarnija eelseadistus: lubatud) Aktiivne: aktiivne (töötab) alates Sunist 2018-06-03 09:41:18 CEST; 1 päev 4 tundi tagasi Peamine PID: 781 (mysqld) Olek: "Võtan teie SQL -päringuid kohe…" Ülesanded: 28 (limiit: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld

3. juuni 09:41:13 my-rpi systemd [1]: MariaDB andmebaasiserveri käivitamine… 3. juuni 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Märkus] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 3. juuni 09:41:18 my-rpi systemd [1]: käivitas MariaDB andmebaasiserveri.

mina@minu -rpi: ~ $ ss -lt | grep mysql KUULA 0 80 127.0.0.1:mysql *: *

Kasutajate loomine ja andmebaasi lisamine

mina@my-rpi: ~ $ sudo mariadb

kui olete andmebaasis, tehke seda.

CREATE USER 'project1-admin'@'localhost' IDENTIFITEERITUD 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFITEERITUD 'webpassword'; CREATE USER 'project1-sensor'@'localhost' IDENTIFITSEERITUD 'sensorpassword';

CREATE DATABASE projekt1;

TOETA KÕIKI ERIÕIGUSI PROJEKTIL.* Projektile „project1-admin”@„localhost” TOETUSVALIKUGA; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSHI privileegid;

CREATE TABLE "kasutaja" ("idUser" int (11) NOT NULL, "Password" varchar (45) DEFAULT NULL, PRIMARY KEY ("idUser")) MOOTOR = InnoDB DEFAULT CHARSET = utf8

CREATE TABLE "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 VÄLISVÕTI ("idUser") VIITED "kasutaja" ("idUser") ON DELETE NO ACTION UPDATE NO ACTION) MOOTOR = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Ühendage oma andmebaas Pycharmiga

Klõpsake andmebaasi vahekaarti paremal. Kui teil pole vahekaarti avatud, tehke järgmist: Vaade> Tööriistaken> Andmebaas.

Klõpsake nuppu Lisa ühendus. Valige Andmeallikas> MySQL (kui nuppude allalaadimisdraiver on olemas, vajutage seda.)

Minge SSH/SSL -i ja kontrollige SSH -d. Täitke oma Raspberry pi mandaat (host/kasutaja/parool). Port peaks olema 22 ja ärge unustage kontrollida parooli meelde.

Mine tagasi kindrali juurde. Host peaks olema localhost ja andmebaas projekti1. Ühenduse testimiseks täitke projekti1-admin volikirjad.

Kui ühendus on korras, minge vahekaardile Skeemid ja veenduge, et projekt1 on märgitud.

Kontrollige, kas andmebaas on õige

me@my-rpi: ~ $ echo 'näita tabeleid;' | mysql project1 -t -u project1-admin -pSisestage parool: + --------------------------- + | Tabelid_projektis1 | + ---------------------------+ | andur | | kasutajad | +---------------------------+

Konfiguratsioonifailid

Kataloogist conf leiate 4 faili. Peaksite kasutajanimed oma kasutajanimeks muutma.

Systemd

Kõigi käivitamiseks peaksite neid käske täitma.

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

mina@minu-rpi: ~/project1 $ sudo systemctl deemon-laadige mind uuesti@my-rpi: ~/project1 $ sudo systemctl käivitage projekt1-* mina@my-rpi: ~/project1 $ sudo systemctl olek project1-* ● project1- flask.service-uWSGI eksemplar projekti1 veebiliidese teenindamiseks Laetud: laaditud (/etc/systemd/system/project1-flask.service; keelatud; hankija eelseade: lubatud) Aktiivne: aktiivne (töötab) alates esmaspäevast 2018-06-04 13: 14:56 CEST; 1s tagasi Main PID: 6618 (uwsgi) Ülesanded: 6 (piir: 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

Juuni 04 13:14:56 my-rpi uwsgi [6618]: kaardistatud 383928 baiti (374 KB) 5 tuuma jaoks 4. juuni 13:14:56 my-rpi uwsgi [6618]: *** töörežiim: eelforking ***

● project1-sensor.service-projekti 1 andurite teenus laaditud: laaditud (/etc/systemd/system/project1-sensor.service; keelatud; hankija eelseadistus: lubatud) Aktiivne: aktiivne (töötab) alates esmaspäevast 2018-06-04 13: 16:49 CEST; 5 s tagasi Peamine PID: 6826 (python) Ülesanded: 1 (piir: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

Juuni 04 13:16:49 my-rpi systemd [1]: käivitas projekti 1 andurite teenuse. Juuni 04 13:16:49 my-rpi python [6826]: DEBUG: _ main _: salvestatud anduri protsess_arv = b'217 / n 'andmebaasi juuni 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Andur process_count = b'218 / n 'salvestatud andmebaasi

nginx

mina@minu-rpi: ~/project1 $ ls -l/etc/nginx/sites-*

/etc/nginx/sites-available: kokku 4 -rw-r-r-- 1 juurjuur 2416 12. juuli 2017 vaikimisi

/etc/nginx/sites-enabled: kokku 0 lrwxrwxrwx 1 juurjuur 34. jaanuar 18 13:25 vaikimisi->/etc/nginx/sites-available/default

Kõigi vaikimisi muutmiseks täitke need käsud.

mina@minu-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

Automaatne käivitamine

Veendume, et kõik algab automaatselt.

Minge conf kataloogi ja täitke need viimased käsud ning oletegi valmis!

mina@minu-rpi: ~/project1 $ sudo systemctl lubage projekt1-*

Kui taaskäivitate oma Pi, peaks see automaatselt käivituma.

5. samm: 5. samm: korpuse valmistamine

5. samm: korpuse tegemine
5. samm: korpuse tegemine
5. samm: korpuse tegemine
5. samm: korpuse tegemine
5. samm: korpuse tegemine
5. samm: korpuse tegemine
5. samm: korpuse tegemine
5. samm: korpuse tegemine

Ringlussevõtt

Eluaseme valmistamiseks kasutasin vana kappi, mille mu ema minema viskas.

alus

Saagisin 4 plangut (34 cm x 26 cm). (nii et see on kuubik mõõtmetelt 34 x 34 x 26).

Põhjale lisasin põhjaks õhukese puutüki.

Juhtidega juhatus

Keskel olen pannud 2 väikest puutükki mõlemale küljele, mõlemad 9 cm kaugusel ülevalt. See hoiab juhatust, kus juhid istuvad.

LED -plaat on väike tahvel (32 cm x 32 cm).

Puurisin LED -ide jaoks välja 9 auku.

jagunemine

Jaotuse tegin sama materjaliga, mis põhi ja laua ledidega.

4 tükki, igaüks sisselõikega 10,3 cm (9 cm x 31 cm). Nüüd saan need kokku panna.

Nupud ja RFID -lugeja

Tegin alusele augu, kuhu panna oma RFID -lugeja ja nupud. RFID jaoks panin selle ette õhukese plaaditüki, et see puhtam välja näeks.

6. samm: 6. samm: kõik korpuse paigutamine

See sõltub sellest, kuidas soovite seda teha. Mina isiklikult kasutasin palju kaableid ilma jootmiseta, sest tahan oma Raspberry Pi uuesti kasutada.

Liimisin LED -id oma kohale ja teipisin RFID -lugeja ja leivaplaadid korpuse külge.

Ja nii teete võtmesorterit!

Soovitan: