Sisukord:
- 1. samm: 1. samm: mida ma vajan?
- 2. samm: 2. samm: andmebaasi skeemi koostamine
- 3. samm: 3. samm: kodeerimine
- 4. samm: 4. samm: koodi lisamine minu Raspberry Pi -le
- 5. samm: 5. samm: korpuse valmistamine
- 6. samm: 6. samm: kõik korpuse paigutamine
Video: Võtmesortija: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
Praegu õpin Howestis NMCT -d. Viimase semestri jaoks pidime tegema projekti. Seega tegin võtmesorteri.
Mida see teeb?
Meil on kodus palju autovõtmeid ja need on kõik sarnased. Seega tegin selle probleemi lahendamiseks võtmesorteri.
See peab RFID kaudu võtme sisse skaneerima ja sellele karbis koha andma. Kui ma sama võtit uuesti skannin, näitab see tema varem määratud kohta. Samuti on nupp viimati pestud auto näitamiseks.
See töötab ka Raspberry Pi -l, millel on ka võimalus lisada veebileht Flaski kaudu.
Lehel peaksin saama vaadata kõiki võtmeid, lisada võtmele nime ja eemaldada võtme.
1. samm: 1. samm: mida ma vajan?
Alustasin sellest, et koostasin nimekirja komponentidest, mida vajan, et see asi toimiks.
Komponendid:
- Vaarika pi
- 2 x vahetuste register (74hc595)
- 3x nupp
- 9 x roheline LED
- RFID -skanner (MFRC522)
- 12 x takisti 220 oomi
Seejärel panin ma selle kõik oma skemaatilisse skeemi.
Kui ma seda tegin, tegin seda päriselus.
2. samm: 2. samm: andmebaasi skeemi koostamine
Oma andmete salvestamiseks pidin looma andmebaasi, mis saaks minu Pi peal töötada.
Tegin selle Mysqlis.
Laua auto:
- Auto ID
- kasutaja ID
- Bränd (automark)
- Tüüp
- Viimati pestud
- Võti
- RFID_ID
3. samm: 3. samm: kodeerimine
Kui see kõik oli valmis, võisin hakata kodeerima.
Alustasin sellest, et tegin Python 3.5 -s oma anduri koodi.
Koodi allalaadimiseks klõpsake siin.
Projekti kloonimiseks kasutage linki.
4. samm: 4. samm: koodi lisamine minu Raspberry Pi -le
Pakettide installimine
Esmalt installisin kõik paketid, mida mul selle töö tegemiseks vaja oli.
me@my-rpi: ~ $ sudo apt uuendus
mina@minu-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
Virtuaalne keskkond
me@my-rpi: ~ $ python3 -m pip install-uuenda pip setuptools ratas virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 mina@my-rpi: ~/project1 $ python3 -m venv --süsteem- saidipaketid env me@my-rpi: ~/project1 $ source env/bin/aktiveeri (env) mind@my-rpi: ~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib
Laadige projekt pücharmi abil oma Pi -le üles
Avage Pycharm ja avage VCS> Impordi versioonikontrollist> Github ja kloonige minu githubi fail.
Asetage juurutamise konfiguratsioon äsja loodud kataloogi. (/kodu/mina/projekt1). Vajuta Apply!
Avage tõlgi seaded ja valige äsja loodud virtuaalne keskkond. (/home/me/project1/etv/bin/pyhon)
Kontrollige, kas tee kaardistamine on õige.
Nüüd saate Pycharmi abil koodi oma kataloogi üles laadida.
Andmebaas
Kontrollige, kas andmebaas töötab. Peaksite saama midagi sellist:
me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB andmebaasiserver Laetud: laaditud (/lib/systemd/system/mariadb.service; lubatud; tarnija eelseadistus: lubatud) Aktiivne: aktiivne (töötab) alates Sunist 2018-06-03 09:41:18 CEST; 1 päev 4 tundi tagasi Peamine PID: 781 (mysqld) Olek: "Võtan teie SQL -päringuid kohe…" Ülesanded: 28 (limiit: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld
3. juuni 09:41:13 my-rpi systemd [1]: MariaDB andmebaasiserveri käivitamine… 3. juuni 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Märkus] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 3. juuni 09:41:18 my-rpi systemd [1]: käivitas MariaDB andmebaasiserveri.
mina@minu -rpi: ~ $ ss -lt | grep mysql KUULA 0 80 127.0.0.1:mysql *: *
Kasutajate loomine ja andmebaasi lisamine
mina@my-rpi: ~ $ sudo mariadb
kui olete andmebaasis, tehke seda.
CREATE USER 'project1-admin'@'localhost' IDENTIFITEERITUD 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFITEERITUD 'webpassword'; CREATE USER 'project1-sensor'@'localhost' IDENTIFITSEERITUD 'sensorpassword';
CREATE DATABASE projekt1;
TOETA KÕIKI ERIÕIGUSI PROJEKTIL.* Projektile „project1-admin”@„localhost” TOETUSVALIKUGA; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSHI privileegid;
CREATE TABLE "kasutaja" ("idUser" int (11) NOT NULL, "Password" varchar (45) DEFAULT NULL, PRIMARY KEY ("idUser")) MOOTOR = InnoDB DEFAULT CHARSET = utf8
CREATE TABLE "auto" ("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 VÄLISVÕTI ("idUser") VIITED "kasutaja" ("idUser") ON DELETE NO ACTION UPDATE NO ACTION) MOOTOR = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8
Ühendage oma andmebaas Pycharmiga
Klõpsake andmebaasi vahekaarti paremal. Kui teil pole vahekaarti avatud, tehke järgmist: Vaade> Tööriistaken> Andmebaas.
Klõpsake nuppu Lisa ühendus. Valige Andmeallikas> MySQL (kui nuppude allalaadimisdraiver on olemas, vajutage seda.)
Minge SSH/SSL -i ja kontrollige SSH -d. Täitke oma Raspberry pi mandaat (host/kasutaja/parool). Port peaks olema 22 ja ärge unustage kontrollida parooli meelde.
Mine tagasi kindrali juurde. Host peaks olema localhost ja andmebaas projekti1. Ühenduse testimiseks täitke projekti1-admin volikirjad.
Kui ühendus on korras, minge vahekaardile Skeemid ja veenduge, et projekt1 on märgitud.
Kontrollige, kas andmebaas on õige
me@my-rpi: ~ $ echo 'näita tabeleid;' | mysql project1 -t -u project1-admin -pSisestage parool: + --------------------------- + | Tabelid_projektis1 | + ---------------------------+ | andur | | kasutajad | +---------------------------+
Konfiguratsioonifailid
Kataloogist conf leiate 4 faili. Peaksite kasutajanimed oma kasutajanimeks muutma.
Systemd
Kõigi käivitamiseks peaksite neid käske täitma.
mina@minu-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
mina@minu-rpi: ~/project1 $ sudo systemctl deemon-laadige mind uuesti@my-rpi: ~/project1 $ sudo systemctl käivitage projekt1-* mina@my-rpi: ~/project1 $ sudo systemctl olek project1-* ● project1- flask.service-uWSGI eksemplar projekti1 veebiliidese teenindamiseks Laetud: laaditud (/etc/systemd/system/project1-flask.service; keelatud; hankija eelseade: lubatud) Aktiivne: aktiivne (töötab) alates esmaspäevast 2018-06-04 13: 14:56 CEST; 1s tagasi Main PID: 6618 (uwsgi) Ülesanded: 6 (piir: 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
Juuni 04 13:14:56 my-rpi uwsgi [6618]: kaardistatud 383928 baiti (374 KB) 5 tuuma jaoks 4. juuni 13:14:56 my-rpi uwsgi [6618]: *** töörežiim: eelforking ***
● project1-sensor.service-projekti 1 andurite teenus laaditud: laaditud (/etc/systemd/system/project1-sensor.service; keelatud; hankija eelseadistus: lubatud) Aktiivne: aktiivne (töötab) alates esmaspäevast 2018-06-04 13: 16:49 CEST; 5 s tagasi Peamine PID: 6826 (python) Ülesanded: 1 (piir: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py
Juuni 04 13:16:49 my-rpi systemd [1]: käivitas projekti 1 andurite teenuse. Juuni 04 13:16:49 my-rpi python [6826]: DEBUG: _ main _: salvestatud anduri protsess_arv = b'217 / n 'andmebaasi juuni 04 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Andur process_count = b'218 / n 'salvestatud andmebaasi
nginx
mina@minu-rpi: ~/project1 $ ls -l/etc/nginx/sites-*
/etc/nginx/sites-available: kokku 4 -rw-r-r-- 1 juurjuur 2416 12. juuli 2017 vaikimisi
/etc/nginx/sites-enabled: kokku 0 lrwxrwxrwx 1 juurjuur 34. jaanuar 18 13:25 vaikimisi->/etc/nginx/sites-available/default
Kõigi vaikimisi muutmiseks täitke need käsud.
mina@minu-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
Automaatne käivitamine
Veendume, et kõik algab automaatselt.
Minge conf kataloogi ja täitke need viimased käsud ning oletegi valmis!
mina@minu-rpi: ~/project1 $ sudo systemctl lubage projekt1-*
Kui taaskäivitate oma Pi, peaks see automaatselt käivituma.
5. samm: 5. samm: korpuse valmistamine
Ringlussevõtt
Eluaseme valmistamiseks kasutasin vana kappi, mille mu ema minema viskas.
alus
Saagisin 4 plangut (34 cm x 26 cm). (nii et see on kuubik mõõtmetelt 34 x 34 x 26).
Põhjale lisasin põhjaks õhukese puutüki.
Juhtidega juhatus
Keskel olen pannud 2 väikest puutükki mõlemale küljele, mõlemad 9 cm kaugusel ülevalt. See hoiab juhatust, kus juhid istuvad.
LED -plaat on väike tahvel (32 cm x 32 cm).
Puurisin LED -ide jaoks välja 9 auku.
jagunemine
Jaotuse tegin sama materjaliga, mis põhi ja laua ledidega.
4 tükki, igaüks sisselõikega 10,3 cm (9 cm x 31 cm). Nüüd saan need kokku panna.
Nupud ja RFID -lugeja
Tegin alusele augu, kuhu panna oma RFID -lugeja ja nupud. RFID jaoks panin selle ette õhukese plaaditüki, et see puhtam välja näeks.
6. samm: 6. samm: kõik korpuse paigutamine
See sõltub sellest, kuidas soovite seda teha. Mina isiklikult kasutasin palju kaableid ilma jootmiseta, sest tahan oma Raspberry Pi uuesti kasutada.
Liimisin LED -id oma kohale ja teipisin RFID -lugeja ja leivaplaadid korpuse külge.
Ja nii teete võtmesorterit!
Soovitan:
Atari punkkonsool beebiga 8 sammu järjestus: 7 sammu (piltidega)
Atari punkkonsool koos beebi 8-astmelise sekveneerijaga: see vaheehitus on kõik-ühes Atari punk-konsool ja beebi 8-astmeline järjestus, mida saate freesida Bantam Tools töölaua PCB-freespingis. See koosneb kahest trükkplaadist: üks on kasutajaliidese (UI) plaat ja teine on utiliit
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
4G/5G HD -video otseülekanne DJI droonilt madala latentsusega [3 sammu]: 3 sammu
4G/5G HD-video otseülekanne DJI droonilt madala latentsusega [3 sammu]: Järgnev juhend aitab teil saada HD-kvaliteediga otseülekandeid peaaegu igalt DJI droonilt. FlytOSi mobiilirakenduse ja veebirakenduse FlytNow abil saate alustada drooni video voogesitust
Polt - DIY juhtmeta laadimise öökell (6 sammu): 6 sammu (piltidega)
Bolt - DIY juhtmeta laadimise öökell (6 sammu): Induktiivsed laadimised (tuntud ka kui juhtmeta laadimine või juhtmeta laadimine) on traadita jõuülekande tüüp. See kasutab kaasaskantavatele seadmetele elektrit pakkumiseks elektromagnetilist induktsiooni. Kõige tavalisem rakendus on Qi traadita laadimisst
4 sammu aku sisemise takistuse mõõtmiseks: 4 sammu
4 sammu aku sisemise takistuse mõõtmiseks: Siin on 4 lihtsat sammu, mis aitavad mõõta taigna sisemist takistust