Indholdsfortegnelse:

Nøglesortering: 6 trin
Nøglesortering: 6 trin

Video: Nøglesortering: 6 trin

Video: Nøglesortering: 6 trin
Video: Трактористы (комедия, реж. Иван Пырьев, 1939 г.) 2024, November
Anonim
Nøglesorter
Nøglesorter
Nøglesortering
Nøglesortering

Jeg læser i øjeblikket NMCT på Howest. I vores sidste semester måtte vi lave et projekt. Så jeg lavede en Keysorter.

Hvad gør den?

Vi har mange bilnøgler derhjemme, og de ligner alle ens. Så jeg lavede en Keysorter for at løse dette problem.

Den skal scanne en nøgle ind via RFID og give den et sted i boksen. Hvis jeg scanner den samme nøgle igen, viser det hans tidligere tildelte sted. Der er også en knap til at vise den sidst vaskede bil.

Dette kører al på en Raspberry Pi, som også har mulighed for at tilføje en webside via Flask.

På siden skulle jeg kunne se på alle nøglerne, tilføje et navn til en nøgle og fjerne en nøgle.

Trin 1: Trin 1: Hvad skal jeg bruge?

Trin 1: Hvad skal jeg bruge?
Trin 1: Hvad skal jeg bruge?
Trin 1: Hvad skal jeg bruge?
Trin 1: Hvad skal jeg bruge?

Jeg startede med at lave en liste over komponenter, som jeg skal bruge for at få denne ting til at fungere.

Komponenter:

  • Hindbær pi
  • 2 x Skiftregister (74hc595)
  • 3 x knap
  • 9 x grøn led
  • RFID -scanner (MFRC522)
  • 12 x modstand 220 ohm

Derefter lagde jeg alt dette i min fritzing skematisk.

Da jeg var færdig, klarede jeg det i virkeligheden.

Trin 2: Trin 2: Lav en skematisk database

Trin 2: Lav en databaseskematisk
Trin 2: Lav en databaseskematisk

For at gemme alle mine data måtte jeg oprette en database, der kunne køre på min Pi.

Jeg lavede det i Mysql.

Bordbil:

  • Bil -ID
  • bruger ID
  • Mærke (bilmærke)
  • Type
  • Sidst vasket
  • Nøgle
  • RFID_ID

Trin 3: Trin 3: Kodning

Trin 3: Kodning
Trin 3: Kodning

Da alt dette var klar, kunne jeg begynde at kode.

Jeg startede med at lave koden til min sensor i Python 3.5.

Klik her for at downloade koden.

Brug linket til at klone projektet.

Trin 4: Trin 4: Sæt al koden på My Raspberry Pi

Installation af pakker

Først installerede jeg alle de pakker, jeg havde brug for for at få dette til at fungere.

mig@my-rpi: ~ $ sudo apt opdatering

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

Virtuelt miljø

mig@my-rpi: ~ $ python3 -m pip installation-opgrader pip setuptools hjul virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 mig@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

Upload projektet til din Pi ved hjælp af pycharm

Åbn Pycharm og gå til VCS> Import fra versionskontrol> Github og klon min github -fil.

Sæt implementeringskonfigurationen til det bibliotek, du lige har oprettet. (/hjem/mig/projekt1). Tryk på ansøg!

Gå til tolkindstillingerne, og vælg det virtuelle miljø, du lige har oprettet. (/hjem/mig/projekt1/env/bin/pyhon)

Kontroller, om sti -tilknytning er korrekt.

Nu kan du uploade koden til dit bibliotek ved hjælp af Pycharm.

Database

Kontroller, om databasen kører. Du skal få sådan noget som dette:

mig@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB databaseserver Indlæst: indlæst (/lib/systemd/system/mariadb.service; aktiveret; leverandør forudindstillet: aktiveret) Aktiv: aktiv (kører) siden søn 2018-06-03 09:41:18 CEST; 1 dag 4 timer siden Main PID: 781 (mysqld) Status: "Tager dine SQL -anmodninger nu …" Opgaver: 28 (grænse: 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 [Bemærk] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03. juni 09:41:18 my-rpi systemd [1]: Startede MariaDB-databaseserver.

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

Opret brugere og tilføj databasen

mig@my-rpi: ~ $ sudo mariadb

Når du er i databasen, skal du gøre dette.

Opret BRUGER 'project1-admin'@'localhost' IDENTIFICERET MED 'adminpassword'; Opret BRUGER 'project1-web'@'localhost' IDENTIFICERET MED 'webpassword'; Opret BRUGER 'project1-sensor'@'localhost' IDENTIFICERET MED 'sensorpassword';

Opret DATABASE -projekt1;

TILDELE ALLE PRIVILEGER PÅ projekt1.* Til 'project1-admin'@'localhost' MED GRANT MULIGHED; 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

Opret tabel `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 `f1 UDENLANDSK NØGLE (`idUser`) REFERENCER` bruger` (` idUser`) TIL SLET INGEN HANDLING VED OPDATERING INGEN AKTION) MOTOR = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Tilslut din database til Pycharm

Klik på databasefanen i højre side. Hvis du ikke har en fane åben, skal du gøre dette: Vis> Værktøj Windows> Database.

Klik på tilføj forbindelse. Vælg Datakilde> MySQL (Hvis der er en knap til download af driver, skal du trykke på den.)

Gå til SSH/SSL, og tjek SSH. Udfyld dine Raspberry pi -legitimationsoplysninger (vært/bruger/adgangskode). Port skal være 22, og glem ikke at kontrollere huske adgangskode.

Gå tilbage til General. Værten skal være localhost og databasen skal være projekt1. Udfyld legitimationsoplysningerne fra project1-admin, og test forbindelsen.

Hvis forbindelsen er OK, skal du gå til fanen Skemaer og kontrollere, at projekt1 er markeret.

Kontroller, om databasen er korrekt

mig@my-rpi: ~ $ echo 'vis tabeller;' | mysql projekt1 -t -u projekt1-admin -p Indtast adgangskode: + --------------------------- + | Tabeller_ i_projekt1 | + ---------------------------+ | sensor | | brugere | +---------------------------+

Konfigurationsfiler

I telefonbogen conf finder du 4 filer. Du bør ændre brugernavne til dit brugernavn.

Systemd

For at starte alt skal du udføre disse kommandoer.

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

mig@min-rpi: ~/projekt1 $ sudo systemctl daemon-genindlæs mig@min-rpi: ~/projekt1 $ sudo systemctl start projekt1-* mig@min-rpi: ~/projekt1 $ sudo systemctl status projekt1-* ● projekt1- flask.service-uWSGI-forekomst til betjening af projekt1-webgrænseflade Indlæst: indlæst (/etc/systemd/system/project1-flask.service; deaktiveret; leverandør forudindstillet: aktiveret) Aktiv: aktiv (kører) siden man 2018-06-04 13: 14:56 CEST; 1 s siden Main PID: 6618 (uwsgi) Opgaver: 6 (grænse: 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

Jun 04 13:14:56 my-rpi uwsgi [6618]: kortlagt 383928 bytes (374 KB) til 5 kerner Jun 04 13:14:56 my-rpi uwsgi [6618]: *** Operationel MODE: forbehandling ***

● project1-sensor.service-Project 1 sensortjeneste indlæst: indlæst (/etc/systemd/system/project1-sensor.service; deaktiveret; leverandør forudindstillet: aktiveret) Aktiv: aktiv (kører) siden man 2018-06-04 13: 16:49 CEST; 5 sekunder siden Main PID: 6826 (python) Opgaver: 1 (grænse: 4915) CGruppe: /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]: Startede Project 1 sensortjeneste. 4. juni 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Gemt sensor process_count = b'217 / n 'i databasen Jun 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Gemte sensor process_count = b'218 / n 'i databasen

nginx

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

/etc/nginx/sites-available: total 4 -rw-r-r-- 1 root root 2416 Jul 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 at gøre alt som standard udfør disse kommandoer.

mig@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 genstart nginx.service

Automatisk start

Lad os sikre os, at alt starter automatisk.

Gå til conf -biblioteket og udfør disse sidste kommandoer, og du er færdig!

mig@my-rpi: ~/project1 $ sudo systemctl aktiver projekt1-*

Hvis du genstarter din Pi, skal den starte automatisk.

Trin 5: Trin 5: Lav et hus

Trin 5: Lav et hus
Trin 5: Lav et hus
Trin 5: Lav et hus
Trin 5: Lav et hus
Trin 5: Lav et hus
Trin 5: Lav et hus
Trin 5: Lav et hus
Trin 5: Lav et hus

Genbrug

Til min bolig brugte jeg et gammelt skab, som min mor ville smide væk.

grundlag

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

I bunden tilføjede jeg et tyndt stykke træ som bund.

Bord med LED'er

I midten har jeg lagt 2 små træstykker på hver side begge 9 cm fra toppen. Dette holder bestyrelsen, hvor led'erne skal sidde.

Tavlen med LED'erne er et lille bræt (32 cm x 32 cm).

Jeg borede 9 huller, før ledningerne kunne komme ud af.

division

Jeg lavede opdelingen med samme materiale som bunden og brættet med led.

4 stykker hver med et snit på 10,3 cm (9 cm x 31 cm). Nu kan jeg sætte dem sammen.

Knapper og RFID -læser

Jeg lavede et hul i basen til at sætte min RFID -læser og knapper i. Til RFID’en lagde jeg et tyndt stykke bræt foran den for at få den til at se renere ud.

Trin 6: Trin 6: Læg alt i huset

Dette afhænger af, hvordan du vil gøre det. Jeg brugte personligt mange kabler uden lodning, fordi jeg gerne vil kunne genbruge min Raspberry Pi.

Jeg limede LED'erne på plads og tapede RFID -læseren og brødbrætter til sagen.

Og sådan laver du en Keysorter!

Anbefalede: