Sadržaj:
- Korak 1: Korak 1: Što će mi trebati?
- Korak 2: Korak 2: Izrada sheme baze podataka
- Korak 3: Korak 3: Kodiranje
- Korak 4: Korak 4: Stavljanje Al koda na moj Raspberry Pi
- Korak 5: Korak 5: Izrada stambenog prostora
- Korak 6: Korak 6: Stavljanje svega u kućište
Video: Tipkalo za tipke: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Trenutno studiram NMCT na Howestu. Za posljednji semestar morali smo napraviti projekt. Tako sam napravio Keysorter.
Što to radi?
Kod kuće imamo puno ključeva od automobila i svi izgledaju slično. Stoga sam napravio Keysorter za rješavanje ovog problema.
Mora skenirati ključ putem RFID -a i dati mu mjesto u kutiji. Ako ponovno skeniram isti ključ, prikazat će se njegovo prethodno dodijeljeno mjesto. Tu je i gumb za prikaz posljednjeg opranog automobila.
Ovo će također raditi na Raspberry Pi -u koji također ima mogućnost dodavanja web stranice putem Flaska.
Na stranici bih trebao moći pogledati sve tipke, dodati naziv ključu i ukloniti ključ.
Korak 1: Korak 1: Što će mi trebati?
Počeo sam tako što sam napravio popis komponenti koje će mi trebati da bi ova stvar funkcionirala.
Komponente:
- Malina pi
- 2 x registar pomaka (74hc595)
- 3 x gumb
- 9 x zelena led
- RFID skener (MFRC522)
- 12 x otpornik 220 ohma
Zatim sam sve to stavio u svoju shemu prefarbavanja.
Kad sam to učinio, uspio sam u stvarnom životu.
Korak 2: Korak 2: Izrada sheme baze podataka
Da bih spremio sve svoje podatke, morao sam stvoriti bazu podataka koja bi se mogla izvoditi na mom Pi.
Uspio sam u Mysqlu.
Stolni automobil:
- ID automobila
- Korisnički ID
- Marka (marka automobila)
- Tip
- Zadnje oprano
- Ključ
- RFID_ID
Korak 3: Korak 3: Kodiranje
Kad je sve ovo bilo spremno, mogao sam početi kodirati.
Počeo sam s izradom koda za svoj senzor u Pythonu 3.5.
Za preuzimanje koda kliknite ovdje.
Pomoću veze klonirajte projekt.
Korak 4: Korak 4: Stavljanje Al koda na moj Raspberry Pi
Instaliranje paketa
Prvo sam instalirao sve pakete koji su mi bili potrebni da ovo funkcionira.
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 okruženje
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 --sustav- web-paketi 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
Prenesite projekt na svoj Pi pomoću pycharma
Otvorite Pycharm i idite na VCS> Uvezi iz kontrole verzija> Github i klonirajte moju github datoteku.
Postavite konfiguraciju implementacije u direktorij koji ste upravo napravili. (/dom/ja/projekt1). Pritisnite Apply!
Idite na postavke tumača i odaberite virtualno okruženje koje ste upravo stvorili. (/home/me/project1/env/bin/pyhon)
Provjerite je li mapiranje puta ispravno.
Sada možete učitati kôd u svoj direktorij pomoću Pycharma.
Baza podataka
Provjerite radi li baza podataka. Trebali biste dobiti nešto poput ovoga:
me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - poslužitelj baze podataka MariaDB Učitano: učitano (/lib/systemd/system/mariadb.service; omogućeno; tvornička postavka: omogućeno) Aktivno: aktivno (radi) od ned 2018-06-03 09:41:18 CEST; 1 dan i 4 sata Glavni PID: 781 (mysqld) Status: "Odmah primamo vaše SQL zahtjeve …" Zadaci: 28 (ograničenje: 4915) CGroup: /system.slice/mariadb.service └─781/usr/sbin/mysqld
3. lipnja 09:41:13 my-rpi systemd [1]: Pokretanje MariaDB poslužitelja baze podataka… 03. lipnja 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Napomena] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03. lipnja 09:41:18 my-rpi systemd [1]: Pokrenut MariaDB poslužitelj baze podataka.
ja@moj -rpi: ~ $ ss -lt | grep mysql SLUŠAJ 0 80 127.0.0.1:mysql *: *
Stvorite korisnike i dodajte bazu podataka
ja@moj-rpi: ~ $ sudo mariadb
učinite to nakon što ste u bazi podataka.
CREATE USER 'project1-admin'@'localhost' IDENTIFIED BY 'adminpassword'; CREATE USER 'project1-web'@'localhost' IDENTIFIED BY 'webpassword'; CREATE USER 'project1-sensor'@'localhost' IDENTIFIKIRANO sa 'sensorpassword';
CREATE DATABASE project1;
ODOBRI SVE PRIVILEGIJE NA Project1.* Na 'project1-admin'@'localhost' S GRANT OPTION; 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`)) MOTOR = InnoDB ZADNJA KARTA = 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_ STRANI KLJUČ (`idUser`) LITERATURA` user` (`idUser`) ON IZBRIŠI NIKAKVU AKCIJU NA AŽURIRANJE NEMA DJELOVANJA) MOTOR = InnoDB AUTO_INCREMENT = 4 ZADNJA KARTA = utf8
Povežite svoju bazu podataka s Pycharmom
Kliknite karticu baze podataka s desne strane. Ako nemate otvorenu karticu, učinite sljedeće: Pogled> Alati Windows> Baza podataka.
Pritisnite dodaj vezu. Odaberite Izvor podataka> MySQL (Ako postoji gumb za preuzimanje upravljačkog programa, pritisnite ga.)
Idite na SSH/SSL i provjerite SSH. Ispunite svoje vjerodajnice za Raspberry pi (host/korisnik/lozinka). Ulaz bi trebao biti 22 i ne zaboravite provjeriti zapamti lozinku.
Vratite se na General. Domaćin bi trebao biti localhost, a baza podataka projekt1. Ispunite vjerodajnice iz project1-admin i testirajte vezu.
Ako je veza u redu, idite na karticu Sheme i provjerite je li projekt1 provjeren.
Provjerite je li baza podataka ispravna
me@my-rpi: ~ $ echo 'prikaži tablice;' | mysql project1 -t -u project1-admin -pUnesite lozinku: + --------------------------- + | Tablice_u_projektu1 | + ---------------------------+ | senzor | | korisnici | +---------------------------+
Konfiguracijske datoteke
U direktoriju conf naći ćete 4 datoteke. Korisnička imena trebate promijeniti u svoje korisničko ime.
Systemd
Za pokretanje svega trebate izvršiti ove naredbe.
ja@moj-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
me@my-rpi: ~/project1 $ sudo systemctl daemon-ponovno učitaj me@my-rpi: ~/project1 $ sudo systemctl pokreni project1-* me@my-rpi: ~/project1 $ sudo systemctl status project1-* ● projekt1- flask.service-uWSGI instanca za opsluživanje web sučelja project1 Učitano: učitano (/etc/systemd/system/project1-flask.service; onemogućeno; zadana postavka dobavljača: omogućeno) Aktivno: aktivno (radi) od pon 2018-06-04 13: 14:56 CEST; Prije 1s Glavni PID: 6618 (uwsgi) Zadaci: 6 (ograničenje: 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. lipnja 13:14:56 my-rpi uwsgi [6618]: mapirano 383928 bajtova (374 KB) za 5 jezgri 04. lipnja 13:14:56 my-rpi uwsgi [6618]: *** Način rada: predformiranje ***
● project1-sensor.service-Usluga senzora projekta 1 Učitano: učitano (/etc/systemd/system/project1-sensor.service; onemogućeno; unaprijed zadane postavke dobavljača: omogućeno) Aktivno: aktivno (radi) od pon 2018-06-04 13: 16:49 CEST; Prije 5s Glavni PID: 6826 (python) Zadaci: 1 (ograničenje: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py
04. lipnja 13:16:49 my-rpi systemd [1]: Pokrenuta usluga senzora projekta 1. 04. lipnja 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Spremljen senzorski process_count = b'217 / n 'u bazu podataka 04. lipnja 16:16:55 my-rpi python [6826]: DEBUG: _ main_: Spremljen proces_broj senzora = b'218 / n 'u bazu podataka
nginx
ja@moj-rpi: ~/project1 $ ls -l/etc/nginx/sites-*
/etc/nginx/sites-available: total 4 -rw-r-r-- 1 root root 2416 12. srpnja 2017 zadano
/etc/nginx/sites-enabled: total 0 lrwxrwxrwx 1 root root 34. siječnja 18 13:25 zadano->/etc/nginx/sites-available/default
Izvršite ove naredbe kako bi sve postalo zadano.
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 ponovno pokrenite nginx.service
Automatsko pokretanje
Uvjerimo se da sve počinje automatski.
Idite u direktorij conf i izvršite ove posljednje naredbe i gotovi ste!
me@my-rpi: ~/project1 $ sudo systemctl omogući project1-*
Ako ponovno pokrenete Pi, trebao bi se pokrenuti automatski.
Korak 5: Korak 5: Izrada stambenog prostora
Recikliranje
Za stanovanje sam koristio stari ormar koji bi mama odbacila.
baza
Pilio sam 4 daske (34 cm x 26 cm). (dakle to je kocka od 34 x 34 x 26).
Na dnu sam dodao tanki komad drveta kao dno.
Ploča sa LED diodama
U sredinu sam stavio 2 mala komada drva sa svake strane, oba na 9 cm od vrha. Ovo drži ploču na kojoj će sjediti LED diode.
Ploča sa ledima je mala ploča (32 cm x 32 cm).
Izbušio sam 9 rupa za izlazak LED dioda.
podjela
Podjelu sam napravio istim materijalom kao i dno i ploču sa LED diodama.
4 komada svaki s urezom na 10,3 cm (9 cm x 31 cm). Sada ih mogu spojiti.
Gumbi i RFID čitač
Napravio sam rupu u podnožju za umetanje RFID čitača i gumba. Za RFID sam stavio tanki komad ploče ispred njega kako bi izgledao čišće.
Korak 6: Korak 6: Stavljanje svega u kućište
To ovisi o tome kako to želite učiniti. Osobno sam koristio puno kabela bez lemljenja jer želim moći ponovno koristiti svoj Raspberry Pi.
Zalijepio sam LED diode na mjesto i zalijepio RFID čitač i matične ploče na kućište.
I tako se pravi Keysorter!
Preporučeni:
Relejni prekidač s dvije tipke: 3 koraka
Relejni prekidač s dvije tipke: Ovaj članak prikazuje kako uključiti i isključiti prekidač s pritiskom na gumb. Ovaj se krug može učiniti s dva prekidača. Pritisnete jedan prekidač i žarulja se uključi. Pritisnite drugi prekidač i žarulja se isključuje. Međutim, ovaj Ins
Kako koristiti koračni motor 28BYJ-48 s 3 tipke: 5 koraka
Kako koristiti koračni motor 28BYJ-48 s 3 tipke: Želite li upravljati koračnim motorom pomoću gumba? To može raditi u smjeru kazaljke na satu, u smjeru suprotnom od kazaljke na satu, a zatim zaustaviti funkciju? Onda je ovaj video za vas
Ručica za upravljanje bežičnim računalom/tipke za kotače: 4 koraka (sa slikama)
Gumbi za upravljanje bežičnim računalom/tipke za kotače: U posljednjih nekoliko godina stvarao sam novu trkaću sim karticu i odlučio sam otići s upravljačem s izravnim pogonom. Iako bi sam taj projekt mogao imati nekoliko instrukcija za sebe, ovo je uputstvo o izradi svih gumba na t
Raspberry Pi tipkalo sa LED diodama od golog metala: 8 koraka
Raspberry Pi tipkalo sa LED diodama Bare Metal: Ovo je moj drugi vodič o programiranju maline pi 3 golog metala! Ovdje pogledajte moju prvu. Zadnji put sam vam pokazao kako stvoriti sliku operacijskog sustava za malinu pi 3 koja je trepnula s jednim LED -om, u ovom vodiču ću vam pokazati h
Servo pozicioner tipke tipke: 3 koraka
Servo pozicioner tipke tipke: U ovom uputstvu moći ćete pritisnuti gumb na tipkovnici, a ovisno o tome koji je znak pritisnut, servo motor će se okrenuti za određeni stupanj. Program će se neprestano ponavljati svaki put kada pritisnete gumb