Sisukord:

Kontaktivaba purskkaev: 9 sammu (piltidega)
Kontaktivaba purskkaev: 9 sammu (piltidega)

Video: Kontaktivaba purskkaev: 9 sammu (piltidega)

Video: Kontaktivaba purskkaev: 9 sammu (piltidega)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, November
Anonim
Kontaktivaba purskkaev
Kontaktivaba purskkaev

MCT üliõpilasena esimese aasta lõpuks tehti mulle ülesandeks teha projekt, mis sisaldas kõiki oskusi, mida olin aasta jooksul kursustel omandanud.

Otsisin projekti, mis kontrolliks kõiki minu õpetajate seatud nõudeid ja oleks samal ajal minu jaoks lõbus. Teemat otsides ei suutnud ma end Covid-19-st inspireerituna tunda (see oli vahetult enne ülemaailmse puhangu algust.) Valisin kontaktivaba purskkaevu/dosaatori, kuna see pakuks võimalust vee joomine ilma mõnda nuppu puudutamata, enne kui vesi välja tuleb.

See projekt kasutab kaugusandurit, et tuvastada, kas veeväljundi alla on asetatud tass või klaas, seejärel jätkab purskkaev 60 sekundit (100 ml / minut) väljuvat vett. Selle eesmärk on muuta see järjepidevamaks, sest klaasi eemale tõmbamise tuvastamine osutus ülesandeks liiga keeruliseks/aeglaseks, mistõttu pandi taimer. Kui teie klaas on täidetud 100 ml veega, võite oodata 5 sekundit ja kui klaas on endiselt kaugusanduri ees, täidab see teist korda (see tähendab, et kahe erineva täitmise vahel on ka 5 sekundiline aeg) esemed).

Tarvikud

Komponendid

- 1x RaspberryPi (ma kasutasin neljandat versiooni, kuid ka vanemad versioonid võivad töötada)- 1x S8050 transistor või 1x PN2222 transistor võivad samuti töötada- 1x fototakisti- 1x HC-SR04 (ultraheli kaugusandur)- 1x RFID-RC522- 3x erinev värvilised LED-id (sinine, kollane, punane)- 1x LCD1602- 1x aktiivne helisignaal- 1x PCF8574- 1x MCP3008- 1x veepump (kasutati 12v peristaltilist pumpa, link sellele üksusele)

- 1x alalisvoolu toide (12v, 600mAh)- 1x toiteplokk 3 kohaga- 3x leivaplaadid (võiksite kasutada vähem)- T-kurn RaspberryPi GPIO tihvtide jaoks

Kasutatud materjalid ja tööriistad

- puur, millel on järgmised puurid:

- 4 mm (kruvide aukude puurimiseks) - 15 mm (kaugusanduri aukude puurimiseks)

- mis tahes kruvikeeraja- 30 kruvi 45 mm pikkused- 6 kruvi 20 mm- 2 uksehinge- MDF plaat umbes 130 cm kuni 80 cm- paar faili

Samm: vooluringi kokkupanek

Ringraja kokkupanek
Ringraja kokkupanek
Ringraja kokkupanek
Ringraja kokkupanek
Ringraja kokkupanek
Ringraja kokkupanek

Vooluahela jaoks on meil 2 andurit, kaugusandur ja fototakisti. Kaugusandurit kasutatakse, et tuvastada, kas tass on purskkaevu vahemikku pandud, ja valikuliselt lisasin fototakisti, seda kasutatakse selle tuvastamiseks, kas kesta on avanud keegi, kes ei peaks seda avama. Lisaks on meil RFID -lugeja, mida saab kasutada mehaaniku autentimiseks, kes peab veemahuti täitmiseks korpuse avama või mõne muu mehaanilise probleemi korral.

Aktiivsete elementide puhul on meil LCD1602, aktiivne sumin ja peristaltiline pump, vedelkristallekraani kasutatakse oleku kuvamiseks, näiteks juhul, kui korpus on avatud või pump töötab, samuti kuvatakse seadme IP -aadress. kasutatakse murettekitava heli tegemiseks, kui ümbris on avatud ilma kellegi volituseta.

Olen lisanud alloleva vooluahela leivaplaadi ja skemaatilised vaated.

Samm: seadistage meie RaspberryPi

Meie RaspberryPi seadistamiseks laadime Raspberry saidilt alla pilditarkvara, mille abil saate alla laadida soovitud Raspbiani versiooni ja kujutada oma SDCARDi enda jaoks. Kui see tööriist on oma töö teinud, saate SDCARDi avada Windows Exploreris ja näete oma RaspberryPi alglaadimissektsiooni. Siit leiame faili nimega cmdline.txt (ärge avage seda faili märkmikus, avage see Notepad ++ või mõne muu IDE -ga). Selle faili lõppu lisame ip = 169.254.10.1, et olla kindel, et saame oma seadmega Etherneti kaudu ühenduse luua (veenduge, et faili lõppu ei lisataks ENTERS -i, muidu tekib probleeme).

Nüüd saate oma SDCARD -i RaspberryPi -sse panna ja selle käivitada, ühendada Pi arvutiga ja kasutada Puttyt, et ühendada oma Pi SSH -ga. Putty kasutamise asemel kasutan oma Pi -ga ühenduse loomiseks järgmist käsku. "ssh [email protected]" võib see aeguda, seega olge kannatlik ja oodake, kuni Pi käivitub. Kui parooli küsitakse, täidame vaikeparooli "vaarikas". Muutke parool pärast sisselogimist kindlasti ära, et vältida pahatahtlike inimeste juurdepääsu teie Raspberry Pi -le.

Nüüd konfigureerime oma Pi, et pakkuda meie koodile vajalikke funktsioone. Kasutage konfiguratsioonimenüü avamiseks "sudo raspi-config" ja siin läheme liidese suvandite juurde.

Siin lülitame sisse järgmised valikud:- SPI-I2C

Järgige seda juhendit, et seadistada oma Pi -le traadita Interneti -ühendus, pärast seda, kui olete selle edukalt teinud, saame hakata installima vajalikke pakette.

Paketid: (käivitage käsud siin märgitud järjekorras)

Meie Pi- sudo apt update && apt upgrade -y uusimate värskenduste saamiseks järgige järgmist

Installige meie MySQL-server ja veebiserver- sudo apt install mariadb-server apache2

Kasutan MySQL Workbenchi andmebaasi seadistamiseks hiljem selles juhendis. Kui te seda ei kasuta ja eelistate phpmyadminit, saate selle installida järgmise käsuga, võite vabalt kasutada mis tahes muud MySQL -i klienti. suudab andmebaasi korralikult importida.- sudo apt install phpmyadmin

Kui olete kõik ülaltoodud teinud, peame looma oma andmebaasi kasutaja. Kasutage MySQL -i serverisse sisselogimiseks käsku "sudo mysql -u root", siin loome kasutaja nimega db_admin koos vastava parooliga. see parool on juhistes kusagil hiljem märgitud. GRANTI KÕIK PRIILIID * *.

MySQL -terminalist väljumiseks kasutage käsku "\ q".

Pythoni paketid: enne jätkamist peame veel mõned pythoni paketid installima, käivitage allolev käsk, et veenduda, et kõik on veatu kogemuse jaoks olemas.

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

Nagu ka järgmised MySQL -i ühendavad python -paketidudo apt install python3 -mysql.connector -y

Kui kõik läks õigesti, saate nüüd oma veebibrauseris oma Pi külastada järgmise aadressiga

3. samm: taustaprogrammi seadistamine

Taustaprogrammi seadistamine
Taustaprogrammi seadistamine

Siin selgitan, kuidas saate taustaprogrammi ise seadistada, laadige kõigepealt altpoolt alla rar -fail ja eemaldage see mõnda ajutisse kataloogi. Ühendage oma RaspberryPi -ga FileZilla või WinSCP abil järgmiste volitustega:

IP: 169.254.10.1Kasutaja: piPassword: vaarikas (parooli muutmisel tee seda ka siin)

Seejärel saate jätkata eemaldatud failide ülekandmist pi kasutaja kodukataloogi soovitud kataloogi. Lihtsuse huvides eeldame selles seadistuses, et oleme kõik failid dokumendikataloogi alla laadinud.

Hoidke oma FTP -programm järgmiseks sammuks avatuks!

Nüüd avage oma SSH -ühenduse abil uuesti oma käsuviip, sest peame veebiserveris mõned muudatused tegema, et kasutajaliides saaks taustaprogrammiga suhelda. Avame vaikimisi Apache2 konfiguratsioonifaili ja muudame seda veidi: sudo nano /etc/apache2/sites-available/000-default.conf

Lisage äsja avatud konfiguratsioonifaili DocumentRooti alla järgmised read: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Näitena võite vaadata lisatud pilti.

4. samm: kasutajaliidese seadistamine

Enne failide ülekandmist peame midagi tegema, enne kui saame hakata oma esipaneeli faile edastama. Avage oma käsuviip varem loodud SSH -ühendusega ja kasutage alltoodud käsku, et minna üle meie RaspberryPi juurkasutajale: "sudo su -"

Pärast seda saame oma juurkasutaja parooli muuta järgmise käsuga: "passwd" See palub teil sisestada uue parooli. Pärast seda saate oma FTP -programmile tagasi lülituda ja oma juurandmetega sisse logida:

IP: 169.254.10.1 Kasutaja: root Parool:

Laadige altpoolt alla rar -fail ja eemaldage see ajutisest kaustast, saate need failid oma RaspberryPi -sse teisaldada järgmisse kataloogi/var/www/html/, kui olete seda teinud, saate külastada kasutajaliidest aadressil http:/ /169.254.10.1, te ei saa veel suhelda, sest taustaprogramm ei tööta veel. Näitan teile selles juhendis hiljem, kuidas seda teha.

5. samm: andmebaasi importimine meie projekti jaoks

Meie projekti andmebaasi importimine
Meie projekti andmebaasi importimine
Meie projekti andmebaasi importimine
Meie projekti andmebaasi importimine

Avage oma lemmik MySQL -i serverihaldusprogramm ja ühendage oma Raspberry Pi -ga 2. sammus loodud mandaadiga.

Laadige alla andmebaasi prügila ja importige see nagu tavaliselt, MySQL töölaud, kui lähete menüüsse Fail> Ava SQL -skript ja valige allalaaditud andmebaasi prügila. Seejärel vajutage klahvikombinatsiooni CTRL + SHIFT + ENTER ja SQL -skript tuleb käivitada ning struktuur andmebaasi jaoks tuleks luua.

Lisasin näitena oma RaspberryPi jaoks kasutatud mandaadid ja mitu pilti andmebaasi struktuurist. Saate seda vaadata ja proovida saada üldist ettekujutust sellest, kuidas kõik toimib.

6. samm: meie projekti käivitamine

Meie projekti käivitamine
Meie projekti käivitamine
Meie projekti käivitamine
Meie projekti käivitamine

Enne projekti käivitamist peame muutma andmebaasi mandaati failis config.py. Kui järgisite juhiseid täpselt nii, nagu selles juhendis öeldud, leiate need aadressilt /home/pi/Documents/Backend/src/config.py siin peate muutma muutuja db_config mandaati, et see vastaks varem meie andmebaasi jaoks loodud andmetele. Lisasin allpool näite selle kohta, mida selles failis näete.

Pärast seda lisame.service faili, see fail tagab, et meie projekt käivitub RaspberryPi käivitamisel, muutke kindlasti kataloogi, kuhu installisite taustaprogrammid. Teenusefaili loomiseks kasutage järgmist käsku: sudo nano /etc/systemd/system/dispenser.serviceSee loob teenusefaili ja kopeerib alloleva koodi sellesse faili.

[Ühik] Kirjeldus = Water DispenserAfter = mysql.service

[Teenus] Tüüp = lihtneRestart = alatiRestartSec = 1Kasutaja = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Install] WantedBy = multi-user.target

Muutke rida /home/pi/Documents/Backend/index.py oma taustafailide installimise kohta, kui te seda õigesti ei tee, ei käivitata projekti õigesti! Lisan allpool näitefaili.

Kui olete selle teinud ja tekstiredaktorist väljunud, saame teenuse lubada järgmiste käskudega:- sudo systemctl daemon-reload- sudo systemctl lubage jaotur- sudo systemctl käivitage jaotur

Täiendavalt saame käivitada: sudo systemctl oleku jaotur See näitab meie teenuse kohta teavet, kas see on aktiivne või mitte,…

7. samm: juhtum

Juhul
Juhul
Juhul
Juhul
Juhul
Juhul
Juhul
Juhul

Palju õnne, oleme peaaegu kohal. Lisan mõned pildid, mis näitavad täpselt minu projekti jaoks kasutatud mõõtmeid, kasutasin 18 mm paksuseid MDF -plaate, soovi korral võite kasutada ka muud paksust. Minu korpust saab kasutada juhisena teie enda kujundamisel või saate uuesti teha minu tehtud. (Kui kasutate erineva paksusega MDF-plaati, ei võimalda minu joonised teil enam minu kujundust teha, kohandage seda kindlasti!) Minu valmistatud paneelid:- 2 paneeli mõõtudega 32 cm x 42 cm (külgpaneelid)- 1 paneel 24 cm 32 cm (alumine plaat)- 2 paneeli mõõtudega 16 cm x 24 cm (esiplaat, kuhu jääb LCD ja naaberplaat)- 1 paneel 28 cm x 24 cm (keskmine plaat eestvaates)- 1 paneel 30 cm x 24 cm (ülemine plaat)

8. samm: imetlege lõpptoodet

Imetlege lõpptoodet
Imetlege lõpptoodet
Imetlege lõpptoodet
Imetlege lõpptoodet

Olete jõudnud lõppu ja nüüdseks loodetavasti olete suutnud kogu asja reaalsuseks muuta. Kui olete lihtsalt mööduja, kes loeb läbi, siis tere tulemast, tänan teid, et lugesite kuni viimase sammuni!

Kulutasin sellesse projekti palju verd, higi ja pisaraid, nii et oleksin tänulik, kui jätaksite kommentaari, igasugune kriitika selle parandamise kohta on teretulnud!

9. samm: probleemid

Ma paneksin projekti praegusesse olekusse töötava prototüübina, mis näeb palju rohkem parandusi.

Taustaprogrammi koodibaas on üles ehitatud nii, et ülem -alam -seost saab ideaalselt luua seal, kus üks purskkaev toimiks peamise esiplaanina ja kõik muud purskkaevud lükkaksid andmed ja muudatused üle põhiosa REST api -le. Koodis on ka API sümboolsüsteemi jäänuseid, kuna seda kavatseti rakendada, kuid ajapiirangute tõttu hiljem lõigata.

Laadisin oma koodi oma Gitlabi serverisse üles ja seal saate vaadata koodi tervikuna:

Soovitan: