Sadržaj:

Beskontaktna fontana: 9 koraka (sa slikama)
Beskontaktna fontana: 9 koraka (sa slikama)

Video: Beskontaktna fontana: 9 koraka (sa slikama)

Video: Beskontaktna fontana: 9 koraka (sa slikama)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Srpanj
Anonim
Beskontaktna česma vode
Beskontaktna česma vode

Za kraj prve godine kao student MCT -a imao sam zadatak napraviti projekt koji će sadržavati sve vještine koje sam tijekom godine stjecao na kolegijima.

Tražio sam projekt koji će provjeriti sve zahtjeve koje su postavili moji učitelji, a ujedno će mi biti zabavno raditi. Kad sam tražio temu, nisam mogao a da se ne inspiriram Covid-19 (To je bilo neposredno prije nego što je došlo do svjetske epidemije.) Odabrao sam za kontakt fontanu/raspršivač bez kontakta, jer bi to ponudilo način pijenje vode bez dodirivanja nekih gumba prije nego što voda izađe.

Ovaj projekt koristi senzor udaljenosti za otkrivanje je li čaša ili čaša stavljena ispod izlaza vode, fontana će zatim nastaviti izlaz vode 60 sekundi (100 ml / minutu). To je potrebno učiniti dosljednijim jer se otkrivanje je li staklo povučeno pokazalo preteškim/sporim zadatkom, zbog čega je postavljen mjerač vremena. Nakon što se vaša čaša napuni 100 ml vode, možete pričekati 5 sekundi, a ako je čaša i dalje ispred senzora udaljenosti, nastavit će se puniti drugi put (to znači da postoji i vremensko ograničenje od 5 sekundi između punjenja dvije različite stavke).

Pribor

Komponente

- 1x RaspberryPi (koristio sam četvrtu verziju, ali bi mogle raditi i starije verzije)- 1x tranzistor S8050 ili 1x tranzistor PN2222 također bi mogli raditi- 1x fotootpornik- 1x HC-SR04 (ultrazvučni senzor udaljenosti)- 1x RFID-RC522- 3x različito boje LED diode (plava, žuta, crvena)- 1x LCD1602- 1x aktivni zujalica- 1x PCF8574- 1x MCP3008- 1x vodena pumpa (korištena je peristaltička pumpa 12v, veza na ovu stavku)

- 1x napajanje istosmjernom strujom (12v, 600mAh)- 1x cigla za napajanje s 3 mjesta- 3x matične ploče (vjerojatno biste mogli koristiti manje)- T-postolar za RaspberryPi GPIO pinove- T-kablić za kable (za spajanje između pi i postolara)

Korišteni materijali i alati

- Bušilica sa sljedećim svrdlima:

- 4 mm (za bušenje rupa za vijke) - 15 mm (za bušenje rupa za senzor udaljenosti)

- Bilo koji odvijač- 30 vijaka duljine 45 mm- 6 vijaka po 20 mm- 2 šarke za vrata- Ploča od MDF-a veličine oko 130 cm do 80 cm- Par datoteka

Korak 1: Sastavljanje kruga

Sastavljanje kruga
Sastavljanje kruga
Sastavljanje kruga
Sastavljanje kruga
Sastavljanje kruga
Sastavljanje kruga

Za krug imamo 2 senzora, senzor udaljenosti i fotootpornik. Senzor udaljenosti koristi se za otkrivanje je li šalica stavljena u domet vodene fontane, a opcijski sam dodao i fotootpornik, ovaj se koristi za otkrivanje je li kućište otvorio netko tko ga ne bi trebao otvoriti. Povrh toga, imamo RFID čitač koji se može koristiti za provjeru autentičnosti mehaničara koji mora otvoriti kućište kako bi napunio spremnik vode ili za neke druge mehaničke probleme.

Za aktivne elemente imamo LCD1602, aktivni zujalicu i peristaltičku pumpu, LCD se koristi za prikaz statusa, primjerice ako je kućište otvoreno ili crpka radi, a prikazat će se i IP adresa uređaja, zujalica je koristi se za stvaranje alarmantnog zvuka kada je kućište otvoreno, a da to nitko nije odobrio.

U nastavku sam dodao matičnu ploču i shematski prikaz kruga.

Korak 2: Postavljanje našeg RaspberryPi -ja

Za postavljanje našeg RaspberryPi -a, preuzeti ćemo softver za obradu slike s Raspberry web stranice, pomoću koje možete preuzeti željenu verziju Raspbiana i slikati svoju SDCARD za vas. Nakon što ovaj alat obavi svoj posao, možete otvoriti SDCARD u Windows Exploreru, moći ćete vidjeti particiju za pokretanje vašeg RaspberryPi -a. Ovdje ćemo pronaći datoteku pod nazivom cmdline.txt (ne otvarajte ovu datoteku u bilježnici, otvorite je u Notepadu ++ ili bilo kojem drugom IDE -u). Dodati ćemo ip = 169.254.10.1 na kraj ove datoteke kako bismo bili sigurni da se možemo povezati s našim uređajem putem etherneta (pazite da ne dodate nijedan ENTERS na kraju datoteke ili ćete imati problema).

Sada možete staviti SDCARD u svoj RaspberryPi i pokrenuti ga, spojiti Pi na računalo i koristiti Putty za spajanje na vaš Pi preko SSH -a. Koristim sljedeću naredbu za spajanje na svoj Pi umjesto da koristim Putty. "ssh [email protected]" ovo bi moglo isteći, stoga budite strpljivi i pričekajte da se Pi podigne. Kad se od vas zatraži lozinka, ispunit ćemo zadanu lozinku "maline". Promijenite ovu lozinku nakon prijavljivanja kako biste spriječili svakoga ko ima zlu namjeru da pristupi vašem Raspberry Pi.

Sada ćemo konfigurirati naš Pi da pruži potrebnu funkcionalnost za naš kôd. Upotrijebite "sudo raspi-config" da otvorite konfiguracijski izbornik i ovdje ćemo otići na Opcije sučelja.

Ovdje ćemo uključiti sljedeće opcije UKLJUČENO:- SPI-I2C

Slijedite ovaj vodič za postavljanje bežične internetske veze na svom Pi -u. Nakon što to uspješno učinite, možemo pristupiti instaliranju potrebnih paketa.

Paketi: (izvršavajte naredbe redoslijedom kako je ovdje navedeno)

U nastavku donosimo najnovija ažuriranja za naše ažuriranje Pisudo apt && apt nadogradnju -y

Instalirajte naš MySQL poslužitelj i web poslužitelj- sudo apt install mariadb-server apache2

Kasnije ću u ovom vodiču koristiti MySQL Workbench za postavljanje baze podataka. Ako ovo ne koristite i preferirate phpmyadmin, možete ga instalirati sa sljedećom naredbom, slobodni ste koristiti bilo koji drugi MySQL klijent, sve dok mogu ispravno uvesti bazu podataka.- sudo apt install phpmyadmin

Nakon što ste učinili sve gore navedeno, potrebno je stvoriti korisnika za našu bazu podataka. Upotrijebite "sudo mysql -u root" za prijavu na svoj MySQL poslužitelj, ovdje ćemo stvoriti korisnika koji se zove db_admin s pripadajućom lozinkom, zadržite ova je lozinka negdje zabilježena za kasnije u uputama. DODAJTE SVE PRIVILEGIJE NA *. * NA "db_admin"@"%" IDENTIFICIRANO "yourPasswordHERE" S DODATNOM OPCIJOM;

Pomoću naredbe "\ q" izađite iz MySQL terminala.

Python paketi: Još uvijek moramo instalirati neke python pakete prije nego nastavimo, pokrenite naredbu ispod kako biste bili sigurni da je sve tu za besprijekorno iskustvo.

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

Kao i sljedeći MySQL povezivanje python paketa sudo apt install python3 -mysql.connector -y

Ako je sve prošlo kako treba, sada možete posjetiti svoj Pi na svom web -pregledniku sa sljedećom adresom

Korak 3: Postavljanje pozadine

Postavljanje pozadine
Postavljanje pozadine

Ovdje ću objasniti kako možete sami postaviti pozadinu, najprije preuzmite rar datoteku odozdo, raspakirajte je u neki privremeni direktorij. Povežite se na svoj RaspberryPi pomoću FileZilla ili WinSCP sa sljedećim vjerodajnicama:

IP: 169.254.10.1Korisnik: piPassword: malina (ako ste promijenili lozinku učinite to i ovdje)

Zatim možete nastaviti s prijenosom datoteka koje ste otpisali u bilo koji direktorij koji želite u matičnom direktoriju korisnika korisnika pi. Radi jednostavnosti pretpostavit ćemo u ovom postavljanju da smo sve naše datoteke prenijeli u direktorij dokumenata.

Neka vaš FTP program bude otvoren za sljedeći korak!

Sada ponovno otvorite svoj naredbeni redak sa svojom SSH vezom jer ćemo morati napraviti neke promjene na web poslužitelju kako bi sučelje moglo komunicirati s pozadinom. Otvorit ćemo zadanu konfiguracijsku datoteku Apache2 i malo je izmijeniti: sudo nano /etc/apache2/sites-available/000-default.conf

Dodajte sljedeće retke ispod DocumentRoot u konfiguracijsku datoteku koju smo upravo otvorili: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Za primjer možete pogledati priloženu sliku.

Korak 4: Postavljanje sučelja

Prije prijenosa naših datoteka morat ćemo učiniti nešto prije nego što počnemo s prijenosom naših sučelja. Otvorite svoj naredbeni redak sa SSH vezom koju ste prethodno uspostavili i upotrijebite donju naredbu za prelazak na root korisnika našeg RaspberryPi -a: "sudo su -"

Nakon toga možemo promijeniti lozinku našeg root korisnika sljedećom naredbom: "passwd" To će od vas tražiti da unesete novu lozinku, nakon što to učinite možete se vratiti na svoj FTP program i prijaviti se s vašim root vjerodajnicama:

IP: 169.254.10.1Korisnik: rootPassword:

Preuzmite rar datoteku odozdo i raskinite je u privremenoj mapi, te datoteke možete premjestiti na svoj RaspberryPi u sljedeći direktorij/var/www/html/, nakon što to učinite možete posjetiti sučelje na http:/ /169.254.10.1, još ne možete komunicirati jer pozadina još nije pokrenuta, kasnije ću vam pokazati u ovom vodiču kako to učiniti.

Korak 5: Uvoz baze podataka za naš projekt

Uvoz baze podataka za naš projekt
Uvoz baze podataka za naš projekt
Uvoz baze podataka za naš projekt
Uvoz baze podataka za naš projekt

Otvorite svoj omiljeni program za upravljanje poslužiteljem MySQL i povežite se na svoj Raspberry Pi pomoću vjerodajnica koje smo stvorili u 2. koraku.

Preuzmite dump baze podataka odozdo i uvezite ga kao i inače, MySQL radnu površinu idite na File> Open SQL Script i odaberite dump baze podataka koji ste preuzeli. Zatim pritisnite CTRL + SHIFT + ENTER i SQL skripta bi se trebala pokrenuti i struktura za bazu podataka treba stvoriti.

U nastavku sam kao primjer dodao vjerodajnice koje sam koristio za svoj RaspberryPi, kao i nekoliko slika strukture baze podataka, možete je pogledati i pokušati steći opću ideju o tome kako sve funkcionira.

Korak 6: Pokretanje našeg projekta

Pokretanje našeg projekta
Pokretanje našeg projekta
Pokretanje našeg projekta
Pokretanje našeg projekta

Prije nego što možemo pokrenuti naš projekt, moramo promijeniti vjerodajnice baze podataka u datoteci config.py, ako ste slijedili upute točno kako je rečeno u ovom vodiču, možete ih pronaći pod /home/pi/Documents/Backend/src/config.py ovdje morate promijeniti vjerodajnice varijable db_config tako da odgovaraju onima koje smo ranije stvorili za našu bazu podataka. Dodao sam primjer onoga što ćete vidjeti u ovoj datoteci ispod.

Nakon toga ćemo dodati.service datoteku. Ova će datoteka osigurati da naš projekt započne kada se RaspberryPi pokrene. Provjerite jeste li na odgovarajući način promijenili direktorij u kojem ste instalirali pozadinske datoteke. Upotrijebite sljedeću naredbu za stvaranje servisne datoteke: sudo nano /etc/systemd/system/dispenser.serviceOvo će stvoriti servisnu datoteku i kopirati zalijepiti donji kod u ovu datoteku.

[Jedinica] Opis = Dispenzer vode Nakon = mysql.usluga

[Usluga] Vrsta = simpleRestart = alwaysRestartSec = 1Korisnik = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Instaliraj] WantedBy = višekorisnički cilj

Izmijenite redak na kojem piše /home/pi/Documents/Backend/index.py na mjesto na kojem ste instalirali svoje pozadinske datoteke, ako to ne učinite ispravno, projekt neće biti pravilno pokrenut! U nastavku ću dodati datoteku primjera.

Nakon što ste to učinili i izašli iz uređivača teksta, možemo omogućiti uslugu sa sljedećim naredbama:- sudo systemctl daemon-reload- sudo systemctl omogućiti dozator- sudo systemctl start dozator

I kao dodatak možemo pokrenuti: sudo systemctl status dispenserOvo će pokazati neke informacije o našoj usluzi, ako je aktivna ili ne, …

Korak 7: Slučaj

Slučaj
Slučaj
Slučaj
Slučaj
Slučaj
Slučaj
Slučaj
Slučaj

Čestitamo, skoro smo stigli, dodat ću neke slike koje će točno prikazati dimenzije koje sam koristio za svoj projekt, koristio sam MDF ploče debljine 18 mm, po želji možete koristiti drugu debljinu. Moje kućište se može koristiti kao smjernica za dizajn vašeg ili možete ponovno stvoriti ono što sam napravio. (Ako koristite drugu debljinu MDF-a, moji crteži vam više neće dopuštati da napravite moj dizajn, svakako ga prilagodite!) Paneli koje sam napravio:- 2 ploče veličine 32 cm x 42 cm (bočne ploče)- 1 ploča dimenzija 24 cm 32 cm (donja ploča)- 2 ploče dimenzija 16 cm x 24 cm (prednja ploča na kojoj se nalazi LCD i susjedna ploča)- 1 ploča 28 cm x 24 cm (srednja ploča gledana sprijeda)- 1 ploča 30 cm x 24 cm (gornja ploča)

Korak 8: Divite se konačnom proizvodu

Divite se konačnom proizvodu
Divite se konačnom proizvodu
Divite se konačnom proizvodu
Divite se konačnom proizvodu

Došli ste do kraja i do sada ste, nadamo se, uspjeli cijelu stvar pretvoriti u stvarnost. Ako ste samo prolaznik koji čita, također dobrodošli, zahvaljujem vam što ste čitali do posljednjeg koraka!

Potrošio sam mnogo krvi, znoja i suza u ovaj projekt pa bih bio zahvalan ako ostavite komentar, svaka kritika o njegovom poboljšanju je dobrodošla!

Korak 9: Problemi

Projekt bih stavio u trenutno stanje kao radni prototip koji može vidjeti mnogo više poboljšanja.

Baza koda pozadine je strukturirana na takav način da se odnos master slave može savršeno uspostaviti gdje bi jedna fontana djelovala kao glavni sučelje, a sve ostale fontane potiskivale podatke i promjene preko REST api -a glavnog uređaja. U kodu postoje i ostaci sustava API tokena koji se namjeravao implementirati, ali je kasnije odrezan zbog vremenskih ograničenja.

Učitao sam svoj kôd na svoj Gitlab poslužitelj i tamo možete pogledati kôd u cjelini:

Preporučeni: