Përmbajtje:

Shatërvan uji pa kontakt: 9 hapa (me fotografi)
Shatërvan uji pa kontakt: 9 hapa (me fotografi)

Video: Shatërvan uji pa kontakt: 9 hapa (me fotografi)

Video: Shatërvan uji pa kontakt: 9 hapa (me fotografi)
Video: И ЭТО ТОЖЕ ДАГЕСТАН? Приключения в долине реки Баараор. БОЛЬШОЙ ВЫПУСК (Путешествие по Дагестану #3) 2024, Korrik
Anonim
Shatërvan uji pa kontakt
Shatërvan uji pa kontakt

Për fundin e vitit të parë si student MCT më ngarkuan të bëja një projekt që përmbante të gjitha aftësitë që kisha marrë nga kurset gjatë gjithë vitit.

Unë po kërkoja një projekt që do të kontrollonte të gjitha kërkesat e vendosura nga mësuesit e mi dhe në të njëjtën kohë do të ishte argëtuese për mua. Kur kërkoja një temë, nuk mund të ndihesha i frymëzuar nga Covid-19 (Kjo ishte pikërisht para se të fillonte një shpërthim në të gjithë botën.) Zgjodha për një kontakt më pak burim/shpërndarës uji, siç do të ofronte për një mënyrë pirja e ujit pa prekur disa butona para se të dilte uji.

Ky projekt përdor një sensor të distancës për të zbuluar nëse një filxhan ose gotë është vendosur nën daljen e ujit, burimi pastaj do të vazhdojë të nxjerrë ujë për 60 sekonda (100ml / minutë). Kjo është për ta bërë atë më të qëndrueshëm sepse zbulimi nëse xhami është tërhequr doli të ishte shumë i vështirë/i ngadalshëm për një detyrë, kjo është arsyeja pse u vendos një kohëmatës. Pasi gota juaj të jetë mbushur me 100 ml ujë mund të prisni 5 sekonda dhe nëse gota është akoma para sensorit të distancës ajo do të vazhdojë të mbushet një herë tjetër (kjo do të thotë se ka edhe një interval kohor prej 5 sekondash midis mbushjes së dy të ndryshme artikuj).

Furnizimet

Komponentët

- 1x RaspberryPi (kam përdorur versionin e 4-të, por edhe versionet më të vjetra mund të funksionojnë gjithashtu)- 1x transistor S8050 ose transistor 1x PN2222 mund të funksionojnë gjithashtu- 1x Photoresistor- 1x HC-SR04 (Sensori i distancës tejzanor)- 1x RFID-RC522- 3x Ndryshe ngjyra LED (blu, e verdhë, e kuqe)- 1x LCD1602- 1x Zile aktive- 1x PCF8574- 1x MCP3008- 1x Pompë uji (U përdor një pompë peristaltike 12v, lidhja me këtë artikull)

- 1x Furnizim me rrymë DC (12v, 600mAh)- 1x tulla të energjisë me 3 pika- 3x breadboard (ju ndoshta mund të përdorni më pak)- T-kalldrëm për kunjat RaspberryPi GPIO- T-kalldrëm (për lidhjen mes pi dhe kalldrëmit)

Materialet dhe mjetet e përdorura

- Një stërvitje me copat e mëposhtme të stërvitjes:

- 4mm (për të shpuar paraprakisht vrimat për vidhat) - 15mm (për të shpuar vrima për sensorin e distancës)

- Çdo kaçavidë- 30 vida me gjatësi 45 mm- 6 vida 20 mm- 2 varen për derën- Një pjatë MDF prej rreth 130 cm në 80 cm- Disa skedarë

Hapi 1: Montimi i qarkut

Montimi i Qarkut
Montimi i Qarkut
Montimi i Qarkut
Montimi i Qarkut
Montimi i Qarkut
Montimi i Qarkut

Për qarkun kemi 2 sensorë, një sensor të distancës dhe një fotorezistues. Sensori i distancës përdoret për të zbuluar nëse një filxhan është vendosur në sferën e burimit të ujit dhe sipas dëshirës shtova një rezistencë fotografike, kjo përdoret për të zbuluar nëse zorrë është hapur nga dikush që nuk mendohet ta hapë. Për më tepër ne kemi një lexues RFID që mund të përdoret për të vërtetuar një mekanik që duhet të hapë kutinë për të rimbushur rezervuarin e ujit ose për ndonjë çështje tjetër mekanike.

Për elementët aktivë kemi LCD1602, zile aktive dhe një pompë peristaltike, LCD përdoret për të shfaqur statusin sikur rasti është i hapur ose pompa po funksionon si dhe adresa IP e pajisjes do të shfaqet, zileja është përdoret për të bërë një tingull alarmues kur çështja është hapur pa e autorizuar dikush.

Unë kam shtuar tabelën e bukës dhe pamjet skematike të qarkut më poshtë.

Hapi 2: Vendosja e RaspberryPi -t tonë

Për të konfiguruar RaspberryPi -n tonë, ne do të shkarkojmë programin e imazhit nga faqja e Raspberry, me këtë ju mund të shkarkoni versionin e Raspbian që dëshironi dhe të imazhoni SDCARD -in tuaj për ju. Pasi ky mjet të ketë kryer punën e tij, mund të hapni SDCARD në Windows Explorer, do të keni mundësi të shihni ndarjen e nisjes së RaspberryPi -t tuaj. Këtu do të gjejmë një skedar të quajtur cmdline.txt (mos e hapni këtë skedar në fletore, hapeni në Notepad ++ ose ndonjë IDE tjetër). Ne do të shtojmë ip = 169.254.10.1 në fund të këtij skedari për t'u siguruar që mund të lidhemi me pajisjen tonë përmes ethernet (sigurohuni që të mos shtoni asnjë ENTERS në fund të skedarit tuaj ose do të keni probleme).

Tani mund ta vendosni SDCARD -in tuaj në RaspberryPi tuaj dhe ta nisni, ta lidhni Pi me kompjuterin tuaj dhe të përdorni Putty për t'u lidhur me Pi -në tuaj mbi SSH. Unë përdor komandën e mëposhtme për t'u lidhur me Pi tim në vend që të përdor Putty. "ssh [email protected]" kjo mund të përfundojë, kështu që jini të durueshëm dhe prisni që Pi të fillojë. Pasi t'ju kërkohet një fjalëkalim, ne do të plotësojmë fjalëkalimin e paracaktuar të "mjedrës". Sigurohuni që ta ndryshoni këtë fjalëkalim pasi të regjistroheni për të parandaluar që dikush me qëllim të keq të hyjë në Raspberry Pi tuaj.

Tani do të konfigurojmë Pi-in tonë për të siguruar funksionalitetin e nevojshëm për kodin tonë. Përdorni "sudo raspi-config" për të hapur menunë e konfigurimit dhe këtu do të shkojmë te Opsionet e Ndërfaqes.

Nën këtu ne do të kalojmë opsionet e mëposhtme ON:- SPI- I2C

Ndiqni këtë udhëzues për të konfiguruar një lidhje interneti pa tel në Pi tuaj, pasi ta keni bërë me sukses këtë ne mund të arrijmë në instalimin e paketave tona të kërkuara.

Pakot: (ekzekutoni komandat sipas rendit siç janë shënuar këtu)

Më poshtë për të marrë azhurnimet më të fundit për përditësimin tonë të përshtatshëm Pi & su & apt ay

Instaloni serverin tonë MySQL dhe webserver- sudo apt install mariadb-server apache2

Unë do të përdor MySQL Workbench për të konfiguruar bazën e të dhënave më vonë në këtë udhëzues, nëse nuk e përdorni këtë dhe preferoni phpmyadmin mund ta instaloni me komandën e mëposhtme, jeni të lirë të përdorni çdo klient tjetër MySQL, për aq kohë sa ju jam në gjendje të importoj siç duhet bazën e të dhënave.- sudo apt install phpmyadmin

Pasi të keni bërë të gjitha sa më sipër, ne duhet të krijojmë një përdorues për bazën tonë të të dhënave. Përdorni "sudo mysql -u root" për t'u kyçur në serverin tuaj MySQL, këtu do të krijojmë një përdorues të quajtur db_admin me fjalëkalimin përkatës, mbajeni ky fjalëkalim shënohet diku për më vonë në udhëzimet. GJITH GJITH PRIVILEGJET ON *. * P "R "db_admin"@"%" IDENTIFIKUAR NGA "yourPasswordHere" ME OPSION Granti;

Përdorni komandën "\ q" për të dalë nga terminali MySQL.

Pakot Python: Ne ende duhet të instalojmë disa pako python para se të vazhdojmë, ekzekutoni komandën më poshtë për t'u siguruar që gjithçka është atje për një përvojë të përsosur.

sudo pip3 install Flask Flask-Cors Flask-SocketIO gevent gevent-websocket greenlet spi SPI-Pyspidev

Si dhe MySQL e mëposhtme lidhni paketat pythonudo apt install python3 -mysql.connector -y

Nëse gjithçka shkoi mirë, tani mund të vizitoni Pi -në tuaj në shfletuesin tuaj të internetit me adresën e mëposhtme

Hapi 3: Vendosja e sfondit

Vendosja e sfondit
Vendosja e sfondit

Këtu do të shpjegoj se si mund ta konfiguroni vetë pjesën e pasme, së pari shkarkoni skedarin rar nga poshtë, e çregjistroni atë në ndonjë drejtori të përkohshme. Lidhuni me RaspberryPi tuaj me FileZilla ose WinSCP me kredencialet e mëposhtme:

IP: 169.254.10.1 Përdoruesi: piPassword: mjedër (nëse keni ndryshuar fjalëkalimin bëjeni edhe këtu)

Pastaj mund të vazhdoni të transferoni skedarët që nuk i rregulluat në çdo drejtori që dëshironi në drejtorinë kryesore të përdoruesit pi. Për thjeshtësi, ne do të supozojmë në këtë konfigurim se kemi ngarkuar të gjithë skedarët tanë nën drejtorinë e dokumenteve.

Mbani programin tuaj FTP të hapur për hapin tjetër!

Tani hapni përsëri komandën tuaj me lidhjen tuaj SSH sepse do të na duhet të bëjmë disa ndryshime në serverin e uebit në mënyrë që frontend të komunikojë me backendin. Ne do të hapim skedarin e paracaktuar të konfigurimit Apache2 dhe do ta modifikojmë pak: sudo nano /etc/apache2/sites-available/000-default.conf

Shtoni rreshtat e mëposhtëm më poshtë DocumentRoot në skedarin e konfigurimit që sapo hapëm: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Ju mund t'i hidhni një sy imazhit të bashkangjitur për një shembull.

Hapi 4: Vendosja e Frontend

Para se të transferojmë skedarët tanë, do të duhet të bëjmë diçka para se të fillojmë të transferojmë skedarët tanë të përparmë. Hapni komandën tuaj me lidhjen SSH që keni bërë më parë dhe përdorni komandën e mëposhtme për të kaluar te përdoruesi rrënjësor i RaspberryPi -t tonë: "sudo su -"

Pas kësaj ne mund të ndryshojmë fjalëkalimin e përdoruesit tonë rrënjë me komandën e mëposhtme: "passwd" Kjo do t'ju kërkojë të futni një fjalëkalim të ri, pasi ta keni bërë këtë ju mund të ktheheni përsëri në programin tuaj FTP dhe të identifikoheni me kredencialet tuaja rrënjësore:

IP: 169.254.10.1 Përdoruesi: root Fjalëkalimi:

Shkarkoni skedarin rar nga poshtë dhe çregjistroni atë në një dosje të përkohshme, mund t'i zhvendosni këto skedarë në RaspberryPi tuaj në drejtorinë e mëposhtme/var/www/html/, pasi ta keni bërë këtë, mund të vizitoni frontendin në http:/ /169.254.10.1, nuk mund të ndërveproni akoma sepse backendi nuk po funksionon akoma, do t'ju tregoj më vonë në këtë udhëzues se si ta bëni këtë.

Hapi 5: Importimi i bazës së të dhënave për projektin tonë

Importimi i bazës së të dhënave për projektin tonë
Importimi i bazës së të dhënave për projektin tonë
Importimi i bazës së të dhënave për projektin tonë
Importimi i bazës së të dhënave për projektin tonë

Hapni programin tuaj të preferuar të menaxhimit të serverit MySQL dhe lidheni me Raspberry Pi tuaj me kredencialet që krijuam në Hapin 2.

Shkarkoni depozitën e bazës së të dhënave nga poshtë dhe importojeni si zakonisht, MySQL workbench do të shkoni te File> Open SQL Script dhe zgjidhni bazën e të dhënave që keni shkarkuar. Pastaj shtypni CTRL + SHIFT + ENTER dhe skripti SQL duhet të ekzekutohet dhe struktura për bazën e të dhënave duhet të krijohet.

Unë shtova kredencialet që kam përdorur për RaspberryPi tim si një shembull më poshtë, si dhe disa fotografi të strukturës së Bazës së të Dhënave, ju mund t'i hidhni një sy asaj dhe të provoni dhe të merrni një ide të përgjithshme se si funksionon gjithçka.

Hapi 6: Fillimi i Projektit Tonë

Fillimi i Projektit Tonë
Fillimi i Projektit Tonë
Fillimi i Projektit Tonë
Fillimi i Projektit Tonë

Para se të fillojmë projektin tonë, ne duhet të ndryshojmë kredencialet e bazës së të dhënave në skedarin config.py, nëse ndiqni udhëzimet saktësisht siç tha ky udhëzues, atëherë mund t'i gjeni në /home/pi/Documents/Backend/src/config.py këtu ju duhet të ndryshoni kredencialet e ndryshores db_config që të përputhen me ato që kemi krijuar më parë për bazën tonë të të dhënave. Unë kam shtuar një shembull të asaj që do të shihni në këtë skedar më poshtë.

Pas kësaj ju do të shtoni një skedar.service ky skedar do të sigurohet që projekti ynë të fillojë kur të fillojë RaspberryPi, sigurohuni që të ndryshoni drejtorinë në mënyrë të përshtatshme se ku keni instaluar skedarët e backendit. Përdorni komandën e mëposhtme për të krijuar skedarin e shërbimit: sudo nano /etc/systemd/system/dispenser.serviceKjo do të krijojë një skedar shërbimi dhe do të kopjojë ngjitur kodin e mëposhtëm në këtë skedar.

[Njësia] Përshkrimi = Shpërndarësi i ujit Pas = mysql.service

[Shërbimi] Type = simpleRestart = gjithmonëRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Instalo] WantedBy = multi-user.target

Ndryshoni rreshtin ku thuhet /home/pi/Documents/Backend/index.py ku keni instaluar skedarët tuaj të backend -it, nëse nuk e bëni këtë si duhet projekti nuk do të fillojë si duhet! Unë do të shtoj një skedar shembull më poshtë.

Pasi ta keni bërë këtë dhe të dilni nga redaktuesi i tekstit, ne mund të aktivizojmë shërbimin me komandat e mëposhtme:- sudo systemctl daemon-reload- sudo systemctl aktivizoni shpërndarësin-sudo systemctl filloni shpërndarësin

Dhe si një shtesë mund të ekzekutojmë: shpërndarësin e statusit sudo systemctl Kjo do të tregojë disa informacione rreth shërbimit tonë, nëse është aktiv apo jo,…

Hapi 7: Rasti

Rasti
Rasti
Rasti
Rasti
Rasti
Rasti
Rasti
Rasti

Urime jemi pothuajse aty, do të shtoj disa fotografi që do të tregojnë me saktësi dimensionet që kam përdorur për projektin tim, kam përdorur pllaka MDF me trashësi 18mm, sipas dëshirës mund të përdorni një trashësi tjetër. Shtresa ime mund të përdoret si një udhëzues për të hartuar tuajin ose mund të rikrijoni atë që kam bërë. (Nëse përdorni një trashësi të ndryshme të MDF-së, vizatimet e mia nuk do t'ju lejojnë të bëni modelin tim, sigurohuni që ta përshtatni!) Panelet që kam bërë:- 2 panele prej 32cm me 42cm (panele anësore)- 1 panel prej 24cm nga 32cm (pllaka e poshtme)- 2 panele prej 16cm me 24cm (pllaka e përparme ku qëndron LCD dhe pllaka fqinje)- 1 panel prej 28cm me 24cm (pllaka e mesme shihet nga përpara)- 1 panel prej 30cm me 24cm (pllaka e sipërme)

Hapi 8: Admironi produktin përfundimtar

Admironi produktin përfundimtar
Admironi produktin përfundimtar
Admironi produktin përfundimtar
Admironi produktin përfundimtar

Ju keni arritur në fund dhe deri tani shpresojmë se keni arritur ta bëni të gjithë realitet. Nëse jeni thjesht një kalimtar që lexoni, mirëpriteni gjithashtu, ju falënderoj që lexuat deri në hapin e fundit!

Kam shpenzuar shumë gjak, djersë dhe lot në këtë projekt kështu që do ta vlerësoja nëse lini një koment, çdo kritikë për përmirësimin e tij është e mirëpritur!

Hapi 9: Problemet

Unë do ta vendosja projektin në gjendjen e tij aktuale si një prototip pune që mund të shohë shumë më tepër përmirësime.

Baza e kodit të backend -it është e strukturuar në atë mënyrë që një lidhje skllevër -mjeshtër të mund të krijohet në mënyrë perfekte ku një shatërvan do të veprojë si frontend -i kryesor dhe të gjithë burimet e tjerë do të shtyjnë të dhënat dhe ndryshimet mbi api REST të masterit. Ekzistojnë gjithashtu mbetje të një sistemi të shenjave API në kod pasi ky ishte menduar të zbatohej, por u ndërpre më vonë për shkak të kufizimeve kohore.

Unë kam ngarkuar kodin tim në serverin tim Gitlab dhe atje ju mund t'i hidhni një sy kodit në tërësi:

Recommended: