INHOUDSOPGAWE:
- Stap 1: Stap 1: Wat het ek nodig?
- Stap 2: Stap 2: Maak 'n databasis skematies
- Stap 3: Stap 3: Kodering
- Stap 4: Stap 4: Plaas al die kode op My Raspberry Pi
- Stap 5: Stap 5: Maak 'n behuising
- Stap 6: Stap 6: Alles in die huis sit
Video: Sleutelsorteerder: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
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?
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
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
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
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:
Spelontwerp in vyf stappe: 5 stappe
Spelontwerp in fliek in 5 stappe: Flick is 'n baie eenvoudige manier om 'n speletjie te maak, veral iets soos 'n legkaart, visuele roman of avontuurlike spel
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: 3 stappe
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: in hierdie instruksies gaan ons gesigsopsporing uitvoer op Raspberry Pi 4 met Shunya O/S met behulp van die Shunyaface-biblioteek. Shunyaface is 'n biblioteek vir gesigherkenning/opsporing. Die projek het ten doel om die vinnigste opsporing en herkenningssnelheid te bereik met
DIY Vanity Mirror in eenvoudige stappe (met LED -strookligte): 4 stappe
DIY Vanity Mirror in eenvoudige stappe (met behulp van LED Strip Lights): In hierdie pos het ek 'n DIY Vanity Mirror gemaak met behulp van die LED strips. Dit is regtig cool, en u moet dit ook probeer
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): 6 stappe
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): wil u u vriende skrik en 'n skreeu geraas maak tydens Halloween? Of wil u net 'n goeie grap maak? Hierdie pop-up skerm van Zombies kan dit doen! In hierdie instruksies sal ek u leer hoe u maklik Zombies kan spring deur Arduino te gebruik. Die HC-SR0
Speel Doom op u iPod in 5 maklike stappe !: 5 stappe
Speel Doom op u iPod in 5 maklike stappe !: 'n Stap-vir-stap gids oor hoe u Rockbox op u iPod kan dubbellaai om Doom en tientalle ander speletjies te speel. Dit is iets baie maklik om te doen, maar baie mense staan nog steeds verbaas as hulle sien hoe ek op my iPod doom speel en deurmekaar raak met die instruksies