Innholdsfortegnelse:
- Trinn 1: Trinn 1: Hva trenger jeg?
- Trinn 2: Trinn 2: Lag en databaseskjema
- Trinn 3: Trinn 3: Koding
- Trinn 4: Trinn 4: Sette Al koden på My Raspberry Pi
- Trinn 5: Trinn 5: Lag et hus
- Trinn 6: Trinn 6: Legge alt i huset
Video: Keysorter: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Jeg studerer for tiden NMCT på Howest. I siste semester måtte vi lage et prosjekt. Så jeg laget en Keysorter.
Hva gjør den?
Vi har mange bilnøkler hjemme, og de ser alle like ut. Så jeg tok en Keysorter for å løse dette problemet.
Den må skanne inn en nøkkel via RFID og gi den et sted i esken. Hvis jeg skanner den samme nøkkelen igjen, vil det vise hans tidligere tildelte sted. Det er også en knapp for å vise den siste vaskede bilen.
Dette vil kjøre på en Raspberry Pi som også har muligheten til å legge til en webside via Flask.
På siden skal jeg kunne se på alle tastene, legge til et navn på en nøkkel og fjerne en nøkkel.
Trinn 1: Trinn 1: Hva trenger jeg?
Jeg begynte med å lage en liste over komponenter som jeg trenger for å få dette til å fungere.
Komponenter:
- Bringebær pi
- 2 x skiftregister (74hc595)
- 3 x knapp
- 9 x grønn led
- RFID -skanner (MFRC522)
- 12 x motstand 220 ohm
Deretter legger jeg alt dette inn i min fritzingskjema.
Når jeg var ferdig med dette, klarte jeg det i virkeligheten.
Trinn 2: Trinn 2: Lag en databaseskjema
For å lagre alle dataene mine måtte jeg lage en database som kunne kjøre på min Pi.
Jeg klarte det i Mysql.
Bordbil:
- Bil -ID
- bruker-ID
- Merke (bilmerke)
- Type
- Sist vasket
- Nøkkel
- RFID_ID
Trinn 3: Trinn 3: Koding
Når alt dette var klart kunne jeg begynne å kode.
Jeg begynte med å lage koden for sensoren min i Python 3.5.
For å laste ned koden klikk her.
Bruk lenken for å klone prosjektet.
Trinn 4: Trinn 4: Sette Al koden på My Raspberry Pi
Installere pakker
Først installerte jeg alle pakkene jeg trengte for å få dette til å fungere.
meg@my-rpi: ~ $ sudo apt oppdatering
me@my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
Virtuelt miljø
meg@my-rpi: ~ $ python3 -m pip install-oppgrader pip setuptools hjul 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
Last opp prosjektet til din Pi ved hjelp av pycharm
Åpne Pycharm og gå til VCS> Importer fra versjonskontroll> Github og klon min github -fil.
Sett distribusjonskonfigurasjonen til katalogen du nettopp har laget. (/hjem/meg/prosjekt1). Trykk på søk!
Gå til tolkinnstillingene og velg det virtuelle miljøet du nettopp har laget. (/home/me/project1/env/bin/pyhon)
Sjekk om banetilordning er riktig.
Nå kan du laste opp koden til katalogen din ved hjelp av Pycharm.
Database
Sjekk om databasen kjører. Du bør få noe slikt:
me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB databaseserver Lastet: lastet (/lib/systemd/system/mariadb.service; aktivert; leverandør forhåndsinnstilt: aktivert) Aktiv: aktiv (kjører) siden søndag 2018-06-03 09:41:18 CEST; 1 dag 4t siden Main PID: 781 (mysqld) Status: "Tar SQL -forespørslene dine nå …" Oppgaver: 28 (grense: 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 [Merk] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03. juni 09:41:18 my-rpi systemd [1]: Startet MariaDB databaseserver.
meg@my -rpi: ~ $ ss -lt | grep mysql LYTT 0 80 127.0.0.1:mysql *: *
Opprett brukere og legg til databasen
meg@my-rpi: ~ $ sudo mariadb
Når du er i databasen, gjør du dette.
CREATE USER 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; OPPRETT BRUKER 'project1-sensor'@'localhost' IDENTIFISERT MED 'sensorpassword';
LAG DATABASE -prosjekt1;
TILDELE ALLE PRIVILEGER PÅ prosjekt1.* Til 'project1-admin'@'localhost' MED TILBUDSALTERNATIV; 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
LAG 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) MOTOR = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8
Koble databasen din til Pycharm
Klikk på databasefanen på høyre side. Hvis du ikke har en fane åpen, gjør du dette: Vis> Verktøy Windows> Database.
Klikk på legg til tilkobling. Velg Datakilde> MySQL (hvis det er en knapp for nedlasting av driver, trykk på den.)
Gå til SSH/SSL og sjekk SSH. Fyll ut din Raspberry pi -legitimasjon (vert/bruker/passord). Porten skal være 22 og ikke glem å sjekke husk passord.
Gå tilbake til General. Verten skal være lokal vert og databasen skal være prosjekt1. Fyll ut legitimasjonen fra project1-admin og test tilkoblingen.
Hvis tilkoblingen er OK, gå til kategorien Skjemaer og kontroller at prosjekt1 er merket.
Sjekk om databasen er korrekt
me@my-rpi: ~ $ echo 'vis tabeller;' | mysql project1 -t -u project1-admin -p Skriv inn passord: + --------------------------- + | Tabeller_ i_prosjekt1 | + ---------------------------+ | sensor | | brukere | +---------------------------+
Konfigurasjonsfiler
I katalogen conf finner du 4 filer. Du bør endre brukernavnene til brukernavnet ditt.
Systemd
For å starte alt bør du utføre disse kommandoene.
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 forekomst for å betjene prosjekt1 webgrensesnitt Lastet: lastet (/etc/systemd/system/project1-flask.service; deaktivert; leverandør forhåndsinnstilt: aktivert) Aktiv: aktiv (kjører) siden man 2018-06-04 13: 14:56 CEST; 1 s siden Main PID: 6618 (uwsgi) Oppgaver: 6 (grense: 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
4. juni 13:14:56 my-rpi uwsgi [6618]: kartlagt 383928 byte (374 KB) for 5 kjerner 4. juni 13:14:56 my-rpi uwsgi [6618]: *** Driftsmodus: preforking ***
● project1-sensor.service-Project 1 sensortjeneste Lastet: lastet (/etc/systemd/system/project1-sensor.service; deaktivert; leverandør forhåndsinnstilt: aktivert) Aktiv: aktiv (kjører) siden man 2018-06-04 13: 16:49 CEST; 5s siden Main PID: 6826 (python) Oppgaver: 1 (grense: 4915) CGroup: /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]: Startet Project 1 sensortjeneste. 4. juni 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Lagret sensor process_count = b'217 / n 'til databasen 4. juni 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Lagret sensor process_count = b'218 / n 'i databasen
nginx
meg@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
For å gjøre alt til standard utfør disse kommandoene.
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 restart nginx.service
Auto Start
La oss sørge for at alt starter automatisk.
Gå til conf -katalogen og utfør disse siste kommandoene, og du er ferdig!
me@my-rpi: ~/project1 $ sudo systemctl aktiver prosjekt1-*
Hvis du starter Pi på nytt, bør den starte automatisk.
Trinn 5: Trinn 5: Lag et hus
Resirkulering
For å lage huset mitt brukte jeg et gammelt skap som moren min ville kaste bort.
utgangspunkt
Jeg saget 4 planker (34 cm x 26 cm). (så det er en terning fra 34 x 34 x 26).
På bunnen la jeg til et tynt stykke tre som bunn.
Brett med led
I midten har jeg lagt 2 små trebiter på hver side begge 9 cm fra toppen. Dette holder styret der lederne skal sitte.
Brettet med LED -er er et lite brett (32 cm x 32 cm).
Jeg boret 9 hull for ledene å komme ut av.
inndeling
Jeg gjorde inndelingen med samme materiale som bunnen og brettet med led.
4 stykker hver med et snitt på 10,3 cm (9 cm x 31 cm). Nå kan jeg sette dem sammen.
Knapper og RFID -leser
Jeg lagde et hull i basen for å sette RFID -leseren og knappene i. For RFID -en la jeg et tynt brett foran det for å få det til å se renere ut.
Trinn 6: Trinn 6: Legge alt i huset
Dette avhenger av hvordan du vil gjøre det. Jeg personlig brukte mange kabler uten lodding fordi jeg vil kunne bruke Raspberry Pi på nytt.
Jeg limte lysdiodene på plass og teipet RFID -leseren og brødbrettene på saken.
Og det er slik du lager en Keysorter!
Anbefalt:
Arduino bilvarslingssystem for omvendt parkering - Trinn for trinn: 4 trinn
Arduino Car Reverse Parking Alert System | Trinn for trinn: I dette prosjektet skal jeg designe en enkel Arduino Car Reverse Parking Sensor Circuit ved hjelp av Arduino UNO og HC-SR04 Ultrasonic Sensor. Dette Arduino -baserte bilreverseringssystemet kan brukes til autonom navigasjon, robotavstand og andre områder
Trinn for trinn PC -bygging: 9 trinn
Steg for trinn PC -bygging: Rekvisita: Maskinvare: HovedkortCPU & CPU -kjøler PSU (strømforsyningsenhet) Lagring (HDD/SSD) RAMGPU (ikke nødvendig) CaseTools: Skrutrekker ESD -armbånd/mathermal pasta m/applikator
Tre høyttalerkretser -- Trinn-for-trinn opplæring: 3 trinn
Tre høyttalerkretser || Trinn-for-trinn opplæring: Høyttalerkretsen styrker lydsignalene som mottas fra miljøet til MIC og sender den til høyttaleren der forsterket lyd produseres. Her vil jeg vise deg tre forskjellige måter å lage denne høyttalerkretsen på:
RC -sporet robot ved hjelp av Arduino - Trinn for trinn: 3 trinn
RC -sporet robot ved bruk av Arduino - Steg for trinn: Hei folkens, jeg er tilbake med et annet kult Robot -chassis fra BangGood. Håper du har gått gjennom våre tidligere prosjekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot with Robotic Arms og The Badland Braw
Hvordan lage et nettsted (en trinn-for-trinn-guide): 4 trinn
Hvordan lage et nettsted (en trinn-for-trinn-guide): I denne veiledningen vil jeg vise deg hvordan de fleste webutviklere bygger nettstedene sine og hvordan du kan unngå dyre nettstedbyggere som ofte er for begrenset til et større nettsted. hjelpe deg med å unngå noen feil som jeg gjorde da jeg begynte