Turinys:
- 1 žingsnis: 1 žingsnis: ko man reikės?
- 2 veiksmas: 2 veiksmas: sukurkite duomenų bazės schemą
- 3 žingsnis: 3 žingsnis: kodavimas
- 4 žingsnis: 4 žingsnis: įdėkite „Al Ras“kodą į „My Raspberry Pi“
- 5 žingsnis: 5 žingsnis: būsto sukūrimas
- 6 žingsnis: 6 žingsnis: viską įdėkite į korpusą
Video: Raktų rūšiuotojas: 6 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Šiuo metu studijuoju NMCT „Howest“. Paskutinį semestrą turėjome sukurti projektą. Taigi aš padariau „Keysorter“.
Ką tai daro?
Namuose turime daug automobilių raktų ir jie visi atrodo vienodi. Taigi aš padariau „Keysorter“, kad išspręstų šią problemą.
Jis turi nuskaityti raktą per RFID ir suteikti jam vietą dėžutėje. Jei dar kartą nuskenuosiu tą patį raktą, bus rodoma jo anksčiau paskirta vieta. Taip pat yra mygtukas, rodantis paskutinį kartą nuplautą automobilį.
Visa tai veiks „Raspberry Pi“, kuri taip pat turi galimybę pridėti tinklalapį per kolbą.
Puslapyje turėčiau galėti peržiūrėti visus raktus, pridėti pavadinimą prie rakto ir pašalinti raktą.
1 žingsnis: 1 žingsnis: ko man reikės?
Pradėjau sudarydamas komponentų sąrašą, kurio man reikės, kad šis dalykas veiktų.
Komponentai:
- Aviečių pi
- 2 x pamainų registras (74hc595)
- 3 x mygtukas
- 9 x žalia lemputė
- RFID skaitytuvas (MFRC522)
- 12 x 220 omų rezistorius
Tada aš visa tai įtraukiau į savo siaubingą schemą.
Kai tai padariau, tai padariau realiame gyvenime.
2 veiksmas: 2 veiksmas: sukurkite duomenų bazės schemą
Norėdami išsaugoti visus savo duomenis, turėjau sukurti duomenų bazę, kuri galėtų veikti mano Pi.
Aš tai padariau „Mysql“.
Stalo automobilis:
- Automobilio ID
- Vartotojo ID
- Prekės ženklas (automobilio markė)
- Tipas
- Paskutinį kartą plauti
- Raktas
- RFID_ID
3 žingsnis: 3 žingsnis: kodavimas
Kai visa tai buvo paruošta, galėjau pradėti koduoti.
Pradėjau sukurdamas savo jutiklio kodą „Python 3.5“.
Norėdami atsisiųsti kodą, spustelėkite čia.
Norėdami klonuoti projektą, naudokite nuorodą.
4 žingsnis: 4 žingsnis: įdėkite „Al Ras“kodą į „My Raspberry Pi“
Paketų diegimas
Pirmiausia įdiegiau visus paketus, kurių man reikėjo, kad tai veiktų.
me@my-rpi: ~ $ sudo apt atnaujinimas
me@my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
Virtuali aplinka
me@my-rpi: ~ $ python3 -m pip install-atnaujinti pip setuptools ratą virtualenvme@my-rpi: ~ $ mkdir project1 && cd project1 me@my-rpi: ~/project1 $ python3 -m venv-system- svetainių paketai env me@my-rpi: ~/project1 $ source env/bin/aktivuoti (env) me@my-rpi: ~/project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth „Flask-MySQL“„mysql-connector-python“slaptažodis
Įkelkite projektą į „Pi“naudodami pycharm
Atidarykite „Pycharm“ir eikite į VCS> Importuoti iš versijų valdymo> „Github“ir klonuokite mano „github“failą.
Įdėkite diegimo konfigūraciją į ką tik sukurtą katalogą. (/home/me/project1). Spausk taikyti!
Eikite į vertėjo nustatymus ir pasirinkite ką tik sukurtą virtualią aplinką. (/home/me/project1/env/bin/pyhon)
Patikrinkite, ar teisingas kelio susiejimas.
Dabar galite įkelti kodą į savo katalogą naudodami „Pycharm“.
Duomenų bazė
Patikrinkite, ar duomenų bazė veikia. Turėtumėte gauti kažką panašaus:
me@my -rpi: ~ $ sudo systemctl status mysql ● mariadb.service - MariaDB duomenų bazės serveris Įkelta: įkelta (/lib/systemd/system/mariadb.service; įjungta; iš anksto nustatytas tiekėjas: įgalinta) Aktyvus: aktyvus (veikia) nuo „Sun“2018-06-03 09:41:18 CEST; Prieš 1 dieną 4 val. Pagrindinis PID: 781 (mysqld) Būsena: „Dabar imamasi jūsų SQL užklausų …“Užduotys: 28 (apribojimas: 4915) C grupė: /system.slice/mariadb.service └─781/usr/sbin/mysqld
Birželio 03 d. 09:41:13 my-rpi systemd [1]: paleidžiamas „MariaDB“duomenų bazės serveris… birželio 3 d. 09:41:15 „my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Pastaba] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) Bir 03, 09:41:18 my-rpi systemd [1]: paleido MariaDB duomenų bazės serverį.
aš@mano -rpi: ~ $ ss -lt | grep mysql KLAUSYKITE 0 80 127.0.0.1:mysql *: *
Sukurkite vartotojus ir pridėkite duomenų bazę
aš@mano-rpi: ~ $ sudo mariadb
kai esate duomenų bazėje, padarykite tai.
KURTI VARTOTOJĄ 'project1-admin'@'localhost', IDENTIFIZUOTAS 'adminpassword'; CREATE USER 'project1-web'@'localhost', identifikuotas pagal 'webpassword'; KURTI NAUDOTOJĄ 'project1-sensor'@'localhost', IDENTIFIKUOTAS 'sensorpassword';
CREATE DATABASE project1;
SUTEIKITE VISAS privilegijas dėl projekto1.* „Project1-admin“@'localhost “SU DOTACIJOS PARINKTIS; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* Į „project1-web“@„localhost“; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* TO 'project1-sensor'@'localhost'; PLŪŠIMO PRIVILEGIJOS;
KURTI LENTELĘ `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) VARIKLIS = InnoDB DEFAULT CHARSET = utf8
KURTI LENTELĘ "automobilis" ("idCar" int (11) NOT NULL AUTO_INCREMENT, "idUser" int (11) NOT NULL, "Brand" varchar (45) DEFAULT NULL, "Type" varchar (45) DEFAULT NULL, "LastWashed" datos laikas Numatytasis NULL, "RFID_Number" varchar (15) DEFAULT NULL, "Key" varchar (5) Numatytasis NULL, PAGRINDINIS RAKTAS ("idCar", "idUser"), KEY "fk_Car_User1_idx" ("idUser`)" CONSTRAINT UŽSIENIO RAKTAS („idUser“) NUORODOS „user“(„idUser“) ON DELETE NO ACTION ON UPDATE NO ACTION)
Prijunkite savo duomenų bazę prie „Pycharm“
Spustelėkite duomenų bazės skirtuką dešinėje. Jei skirtukas nėra atidarytas, atlikite tai: Rodinys> Įrankiai „Windows“> Duomenų bazė.
Spustelėkite pridėti ryšį. Pasirinkite Duomenų šaltinis> MySQL (jei yra mygtukas atsisiųsti tvarkyklę, paspauskite.)
Eikite į SSH/SSL ir patikrinkite SSH. Užpildykite savo „Raspberry pi“prisijungimo duomenis (priegloba/vartotojas/slaptažodis). Prievadas turėtų būti 22 ir nepamirškite patikrinti slaptažodžio prisiminimo.
Grįžkite į generolą. Priimančioji vieta turėtų būti „localhost“, o duomenų bazė - „project1“. Užpildykite prisijungimo duomenis iš projekto1-admin lt išbandykite ryšį.
Jei ryšys yra geras, eikite į skirtuką Schemos ir įsitikinkite, kad pažymėtas projektas1.
Patikrinkite, ar duomenų bazė teisinga
me@my-rpi: ~ $ echo 'rodyti lenteles;' | mysql project1 -t -u project1-admin -pĮveskite slaptažodį: + --------------------------- + | Lentelės_projekte1 | + ---------------------------+ | jutiklis | | vartotojai | +---------------------------+
Konfigūracijos failai
Kataloge conf rasite 4 failus. Turėtumėte pakeisti vartotojo vardus į savo vartotojo vardą.
Sistem
Norėdami pradėti viską, turite vykdyti šias komandas.
me@my-rpi: ~/project1 $ sudo cp conf/project1-*. service/etc/systemd/system/
aš@mano-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 egzempliorius, skirtas aptarnauti projekto1 žiniatinklio sąsają Įkelta: įkelta (/etc/systemd/system/project1-flask.service; išjungta; iš anksto nustatytas tiekėjas: įjungta) 14:56 CEST; Prieš 1s Pagrindinis PID: 6618 (uwsgi) Užduotys: 6 (riba: 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
Birželio 04 d. 13:14:56 my-rpi uwsgi [6618]: suplanuotas 383928 baitų (374 KB) 5 branduoliams birželio 04 d. 13:14:56 my-rpi uwsgi [6618]: *** Veikimo režimas: išankstinis apdorojimas ***
● project1-sensor.service-1 projekto jutiklių paslauga Įkelta: įkelta (/etc/systemd/system/project1-sensor.service; išjungta; iš anksto nustatytas tiekėjas: įjungta) Aktyvus: aktyvus (veikia) nuo pirmadienio 2018-06-04 13: 16:49 CEST; Prieš 5s Pagrindinis PID: 6826 (python) Užduotys: 1 (riba: 4915) CGroup: /system.slice/project1-sensor.service └─6826/home/me/project1/env/bin/python/home/me/project1 /sensor/sensor.py
Birželio 04 d. 13:16:49 my-rpi systemd [1]: pradėta 1 projekto jutiklių paslauga. Birželio 04 d. 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Išsaugotas jutiklio procesas_skaičius = b'217 / n 'į duomenų bazę Birželio 04 d. 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Duomenų bazėje išsaugotas jutiklio process_count = b'218 / n '
nginx
aš@mano-rpi: ~/project1 $ ls -l/etc/nginx/sites-*
/etc/nginx/sites-available: iš viso 4 -rw-r-r-- 1 šaknies šaknis 2416 2017 m. liepos 12 d. numatytasis
/etc/nginx/sites-enabled: iš viso 0 lrwxrwxrwx 1 šaknies šaknis 34 sausio 18 d. 13:25 numatytoji->/etc/nginx/sites-available/default
Jei norite, kad viskas būtų numatyta, vykdykite šias komandas.
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
Automatinis paleidimas
Įsitikinkime, kad viskas prasideda automatiškai.
Eikite į conf katalogą ir vykdykite šias paskutines komandas ir baigsite!
me@my-rpi: ~/project1 $ sudo systemctl įgalinti project1-*
Jei iš naujo paleisite „Pi“, jis turėtų prasidėti automatiškai.
5 žingsnis: 5 žingsnis: būsto sukūrimas
Perdirbimas
Savo būstui gaminti panaudojau seną spintą, kurią mama išmesdavo.
bazė
Pjoviau 4 lentas (34 cm x 26 cm). (taigi tai kubas nuo 34 x 34 x 26).
Ant dugno aš įdėjau ploną medžio gabalą kaip apačią.
Lenta su LED
Viduryje aš įdėjau 2 mažus medienos gabalus iš abiejų pusių, 9 cm atstumu nuo viršaus. Čia laikoma lenta, kurioje sėdės vadovai.
Lenta su šviesos diodais yra maža lenta (32 cm x 32 cm).
Aš išgręžiau 9 skyles, kad išeitų šviesos diodai.
padalijimas
Padalinį padariau iš tos pačios medžiagos kaip ir dugnas, o lentą - su LED.
4 gabalėliai, kurių įpjova 10,3 cm (9 cm x 31 cm). Dabar aš galiu juos sujungti.
Mygtukai ir RFID skaitytuvas
Padariau skylę pagrinde, kad galėčiau įdėti savo RFID skaitytuvą ir mygtukus. RFID dėlei priešais padėjau ploną lentos gabalą, kad jis atrodytų švaresnis.
6 žingsnis: 6 žingsnis: viską įdėkite į korpusą
Tai priklauso nuo to, kaip norite tai padaryti. Aš asmeniškai naudoju daug kabelių be litavimo, nes noriu pakartotinai naudoti savo „Raspberry Pi“.
Priklijavau šviesos diodus vietoje ir priklijavau RFID skaitytuvą ir duonos lentas prie korpuso.
Ir taip jūs pagaminsite raktų rūšiuotoją!
Rekomenduojamas:
Spalvų rūšiuotojas: 6 žingsniai
Spalvų rūšiuotojas: šis spalvų rūšiuotojų tikslas yra perkelti m & ms į skirtingas krūvas, atsižvelgiant į jų spalvą
Elektroninis monetų rūšiuotojas: 7 žingsniai (su paveikslėliais)
Elektroninis monetų rūšiuotojas: seniai, labai seniai, kai dar buvo galima eiti į mokyklą, mes sugalvojome įdomią idėją sukurti prietaisą, kuris veiktų gana paprastai - įmetę reikiamą pinigų sumą, išleis konkretų produktą. Negaliu atskleisti
„PhantomX Pincher Robot“- „Apple“rūšiuotojas: 6 žingsniai
„PhantomX Pincher Robot“- „Apple Sorter“: maisto saugos reikalavimai auga. Tiek vartotojai, tiek valdžios institucijos vis labiau reikalauja, kad mūsų valgomas maistas būtų aukštos kokybės ir labai saugus. Jei kyla problemų gaminant maistą, klaidos šaltinis yra
„M&M“spalvų rūšiuotojas: 3 žingsniai
„M&M“spalvų rūšiuotojas: Šio projekto pradžioje mes nusprendėme automatiškai surūšiuoti skirtingų spalvų saldainius į atskirus dubenėlius efektyviu greičiu. Pirmą kartą mus įkvėpė ši idėja, kai pamatėme įrašą svetainėje https://howtomechatronics.com/projects/arduino-col
„Cap It“: interaktyvus buteliuko dangtelio rūšiuotojas: 6 žingsniai
„Cap It“: interaktyvus buteliuko dangtelio rūšiuotojas: šis nurodymas buvo sukurtas vykdant Pietų Floridos universiteto 2018 m. Kurso projekto reikalavimus (www.makecourse.com) Kartkartėmis man patinka grįžti namo ir išgerti alaus. atsipalaiduokite po ilgos gyvenimo dienos