INHOUDSOPGAWE:

Sleutelsorteerder: 6 stappe
Sleutelsorteerder: 6 stappe

Video: Sleutelsorteerder: 6 stappe

Video: Sleutelsorteerder: 6 stappe
Video: Plaatsen van een regenton in 6 stappen 2024, November
Anonim
Sleutelsorteerder
Sleutelsorteerder
Sleutelsorteerder
Sleutelsorteerder

Ek studeer tans NMCT by Howest. Vir ons laaste semester moes ons 'n projek maak. So ek het 'n Keysorter gemaak.

Wat doen dit?

Ons het baie motorsleutels by die huis en hulle lyk almal dieselfde. Ek het dus 'n Keysorter gemaak om hierdie probleem op te los.

Dit moet via RFID 'n sleutel inskakel en 'n plek in die boks gee. As ek weer dieselfde sleutel skandeer, sal dit sy plek wat voorheen aangewys is, wys. Daar is ook 'n knoppie om die laaste gewaste motor te wys.

Dit werk op 'n Raspberry Pi, wat ook die opsie het om 'n webbladsy via Flask by te voeg.

Op die bladsy moet ek na al die sleutels kan kyk, 'n naam by 'n sleutel kan voeg en 'n sleutel kan verwyder.

Stap 1: Stap 1: Wat het ek nodig?

Stap 1: Wat het ek nodig?
Stap 1: Wat het ek nodig?
Stap 1: Wat het ek nodig?
Stap 1: Wat het ek nodig?

Ek het begin met 'n lys van komponente wat ek nodig sal hê om hierdie ding te laat werk.

Komponente:

  • Framboos pi
  • 2 x Skofregister (74hc595)
  • 3 x knoppie
  • 9 x groen led
  • RFID -skandeerder (MFRC522)
  • 12 x weerstand 220 ohm

Toe plaas ek dit alles in my fritzing -skematika.

Toe ek eers klaar was, het ek dit in die regte lewe gemaak.

Stap 2: Stap 2: Maak 'n databasis skematies

Stap 2: Maak 'n databasis skematies
Stap 2: Maak 'n databasis skematies

Om al my data te stoor, moes ek 'n databasis skep wat op my Pi kan werk.

Ek het dit in Mysql gemaak.

Tafelmotor:

  • Motor ID
  • Gebruikers -ID
  • Merk (motorhandelsmerk)
  • Tik
  • Laaste gewas
  • Sleutel
  • RFID_ID

Stap 3: Stap 3: Kodering

Stap 3: Kodering
Stap 3: Kodering

Toe dit alles gereed was, kon ek begin kodeer.

Ek het begin deur die kode vir my sensor in Python 3.5 te maak.

Klik hier om die kode af te laai.

Gebruik die skakel om die projek te kloon.

Stap 4: Stap 4: Plaas al die kode op My Raspberry Pi

Pakkette installeer

Ek het eers al die pakkette geïnstalleer wat ek nodig gehad het om dit te laat werk.

ek@my-rpi: ~ $ sudo apt update

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

Virtuele omgewing

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

Laai die projek op u Pi op met behulp van pycharm

Maak Pycharm oop en gaan na VCS> Import from Version Control> Github en kloon my github -lêer.

Plaas die implementeringskonfigurasie in die gids wat u pas gemaak het. (/huis/ek/projek1). Druk aansoek!

Gaan na die tolkinstellings en kies die virtuele omgewing wat u pas gemaak het. (/home/me/project1/env/bin/pyhon)

Kyk of padkartering korrek is.

Nou kan u die kode oplaai na u gids met behulp van Pycharm.

Databasis

Kyk of die databasis werk. U moet iets soos hierdie kry:

my@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB databasisbediener gelaai: gelaai (/lib/systemd/system/mariadb.service; geaktiveer; verskaffer vooraf ingestel: geaktiveer) aktief: aktief (loop) sedert son 2018-06-03 09:41:18 CEST; 1 dag 4 uur gelede Hoof -PID: 781 (mysqld) Status: "Neem nou u SQL -versoeke …" Take: 28 (limiet: 4915) CGroep: /system.slice/mariadb.service └─781/usr/sbin/mysqld

Jun 03 09:41:13 my-rpi systemd [1]: Begin MariaDB-databasisbediener … Jun 03 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Let wel] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03 Junie 09:41:18 my-rpi systemd [1]: MariaDB-databasisbediener begin.

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

Skep gebruikers en voeg die databasis by

ek@my-rpi: ~ $ sudo mariadb

sodra u in die databasis is, doen dit.

SKEP GEBRUIKER 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; SKEP GEBRUIKER 'project1-sensor'@'localhost' IDENTIFIED BY 'sensorpassword';

SKEP DATABASIS -projek1;

GEEN ALLE VOORREGTE AAN projek1.* Aan 'project1-admin'@'localhost' MET TOelaagopsie; TOEEKEN SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; TOEEKEN SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSH VOORREGTE;

SKEP TABEL `gebruiker` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

SKEP TABEL `motor` (` 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 BUITELANDSE SLEUTEL (`idUser`) VERWYSINGS` gebruiker` (`idUser`) ON WISSEL GEEN AKSIE BY OPDATERING GEEN AKSIE) MOTOR = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Koppel u databasis aan Pycharm

Klik op die databasis -oortjie aan die regterkant. As u nie die oortjie oop het nie, doen dit: Bekyk> Gereedskap Windows> Databasis.

Klik op voeg verbinding toe. Kies Gegee bron> MySQL (druk op 'n knoppie om die bestuurder af te laai.)

Gaan na SSH/SSL en kyk na SSH. Vul die u Raspberry pi -geloofsbriewe in (gasheer/gebruiker/wagwoord). Poort moet 22 wees en moenie vergeet om die wagwoord vir onthou onthou nie.

Keer terug na Generaal. Gasheer moet localhost wees en databasis moet projek1 wees. Vul die geloofsbriewe van project1-admin in en toets die verbinding.

As die verbinding goed is, gaan dan na die blad Skemas en maak seker dat projek1 gemerk is.

Kyk of die databasis korrek is

me@my-rpi: ~ $ echo 'toon tabelle;' | mysql project1 -t -u project1-admin -pVoer wagwoord in: + --------------------------- + | Tabelle_in_projek1 | + ---------------------------+ | sensor | | gebruikers | +---------------------------+

Konfigurasie lêers

In die gids conf vind u 4 lêers. U moet die gebruikersname na u gebruikersnaam verander.

Stelsel

Om alles te begin, moet u hierdie opdragte uitvoer.

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

my@my-rpi: ~/project1 $ sudo systemctl daemon-herlaai my@my-rpi: ~/project1 $ sudo systemctl begin project1-* me@my-rpi: ~/project1 $ sudo systemctl status project1-* ● project1- flask.service-uWSGI-instansie om projek1-webkoppelvlak te bedien Gelaai: gelaai (/etc/systemd/system/project1-flask.service; gedeaktiveer; verkoper vooraf ingestel: geaktiveer) Aktief: aktief (loop) sedert Ma 2018-06-04 13: 14:56 CEST; 1s gelede Main PID: 6618 (uwsgi) Take: 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

Jun 04 13:14:56 my-rpi uwsgi [6618]: 383928 grepe (374 KB) gekarteer vir 5 kerns Jun 04 13:14:56 my-rpi uwsgi [6618]: *** Operasionele MODUS: voorafverwerking ***

● project1-sensor.service-projekdiensensorsensiediens gelaai: gelaai (/etc/systemd/system/project1-sensor.service; gedeaktiveer; verskaffer vooraf ingestel: geaktiveer) aktief: aktief (loop) sedert Ma 2018-06-04 13: 16:49 CEST; 5s gelede Hoof-PID: 6826 (python) Take: 1 (limiet: 4915) CGroep: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py

Junie 04 13:16:49 my-rpi systemd [1]: Projek 1-sensor diens begin. Jun 04 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Gestoorde sensor proses_count = b'217 / n 'in die databasis Jun 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Sensor sensor process_count = b'218 / n 'in databasis gestoor

nginx

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

/etc/nginx/sites-available: totaal 4 -rw-r-r-- 1 wortelwortel 2416 Jul 12 2017 standaard

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

Voer hierdie opdragte uit om alles standaard te maak.

my@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 herlaai nginx.service

Outomatiese begin

Laat ons seker maak dat alles outomaties begin.

Gaan na die conf -gids en voer hierdie laaste opdragte uit en u is klaar!

my@my-rpi: ~/project1 $ sudo systemctl aktiveer project1-*

As u u Pi herlaai, moet dit outomaties begin.

Stap 5: Stap 5: Maak 'n behuising

Stap 5: Maak 'n behuising
Stap 5: Maak 'n behuising
Stap 5: Maak 'n behuising
Stap 5: Maak 'n behuising
Stap 5: Maak 'n behuising
Stap 5: Maak 'n behuising
Stap 5: Maak 'n behuising
Stap 5: Maak 'n behuising

Herwinning

Ek het 'n ou kas gebruik wat ek deur my ma sou weggooi.

basis

Ek het 4 planke (34 cm x 26 cm) gesaag. (dit is dus 'n kubus van 34 x 34 x 26).

Aan die onderkant het ek 'n dun stuk hout as onderkant bygevoeg.

Bord met LED's

In die middel het ek 2 klein stukke hout aan elke kant gesit, beide op 9 cm van die bokant. Dit hou die raad waar die lede sal sit.

Die bord met die LED's is 'n klein bordjie (32 cm x 32 cm).

Ek het 9 gate geboor om die ledjies uit te kom.

afdeling

Ek het die afdeling gemaak met dieselfde materiaal as die onderkant en die bord met LED's.

4 stukke elk met 'n insnyding van 10,3 cm (9 cm x 31 cm). Nou kan ek hulle bymekaarmaak.

Knoppies en RFID -leser

Ek het 'n gaatjie in die basis gemaak om my RFID -leser en knoppies daarin te sit. Vir die RFID het ek 'n dun stuk bord voor dit gesit om dit skoner te laat lyk.

Stap 6: Stap 6: Alles in die huis sit

Dit hang af van hoe u dit wil doen. Ek het persoonlik baie kabels gebruik sonder om te soldeer omdat ek my Raspberry Pi wil hergebruik.

Ek het die LED's vasgeplak en die RFID -leser en broodborde aan die kas vasgeplak.

En so maak jy 'n Keysorter!

Aanbeveel: