Inhoudsopgave:

Sleutelsorteerder: 6 stappen
Sleutelsorteerder: 6 stappen

Video: Sleutelsorteerder: 6 stappen

Video: Sleutelsorteerder: 6 stappen
Video: Plaatsen van een regenton in 6 stappen 2024, Juli-
Anonim
Sleutelsorteerder
Sleutelsorteerder
Sleutelsorteerder
Sleutelsorteerder

Ik studeer momenteel NMCT aan Howest. Voor ons laatste semester moesten we een project maken. Dus heb ik een Keysorter gemaakt.

Wat doet het?

We hebben veel autosleutels in huis en ze lijken allemaal op elkaar. Dus heb ik een Keysorter gemaakt om dit probleem op te lossen.

Hij moet via RFID een sleutel inscannen en een plaatsje geven in de doos. Als ik dezelfde sleutel opnieuw scan, wordt zijn eerder toegewezen plaats weergegeven. Er is ook een knop om de laatst gewassen auto te tonen.

Dit zal allemaal draaien op een Raspberry Pi die ook de mogelijkheid heeft om een webpagina toe te voegen via Flask.

Op de pagina zou ik alle sleutels moeten kunnen bekijken, een naam aan een sleutel kunnen toevoegen en een sleutel kunnen verwijderen.

Stap 1: Stap 1: Wat heb ik nodig?

Stap 1: Wat heb ik nodig?
Stap 1: Wat heb ik nodig?
Stap 1: Wat heb ik nodig?
Stap 1: Wat heb ik nodig?

Ik begon met het maken van een lijst met componenten die ik nodig heb om dit ding te laten werken.

componenten:

  • Frambozenpi
  • 2 x Schakelregister (74hc595)
  • 3 x knop
  • 9 x groene led
  • RFID-scanner (MFRC522)
  • 12 x weerstand 220 ohm

Toen heb ik dit alles in mijn fritzing-schema gezet.

Toen ik dit eenmaal had gedaan, heb ik het in het echte leven gemaakt.

Stap 2: Stap 2: Een databaseschema maken

Stap 2: Een databaseschema maken
Stap 2: Een databaseschema maken

Om al mijn gegevens te bewaren moest ik een database maken die op mijn Pi kon draaien.

Ik heb het gemaakt in Mysql.

Tafelwagen:

  • Auto-ID
  • gebruikersnaam
  • Merk (automerk)
  • Type
  • Laatst gewassen
  • Toets
  • RFID_ID

Stap 3: Stap 3: Coderen

Stap 3: Coderen
Stap 3: Coderen

Toen dit allemaal klaar was kon ik beginnen met coderen.

Ik begon met het maken van de code voor mijn sensor in Python 3.5.

Klik hier om de code te downloaden.

Gebruik de link om het project te klonen.

Stap 4: Stap 4: Al de code op mijn Raspberry Pi zetten

Pakketten installeren

Eerst installeerde ik alle pakketten die ik nodig had om dit te laten werken.

mij@mijn-rpi:~ $ sudo apt update

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

Virtuele omgeving

me@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/activate (env)me@my-rpi:~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPauth Flask-MySQL mysql-connector-python passlib

Upload het project naar je Pi met pycharm

Open Pycharm en ga naar VCS > Importeren vanuit versiebeheer > Github en kloon mijn github-bestand.

Plaats de implementatieconfiguratie in de map die u zojuist hebt gemaakt. (/home/ik/project1). Druk op solliciteren!

Ga naar de tolkinstellingen en kies de virtuele omgeving die je zojuist hebt gemaakt. (/home/me/project1/env/bin/pyhon)

Controleer of de padtoewijzing correct is.

Nu kunt u de code uploaden naar uw directory met behulp van Pycharm.

Database

Controleer of de database actief is. Je zou zoiets als dit moeten krijgen:

me@my-rpi:~ $ sudo systemctl status mysql● mariadb.service - MariaDB-databaseserver Geladen: geladen (/lib/systemd/system/mariadb.service; ingeschakeld; leveranciervoorinstelling: ingeschakeld) Actief: actief (actief) sinds Sun 2018-06-03 09:41:18 CEST; 1 dag 4 uur geleden Hoofd-PID: 781 (mysqld) Status: "Uw SQL-verzoeken nu in behandeling nemen…" Taken: 28 (limiet: 4915) CGroup: /system.slice/mariadb.service └─781 /usr/sbin/mysqld

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

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

Gebruikers aanmaken en de database toevoegen

mij@mijn-rpi:~ $ sudo mariadb

zodra u in de database bent, doet u dit.

MAAK GEBRUIKER 'project1-admin'@'localhost' GEDENTIFICEERD DOOR 'adminpassword'; MAAK GEBRUIKER 'project1-web'@'localhost' GEDENTIFICEERD DOOR 'webpassword'; MAAK GEBRUIKER 'project1-sensor'@'localhost' GEDENTIFICEERD DOOR 'sensorpassword';

MAAK DATABASE project1;

VERLENEN ALLE VOORRECHTEN OP project1.* aan 'project1-admin'@'localhost' MET SUBSIDIEOPTIE; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; SPOEL VOORRECHTEN;

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

MAAK TABEL `car` (`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_Car_User FOREIGN KEY (`idUser`) REFERENTIES `user` (`idUser`) AAN VERWIJDEREN GEEN ACTIE BIJ UPDATE GEEN ACTIE) ENGINE=InnoDB AUTO_INCREMENT=4 STANDAARD CHARSET=utf8

Verbind uw database met Pycharm

Klik op het tabblad database aan de rechterkant. Als je het tabblad niet hebt geopend, doe dit dan: Beeld > Hulpprogramma Vensters > Database.

Klik op verbinding toevoegen. Kies Gegevensbron > MySQL (als er een downloadstuurprogramma is, druk erop.)

Ga naar SSH/SSL en vink SSH aan. Vul de inloggegevens van uw Raspberry pi in (host/gebruiker/wachtwoord). Poort moet 22 zijn en vergeet niet het wachtwoord onthouden aan te vinken.

Ga terug naar generaal. Host moet localhost zijn en database moet project1 zijn. Vul de gegevens van project1-admin in en test de verbinding.

Als de verbinding in orde is, ga dan naar het tabblad Schema's en zorg ervoor dat project1 is aangevinkt.

Controleer of de database correct is

me@mijn-rpi:~ $ echo 'toon tabellen;' | mysql project1 -t -u project1-admin -pVoer wachtwoord in: +---------------------------+ | Tabellen_in_project1 | +---------------------------+ | sensor | | gebruikers | +---------------------------+

Configuratiebestanden

In de directory conf vind je 4 bestanden. U moet de gebruikersnamen wijzigen in uw gebruikersnaam.

Systemd

Om alles te starten, moet u deze opdrachten uitvoeren.

mij@mijn-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-instantie om de webinterface van project1 te bedienen Geladen: geladen (/etc/systemd/system/project1-flask.service; uitgeschakeld; vooraf ingestelde leverancier: ingeschakeld) Actief: actief (actief) sinds ma 2018-06-04 13: 14:56 CEST; 1s geleden Hoofd-PID: 6618 (uwsgi) Taken: 6 (limiet: 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

04 juni 13:14:56 my-rpi uwsgi[6618]: 383928 bytes (374 KB) toegewezen voor 5 cores 04 juni 13:14:56 my-rpi uwsgi[6618]: *** Operationele MODUS: preforking ***

● project1-sensor.service - Project 1 sensorservice Geladen: geladen (/etc/systemd/system/project1-sensor.service; uitgeschakeld; vooraf ingestelde leverancier: ingeschakeld) Actief: actief (actief) sinds ma 2018-06-04 13: 16:49 CEST; 5s geleden Hoofd-PID: 6826 (python) Taken: 1 (limiet: 4915) CGroup: /system.slice/project1-sensor.service └─6826 /home/me/project1/env/bin/python /home/me/project1 /sensor/sensor.py

04 juni 13:16:49 my-rpi systemd[1]: Project 1 sensorservice gestart. 04 juni 13:16:49 my-rpi python[6826]: DEBUG:_main_:Saved sensor process_count=b'217\n' naar database 04 juni 13:16:55 my-rpi python[6826]: DEBUG:_main_: Opgeslagen sensor process_count=b'218\n' in database

nginx

ik@mijn-rpi:~/project1 $ ls -l /etc/nginx/sites-*

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

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

Voer deze opdrachten uit om alles standaard te maken.

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 herstart nginx.service

Automatische start

Laten we ervoor zorgen dat alles automatisch start.

Ga naar de conf directory en voer deze laatste commando's uit en je bent klaar!

mij@mijn-rpi:~/project1 $ sudo systemctl activeer project1-*

Als u uw Pi opnieuw opstart, zou deze automatisch moeten starten.

Stap 5: Stap 5: Een behuizing maken

Stap 5: Een behuizing maken
Stap 5: Een behuizing maken
Stap 5: Een behuizing maken
Stap 5: Een behuizing maken
Stap 5: Een behuizing maken
Stap 5: Een behuizing maken
Stap 5: Een behuizing maken
Stap 5: Een behuizing maken

Recycling

Om mijn huis te maken gebruikte ik een oude kast die mijn moeder zou weggooien.

baseren

Ik heb 4 planken gezaagd (34 cm x 26 cm). (dus het is een kubus van 34 x 34 x 26).

Op de bodem heb ik een dun stuk hout als bodem toegevoegd.

Bord met led's

In het midden heb ik aan elke kant 2 kleine stukjes hout gelegd, beide op 9 cm van de bovenkant. Dit houdt het bord vast waar de led's zullen zitten.

Het bord met de led's is een klein bord (32 cm x 32 cm).

Ik heb 9 gaten geboord voor de led's om uit te komen.

afdeling

Ik heb de indeling gemaakt met hetzelfde materiaal als de bodem en het bord met led's.

4 stuks met elk een incisie op 10,3 cm (9 cm x 31 cm). Nu kan ik ze samenvoegen.

Knoppen en RFID-lezer

Ik heb een gat in de basis gemaakt om mijn RFID-lezer en knoppen in te doen. Voor de RFID heb ik er een dun stukje bord voor gedaan om het er schoner uit te laten zien.

Stap 6: Stap 6: Alles in de behuizing plaatsen

Dit hangt af van hoe je het wilt doen. Ik heb persoonlijk veel kabels gebruikt zonder te solderen omdat ik mijn Raspberry Pi opnieuw wil kunnen gebruiken.

Ik heb de led's op hun plaats gelijmd en de RFID-lezer en breadboards op de behuizing geplakt.

En zo maak je een Keysorter!

Aanbevolen: