Kazalo:
- 1. korak: 1. korak: Kaj bom potreboval?
- 2. korak: 2. korak: izdelava sheme baze podatkov
- 3. korak: 3. korak: Kodiranje
- Korak 4: Korak 4: Vnos kode na mojo Raspberry Pi
- 5. korak: 5. korak: izdelava stanovanja
- Korak 6: Korak 6: Dajanje vsega v ohišje
Video: Tipkovnica: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Trenutno študiram NMCT na Howestu. Za zadnji semester smo morali narediti projekt. Tako sem naredil Keysorter.
Kaj to naredi?
Doma imamo veliko avtomobilskih ključev in vsi so si podobni. Zato sem naredil Keysorter za rešitev tega vprašanja.
Skenirati mora ključ po RFID in mu dati mesto v škatli. Če znova skeniram isti ključ, bo prikazano njegovo prej dodeljeno mesto. Obstaja tudi gumb za prikaz zadnjega opranega avtomobila.
To bo delovalo tudi na Raspberry Pi, ki ima tudi možnost dodajanja spletne strani prek Flaska.
Na strani bi si moral ogledati vse ključe, ključu dodati ime in ključ odstraniti.
1. korak: 1. korak: Kaj bom potreboval?
Začel sem tako, da sem sestavil seznam komponent, ki jih bom potreboval za delovanje te stvari.
Sestavine:
- Malina pi
- 2 x register premika (74hc595)
- 3 x gumb
- 9 x zelena led
- Optični bralnik RFID (MFRC522)
- 12 x upor 220 ohm
Potem sem vse to spravil v svojo shemo fritovanja.
Ko sem to naredil, mi je uspelo v resničnem življenju.
2. korak: 2. korak: izdelava sheme baze podatkov
Če sem želel shraniti vse svoje podatke, sem moral ustvariti bazo podatkov, ki bi se lahko izvajala na mojem Pi.
Uspelo mi je v Mysqlu.
Namizni avto:
- ID avtomobila
- Uporabniško ime
- Blagovna znamka (znamka avtomobila)
- Vrsta
- Nazadnje oprano
- Ključ
- RFID_ID
3. korak: 3. korak: Kodiranje
Ko je bilo vse pripravljeno, sem lahko začel kodirati.
Začel sem z izdelavo kode za svoj senzor v Pythonu 3.5.
Za prenos kode kliknite tukaj.
Za povezavo klonirajte projekt.
Korak 4: Korak 4: Vnos kode na mojo Raspberry Pi
Namestitev paketov
Najprej sem namestil vse pakete, ki so bili potrebni za to.
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
Virtualno okolje
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- paketi spletnih mest env me@my-rpi: ~/project1 $ source env/bin/enable (env) me@my-rpi: ~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib
Naložite projekt na svoj Pi z uporabo pycharma
Odprite Pycharm in pojdite na VCS> Uvozi iz različice Nadzor različic> Github in klonirajte mojo datoteko github.
Konfiguracijo uvajanja postavite v imenik, ki ste ga pravkar ustvarili. (/home/me/project1). Pritisnite Apply!
Pojdite v nastavitve tolmača in izberite pravkar ustvarjeno virtualno okolje. (/home/me/project1/env/bin/pyhon)
Preverite, ali je preslikava poti pravilna.
Zdaj lahko kodo naložite v svoj imenik s pomočjo Pycharma.
Baza podatkov
Preverite, ali zbirka podatkov deluje. Morali bi dobiti nekaj takega:
me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - strežnik baz podatkov MariaDB Naloženo: naloženo (/lib/systemd/system/mariadb.service; omogočeno; prednastavitev prodajalca: omogočena) Aktivno: aktivno (deluje) od ned 2018-06-03 09:41:18 CEST; 1 dan in 4 ure Glavni PID: 781 (mysqld) Stanje: "Zdaj sprejemam vaše zahteve SQL …" Opravila: 28 (omejitev: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld
3. junij 09:41:13 my-rpi systemd [1]: Zagon strežnika baz podatkov MariaDB… 3. junij 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Opomba] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03. jun 09:41:18 my-rpi systemd [1]: Zagnan strežnik zbirk podatkov MariaDB.
me@my -rpi: ~ $ ss -lt | grep mysql LISTEN 0 80 127.0.0.1:mysql *: *
Ustvarite uporabnike in dodajte bazo podatkov
me@my-rpi: ~ $ sudo mariadb
ko ste v bazi podatkov, to storite.
CREATE USER 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; CREATE USER 'project1-sensor'@'localhost' IDENTIFIED BY 'sensorpassword';
CREATE DATABASE project1;
DODELITE VSE PRIVILEGIJE NA PROJEKT1.* Na 'project1-admin'@'localhost' Z GRANT MOŽNOSTO; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; FLUSH PRIVILEGIJE;
CREATE TABLE `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8
CREATE TABLE `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``), CONKSTARIN_ TUJI KLJUČ (`idUser`) REFERENCE` user` (`idUser`) ON DELETE NO ACTION ON UPDATE NO ACTION)
Povežite svojo bazo podatkov s programom Pycharm
Kliknite zavihek zbirke podatkov na desni strani. Če nimate odprtega zavihka, naredite to: Pogled> Orodja Windows> Baza podatkov.
Kliknite Dodaj povezavo. Izberite Vir podatkov> MySQL (Če obstaja gumb za prenos gonilnika, ga pritisnite.)
Pojdite na SSH/SSL in preverite SSH. Izpolnite poverilnice Raspberry pi (gostitelj/uporabnik/geslo). Vrata naj bodo 22 in ne pozabite preveriti gesla za zapomnitev.
Vrnite se na General. Gostitelj mora biti localhost, baza podatkov pa projekt1. Izpolnite poverilnice iz project1-admin in preizkusite povezavo.
Če je povezava v redu, pojdite na zavihek Sheme in preverite, ali je projekt1 preverjen.
Preverite, ali je zbirka podatkov pravilna
me@my-rpi: ~ $ echo 'pokaži tabele;' | mysql project1 -t -u project1-admin -pVnesite geslo: + --------------------------- + | Tabele_v_projektu1 | + ---------------------------+ | senzor | | uporabniki | +---------------------------+
Konfiguracijske datoteke
V imeniku conf boste našli 4 datoteke. Uporabniška imena morate spremeniti v svoje uporabniško ime.
Systemd
Če želite zagnati vse, morate izvesti te ukaze.
me@my-rpi: ~/project1 $ sudo cp conf/project1-*. storitev/etc/systemd/system/
me@my-rpi: ~/project1 $ sudo systemctl daemon -reload me@my-rpi: ~/project1 $ sudo systemctl začni project1-* me@my-rpi: ~/project1 $ sudo systemctl status project1-* ● projekt1- flask.service-primerek uWSGI za streženje spletnega vmesnika project1 Naloženo: naloženo (/etc/systemd/system/project1-flask.service; onemogočeno; prednastavitev prodajalca: omogočeno) Aktivno: aktivno (deluje) od pon 2018-06-04 13: 14:56 CEST; Pred 1 s 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. junij 13:14:56 my-rpi uwsgi [6618]: preslikanih 383928 bajtov (374 KB) za 5 jeder 4. junij 13:14:56 my-rpi uwsgi [6618]: *** Način delovanja: predformiranje ***
● project1-sensor.service-storitev senzorja Project 1 Naloženo: naloženo (/etc/systemd/system/project1-sensor.service; onemogočeno; prednastavitev prodajalca: omogočeno) Aktivno: aktivno (v teku) od pon 2018-06-04 13: 16:49 CEST; Pred 5 s Glavni PID: 6826 (python) Naloge: 1 (omejitev: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py
4. junij 13:16:49 my-rpi systemd [1]: Začetek storitve senzorja projekta 1. 4. junij 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Shranjeno tipalo process_count = b'217 / n 'v bazo podatkov 04. junij 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Shranjeno tipalo process_count = b'218 / n 'v bazo podatkov
nginx
me@my-rpi: ~/project1 $ ls -l/etc/nginx/sites-*
/etc/nginx/sites-available: skupaj 4 -rw-r-r-- 1 korenski koren 2416 12. julij 2017 privzeto
/etc/nginx/sites-enabled: skupaj 0 lrwxrwxrwx 1 korenski koren 34. januar 18 13:25 privzeto->/etc/nginx/sites-available/default
Če želite, da je vse privzeto, izvedite te ukaze.
me@moj-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 znova zaženite nginx.service
Samodejni zagon
Poskrbimo, da se vse začne samodejno.
Pojdite v imenik conf in izvedite te zadnje ukaze in končali ste!
me@my-rpi: ~/project1 $ sudo systemctl omogoči project1-*
Če znova zaženete Pi, bi se moral samodejno zagnati.
5. korak: 5. korak: izdelava stanovanja
Recikliranje
Za stanovanje sem uporabil staro omaro, ki bi jo mama odvrgla.
bazo
Razžagal sem 4 deske (34 x 26 cm). (torej kocka velikosti 34 x 34 x 26).
Na dnu sem kot dno dodal tanek kos lesa.
Plošča z LED diodami
Na sredino sem dal 2 majhna kosa lesa na vsaki strani, oba na 9 cm od vrha. To drži desko, kjer bodo sedeli vodilni.
Deska s svetilkami je majhna deska (32 x 32 cm).
Naredil sem 9 lukenj, iz katerih bodo prišle lednice.
delitev
Delitev sem naredil iz istega materiala kot dno in ploščo z led.
4 kosi vsak z zarezo 10,3 cm (9 cm x 31 cm). Zdaj jih lahko sestavim.
Gumbi in bralnik RFID
V podnožju sem naredil luknjo, v katero sem vstavil čitalnik RFID in gumbe. Za RFID sem prednj postavil tanek kos plošče, da je videti čistejši.
Korak 6: Korak 6: Dajanje vsega v ohišje
To je odvisno od tega, kako želite to narediti. Osebno sem uporabil veliko kablov brez spajkanja, ker želim ponovno uporabiti svoj Raspberry Pi.
LED sem prilepila na mesto in na ohišje prilepila čitalnik RFID in plošče.
In tako narediš Keysorterja!
Priporočena:
Arduino tipkovnica Joystick Extender Box in Sound Controller Thing Using Deej: 8 korakov
Arduino tipkovnica Joystick Extender Box in krmilnik zvoka Z uporabo Deeja: Zakaj Že nekaj časa želim na tipkovnico dodati majhno krmilno palčko za nadzor elementov vmesnika ali drugih manjših opravil v igrah in simulatorjih (MS Flight Sim, Elite: Dangerous, Vojne zvezd: eskadrilje itd.). Tudi za Elite: Nevarno sem bil
Tipkovnica HotKeys s profili po meri: 14 korakov (s slikami)
Tipkovnica HotKeys s profili po meri: upam, da ste sredi te pandemije dobro. Bodite varni. Bodi močen. #COVID19 Ker sem industrijski oblikovalec, moram dnevno dostopati do več kot 7-8 programske opreme, ki vključuje Solidworks, Photoshop, Illustrator, Keyshot, Indesign itd. In nekaj g
Osu! Tipkovnica: 8 korakov (s slikami)
Osu! Tipkovnica: Pred kratkim sem začel igrati ritmično igro, imenovano osu! in potem, ko sem videl video komercialne mini tipkovnice, sem pomislil, da bi bil zabaven projekt, da bi jo sam oblikoval. Kmalu zatem sem se odločil, da bi bilo dobro, če bi ga dali na navodila za uporabo kot
Arkadna tipkovnica MIDI tipkovnica: 7 korakov (s slikami)
Arkadna tipkovnica MIDI tipkovnica: To je različica 2.0 enega mojih prvih napadov na programiranje Arduino in DIY MIDI. Razvil sem svoje veščine pri oblikovanju prototipov in oblikovanju, zato sem mislil, da bo to dobra predstavitev procesa in napredovanja. Z bolj informiranim postopkom oblikovanja sem
Hitra in umazana tipkovnica Das (prazna tipkovnica): 3 koraki
Hitra in umazana tipkovnica Das (prazna tipkovnica): Dasova tipkovnica je ime najbolj priljubljene tipkovnice brez napisov na tipkah (prazna tipkovnica). Tipkovnica Das se prodaja na drobno za 89,95 USD. Ta navodila vam bodo vodila, čeprav jih naredite sami s katero koli staro tipkovnico, ki jo imate naokoli