Innholdsfortegnelse:

Keysorter: 6 trinn
Keysorter: 6 trinn

Video: Keysorter: 6 trinn

Video: Keysorter: 6 trinn
Video: MMS - Key Sorter 400V 2024, Juli
Anonim
Keysorter
Keysorter
Keysorter
Keysorter

Jeg studerer for tiden NMCT på Howest. I siste semester måtte vi lage et prosjekt. Så jeg laget en Keysorter.

Hva gjør den?

Vi har mange bilnøkler hjemme, og de ser alle like ut. Så jeg tok en Keysorter for å løse dette problemet.

Den må skanne inn en nøkkel via RFID og gi den et sted i esken. Hvis jeg skanner den samme nøkkelen igjen, vil det vise hans tidligere tildelte sted. Det er også en knapp for å vise den siste vaskede bilen.

Dette vil kjøre på en Raspberry Pi som også har muligheten til å legge til en webside via Flask.

På siden skal jeg kunne se på alle tastene, legge til et navn på en nøkkel og fjerne en nøkkel.

Trinn 1: Trinn 1: Hva trenger jeg?

Trinn 1: Hva trenger jeg?
Trinn 1: Hva trenger jeg?
Trinn 1: Hva trenger jeg?
Trinn 1: Hva trenger jeg?

Jeg begynte med å lage en liste over komponenter som jeg trenger for å få dette til å fungere.

Komponenter:

  • Bringebær pi
  • 2 x skiftregister (74hc595)
  • 3 x knapp
  • 9 x grønn led
  • RFID -skanner (MFRC522)
  • 12 x motstand 220 ohm

Deretter legger jeg alt dette inn i min fritzingskjema.

Når jeg var ferdig med dette, klarte jeg det i virkeligheten.

Trinn 2: Trinn 2: Lag en databaseskjema

Trinn 2: Lag en databaseskematisk
Trinn 2: Lag en databaseskematisk

For å lagre alle dataene mine måtte jeg lage en database som kunne kjøre på min Pi.

Jeg klarte det i Mysql.

Bordbil:

  • Bil -ID
  • bruker-ID
  • Merke (bilmerke)
  • Type
  • Sist vasket
  • Nøkkel
  • RFID_ID

Trinn 3: Trinn 3: Koding

Trinn 3: Koding
Trinn 3: Koding

Når alt dette var klart kunne jeg begynne å kode.

Jeg begynte med å lage koden for sensoren min i Python 3.5.

For å laste ned koden klikk her.

Bruk lenken for å klone prosjektet.

Trinn 4: Trinn 4: Sette Al koden på My Raspberry Pi

Installere pakker

Først installerte jeg alle pakkene jeg trengte for å få dette til å fungere.

meg@my-rpi: ~ $ sudo apt oppdatering

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

Virtuelt miljø

meg@my-rpi: ~ $ python3 -m pip install-oppgrader pip setuptools hjul 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/active (env) me@my-rpi: ~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

Last opp prosjektet til din Pi ved hjelp av pycharm

Åpne Pycharm og gå til VCS> Importer fra versjonskontroll> Github og klon min github -fil.

Sett distribusjonskonfigurasjonen til katalogen du nettopp har laget. (/hjem/meg/prosjekt1). Trykk på søk!

Gå til tolkinnstillingene og velg det virtuelle miljøet du nettopp har laget. (/home/me/project1/env/bin/pyhon)

Sjekk om banetilordning er riktig.

Nå kan du laste opp koden til katalogen din ved hjelp av Pycharm.

Database

Sjekk om databasen kjører. Du bør få noe slikt:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB databaseserver Lastet: lastet (/lib/systemd/system/mariadb.service; aktivert; leverandør forhåndsinnstilt: aktivert) Aktiv: aktiv (kjører) siden søndag 2018-06-03 09:41:18 CEST; 1 dag 4t siden Main PID: 781 (mysqld) Status: "Tar SQL -forespørslene dine nå …" Oppgaver: 28 (grense: 4915) CGruppe: /system.slice/mariadb.service └─781/usr/sbin/mysqld

3. juni 09:41:13 my-rpi systemd [1]: Starter MariaDB-databaseserver … 3. juni 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Merk] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03. juni 09:41:18 my-rpi systemd [1]: Startet MariaDB databaseserver.

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

Opprett brukere og legg til databasen

meg@my-rpi: ~ $ sudo mariadb

Når du er i databasen, gjør du dette.

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

LAG DATABASE -prosjekt1;

TILDELE ALLE PRIVILEGER PÅ prosjekt1.* Til 'project1-admin'@'localhost' MED TILBUDSALTERNATIV; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSH -PRIVILEGER;

CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

LAG TABELL `bil` (` 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` fk_C FOREIGN KEY (`idUser`) REFERENCES` user` (`idUser`) ON DELETE NO ACTION ON UPDATE NO ACTION) MOTOR = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Koble databasen din til Pycharm

Klikk på databasefanen på høyre side. Hvis du ikke har en fane åpen, gjør du dette: Vis> Verktøy Windows> Database.

Klikk på legg til tilkobling. Velg Datakilde> MySQL (hvis det er en knapp for nedlasting av driver, trykk på den.)

Gå til SSH/SSL og sjekk SSH. Fyll ut din Raspberry pi -legitimasjon (vert/bruker/passord). Porten skal være 22 og ikke glem å sjekke husk passord.

Gå tilbake til General. Verten skal være lokal vert og databasen skal være prosjekt1. Fyll ut legitimasjonen fra project1-admin og test tilkoblingen.

Hvis tilkoblingen er OK, gå til kategorien Skjemaer og kontroller at prosjekt1 er merket.

Sjekk om databasen er korrekt

me@my-rpi: ~ $ echo 'vis tabeller;' | mysql project1 -t -u project1-admin -p Skriv inn passord: + --------------------------- + | Tabeller_ i_prosjekt1 | + ---------------------------+ | sensor | | brukere | +---------------------------+

Konfigurasjonsfiler

I katalogen conf finner du 4 filer. Du bør endre brukernavnene til brukernavnet ditt.

Systemd

For å starte alt bør du utføre disse kommandoene.

me@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-uWSGI forekomst for å betjene prosjekt1 webgrensesnitt Lastet: lastet (/etc/systemd/system/project1-flask.service; deaktivert; leverandør forhåndsinnstilt: aktivert) Aktiv: aktiv (kjører) siden man 2018-06-04 13: 14:56 CEST; 1 s siden Main PID: 6618 (uwsgi) Oppgaver: 6 (grense: 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. juni 13:14:56 my-rpi uwsgi [6618]: kartlagt 383928 byte (374 KB) for 5 kjerner 4. juni 13:14:56 my-rpi uwsgi [6618]: *** Driftsmodus: preforking ***

● project1-sensor.service-Project 1 sensortjeneste Lastet: lastet (/etc/systemd/system/project1-sensor.service; deaktivert; leverandør forhåndsinnstilt: aktivert) Aktiv: aktiv (kjører) siden man 2018-06-04 13: 16:49 CEST; 5s siden Main PID: 6826 (python) Oppgaver: 1 (grense: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

4. juni 13:16:49 my-rpi systemd [1]: Startet Project 1 sensortjeneste. 4. juni 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Lagret sensor process_count = b'217 / n 'til databasen 4. juni 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Lagret sensor process_count = b'218 / n 'i databasen

nginx

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

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

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

For å gjøre alt til standard utfør disse kommandoene.

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

Auto Start

La oss sørge for at alt starter automatisk.

Gå til conf -katalogen og utfør disse siste kommandoene, og du er ferdig!

me@my-rpi: ~/project1 $ sudo systemctl aktiver prosjekt1-*

Hvis du starter Pi på nytt, bør den starte automatisk.

Trinn 5: Trinn 5: Lag et hus

Trinn 5: Lag et hus
Trinn 5: Lag et hus
Trinn 5: Lag et hus
Trinn 5: Lag et hus
Trinn 5: Lag et hus
Trinn 5: Lag et hus
Trinn 5: Lag et hus
Trinn 5: Lag et hus

Resirkulering

For å lage huset mitt brukte jeg et gammelt skap som moren min ville kaste bort.

utgangspunkt

Jeg saget 4 planker (34 cm x 26 cm). (så det er en terning fra 34 x 34 x 26).

På bunnen la jeg til et tynt stykke tre som bunn.

Brett med led

I midten har jeg lagt 2 små trebiter på hver side begge 9 cm fra toppen. Dette holder styret der lederne skal sitte.

Brettet med LED -er er et lite brett (32 cm x 32 cm).

Jeg boret 9 hull for ledene å komme ut av.

inndeling

Jeg gjorde inndelingen med samme materiale som bunnen og brettet med led.

4 stykker hver med et snitt på 10,3 cm (9 cm x 31 cm). Nå kan jeg sette dem sammen.

Knapper og RFID -leser

Jeg lagde et hull i basen for å sette RFID -leseren og knappene i. For RFID -en la jeg et tynt brett foran det for å få det til å se renere ut.

Trinn 6: Trinn 6: Legge alt i huset

Dette avhenger av hvordan du vil gjøre det. Jeg personlig brukte mange kabler uten lodding fordi jeg vil kunne bruke Raspberry Pi på nytt.

Jeg limte lysdiodene på plass og teipet RFID -leseren og brødbrettene på saken.

Og det er slik du lager en Keysorter!

Anbefalt: