Innehållsförteckning:

Keysorter: 6 steg
Keysorter: 6 steg

Video: Keysorter: 6 steg

Video: Keysorter: 6 steg
Video: MMS - Key Sorter 400V 2024, November
Anonim
Nyckelsorterare
Nyckelsorterare
Nyckelsorterare
Nyckelsorterare

Jag studerar för närvarande NMCT på Howest. Under vår sista termin fick vi göra ett projekt. Så jag gjorde en Keysorter.

Vad gör det?

Vi har många bilnycklar hemma och alla ser lika ut. Så jag gjorde en Keysorter för att lösa detta problem.

Den måste skanna in en nyckel via RFID och ge den en plats i lådan. Om jag skannar samma nyckel igen kommer det att visa hans tidigare tilldelade plats. Det finns också en knapp för att visa den senast tvättade bilen.

Detta körs på en Raspberry Pi som också har möjlighet att lägga till en webbsida via Flask.

På sidan ska jag kunna titta på alla nycklar, lägga till ett namn på en nyckel och ta bort en nyckel.

Steg 1: Steg 1: Vad behöver jag?

Steg 1: Vad behöver jag?
Steg 1: Vad behöver jag?
Steg 1: Vad behöver jag?
Steg 1: Vad behöver jag?

Jag började med att göra en lista över komponenter som jag behöver för att få det här att fungera.

Komponenter:

  • Raspberry Pi
  • 2 x skiftregister (74hc595)
  • 3 x knapp
  • 9 x grön led
  • RFID -skanner (MFRC522)
  • 12 x motstånd 220 ohm

Sedan lägger jag allt detta i min fritzing schema.

När jag väl hade gjort det lyckades jag i verkligheten.

Steg 2: Steg 2: Skapa en databasschema

Steg 2: Gör en databas schematisk
Steg 2: Gör en databas schematisk

För att spara alla mina data var jag tvungen att skapa en databas som kunde köras på min Pi.

Jag gjorde det i Mysql.

Bordsbil:

  • Bil -ID
  • användar ID
  • Märke (bilmärke)
  • Typ
  • Senast tvättad
  • Nyckel
  • RFID_ID

Steg 3: Steg 3: Kodning

Steg 3: Kodning
Steg 3: Kodning

När allt detta var klart kunde jag börja koda.

Jag började med att skapa koden för min sensor i Python 3.5.

För att ladda ner koden klicka här.

Använd länken för att klona projektet.

Steg 4: Steg 4: Sätter Al -koden på My Raspberry Pi

Installera paket

Först installerade jag alla paket som jag behövde för att få detta att fungera.

me@my-rpi: ~ $ sudo apt update

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

Virtuell miljö

me@my-rpi: ~ $ python3 -m pip install-upgrade pip setuptools wheel 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

Ladda upp projektet till din Pi med pycharm

Öppna Pycharm och gå till VCS> Importera från versionskontroll> Github och klona min github -fil.

Sätt distributionskonfigurationen till den katalog du just skapat. (/home/me/project1). Tryck på ansök!

Gå till tolkinställningarna och välj den virtuella miljö du just skapat. (/home/me/project1/env/bin/pyhon)

Kontrollera om sökvägsmappning är korrekt.

Nu kan du ladda upp koden till din katalog med Pycharm.

Databas

Kontrollera om databasen körs. Du bör få något så här:

me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB databaseserver Lastad: laddad (/lib/systemd/system/mariadb.service; aktiverad; leverantörsinställning: aktiverad) Aktiv: aktiv (körs) sedan sön 2018-06-03 09:41:18 CEST; 1 dag 4 timmar sedan Main PID: 781 (mysqld) Status: "Tar dina SQL -förfrågningar nu …" Uppgifter: 28 (gräns: 4915) CGrupp: /system.slice/mariadb.service └─781/usr/sbin/mysqld

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

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

Skapa användare och lägga till databasen

me@my-rpi: ~ $ sudo mariadb

när du väl är i databasen gör du detta.

SKAPA ANVÄNDARE 'project1-admin'@'localhost' IDENTIFIERAD MED 'adminpassword'; SKAPA ANVÄNDARE 'project1-web'@'localhost' IDENTIFIERAD MED 'webpassword'; SKAPA ANVÄNDARE 'project1-sensor'@'localhost' IDENTIFIERAD MED 'sensorpassword';

SKAPA DATABAS -projekt1;

GE ALLA PRIVILEGER PÅ projekt1.* Till 'project1-admin'@'localhost' MED GRANT-ALTERNATIV; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSH PRIVILEGER;

SKAPA TABELL `användare` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

SKAPA 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) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Anslut din databas till Pycharm

Klicka på databasfliken till höger. Om du inte har en flik öppen gör du så här: Visa> Verktygsfönster> Databas.

Klicka på lägg till anslutning. Välj Datakälla> MySQL (Om det finns en knapp för nedladdning av drivrutinen, tryck på den.)

Gå till SSH/SSL och kontrollera SSH. Fyll i dina Raspberry pi -referenser (värd/användare/lösenord). Porten ska vara 22 och glöm inte att kontrollera ihåg lösenord.

Gå tillbaka till General. Värd ska vara lokal värd och databas ska vara projekt1. Fyll i referenser från project1-admin och testa anslutningen.

Om anslutningen är OK, gå till fliken Scheman och se till att projekt1 är markerat.

Kontrollera om databasen är korrekt

me@my-rpi: ~ $ echo 'visa tabeller;' | mysql project1 -t -u project1-admin -pAnge lösenord: + --------------------------- + | Tabeller_in_projekt1 | + ---------------------------+ | sensor | | användare | +---------------------------+

Konfigurationsfiler

I katalogen conf hittar du 4 filer. Du bör ändra användarnamnen till ditt användarnamn.

Systemd

För att starta allt bör du utföra dessa kommandon.

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-instans för att betjäna projekt1 webbgränssnitt Loaded: laddad (/etc/systemd/system/project1-flask.service; inaktiverad; leverantörsinställning: aktiverad) Aktiv: aktiv (igång) sedan må 2018-06-04 13: 14:56 CEST; 1 s sedan Main PID: 6618 (uwsgi) Uppgifter: 6 (gräns: 4915) CGrupp: /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]: mappade 383928 bytes (374 KB) för 5 kärnor Jun 04 13:14:56 my-rpi uwsgi [6618]: *** Operativt LÄGE: preforkning ***

● project1-sensor.service-Project 1 sensorservice Lastad: laddad (/etc/systemd/system/project1-sensor.service; inaktiverad; leverantörsinställning: aktiverad) Aktiv: aktiv (igång) sedan mån 2018-06-04 13: 16:49 CEST; 5s sedan Main PID: 6826 (python) Uppgifter: 1 (gräns: 4915) CGrupp: /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]: Startade Project 1 sensortjänst. 04 juni 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Sparad sensor process_count = b'217 / n 'till databasen 04 juni 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Sparad sensor process_count = b'218 / n 'i databasen

nginx

me@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

För att göra allt som standard kör dessa kommandon.

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 starta om nginx.service

Autostart

Låt oss se till att allt startar automatiskt.

Gå till conf -katalogen och kör dessa sista kommandon och du är klar!

me@my-rpi: ~/project1 $ sudo systemctl aktivera projekt1-*

Om du startar om din Pi bör den starta automatiskt.

Steg 5: Steg 5: Skapa ett hus

Steg 5: Skapa ett bostad
Steg 5: Skapa ett bostad
Steg 5: Skapa ett bostad
Steg 5: Skapa ett bostad
Steg 5: Skapa ett bostad
Steg 5: Skapa ett bostad
Steg 5: Skapa ett bostad
Steg 5: Skapa ett bostad

Återvinning

För att göra mitt boende använde jag en gammal garderob som min mamma skulle slänga.

bas

Jag sågade 4 plankor (34 cm x 26 cm). (så det är en kub från 34 x 34 x 26).

På botten la jag till en tunn träbit som botten.

Bräda med led

I mitten har jag lagt 2 små träbitar på varje sida båda 9 cm från toppen. Detta håller styrelsen där ledarna kommer att sitta.

Brädan med lysdioderna är en liten bräda (32 cm x 32 cm).

Jag borrade 9 hål för ledarna att komma ur.

division

Jag gjorde uppdelningen med samma material som botten och brädan med led.

4 bitar vardera med ett snitt på 10,3 cm (9 cm x 31 cm). Nu kan jag sätta ihop dem.

Knappar och RFID -läsare

Jag gjorde ett hål i basen för att sätta in min RFID -läsare och knappar i. För RFID lägger jag en tunn skiva framför den så att den ser renare ut.

Steg 6: Steg 6: Sätta allt i höljet

Detta beror på hur du vill göra det. Jag använde personligen många kablar utan lödning eftersom jag vill kunna återanvända min Raspberry Pi.

Jag limmade lysdioderna på plats och tejpade RFID -läsaren och brödbrädorna på fodralet.

Och det är så du gör en Keysorter!

Rekommenderad: