Sadržaj:
- Supplies
- Korak 1: Sastavljanje kola
- Korak 2: Postavljanje našeg RaspberryPi -a
- Korak 3: Postavljanje pozadine
- Korak 4: Postavljanje sučelja
- Korak 5: Uvoz baze podataka za naš projekt
- Korak 6: Pokretanje našeg projekta
- Korak 7: Slučaj
- Korak 8: Divite se konačnom proizvodu
- Korak 9: Problemi
Video: Beskontaktna česma vode: 9 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
Za kraj prve godine kao student MCT -a, imao sam zadatak da napravim projekat koji sadrži sve vještine koje sam tokom godine sticao na kursevima.
Tražio sam projekt koji će provjeriti sve zahtjeve koje su postavili moji učitelji i istovremeno mi biti zabavan za izradu. Kada sam tražio temu, nisam mogao a da se ne inspirišem Covid-19 (To je bilo neposredno prije nego što je došlo do svjetske epidemije.) Odlučio sam se za kontaktnu fontanu/dozator bez kontakta, jer bi to ponudilo način piti vodu bez dodirivanja nekih dugmadi prije nego što voda izađe.
Ovaj projekt koristi senzor udaljenosti za otkrivanje da li je čaša ili čaša stavljena ispod izlaza vode, fontana će zatim nastaviti izlaz vode 60 sekundi (100 ml / minutu). Ovo je potrebno učiniti dosljednijim jer se otkrivanje da li je staklo izvučeno pokazalo kao pretežak/spor zadatak, 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).
Supplies
Komponente
- 1x RaspberryPi (koristio sam četvrtu verziju, ali bi mogle raditi i starije verzije)- 1x tranzistor S8050 ili 1x tranzistor PN2222 bi također 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 do ove stavke)
- 1x napajanje istosmjernom strujom (12v, 600mAh)- 1x cigla za napajanje sa 3 mjesta- 3x matične ploče (vjerovatno biste mogli koristiti manje)- T-postolar za RaspberryPi GPIO pinove- T-kaldrmski kabel (za povezivanje 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 turpija
Korak 1: Sastavljanje kola
Za krug imamo 2 senzora, senzor udaljenosti i fotootpornik. Senzor udaljenosti se koristi za otkrivanje je li čaša 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 rezervoar za vodu ili za neki drugi mehanički problem.
Za aktivne elemente imamo LCD1602, aktivni zujalicu i peristaltičku pumpu, LCD se koristi za prikaz statusa kao što je ako je kućište otvoreno ili pumpa radi, kao i IP adresa uređaja će se prikazati, zujalica je koristi se za stvaranje alarmantnog zvuka kada je kućište otvoreno, a da to niko nije odobrio.
U nastavku sam dodao matičnu ploču i shematski prikaz kola.
Korak 2: Postavljanje našeg RaspberryPi -a
Da bismo postavili naš RaspberryPi, mi ćemo preuzeti softver za obradu slike sa Raspberry web stranice, pomoću koje možete preuzeti željenu verziju Raspbiana i slikati vašu SDCARD karticu umjesto 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 Notepad ++ 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, povezati Pi sa računarom i koristiti Putty za povezivanje sa vašim Pi preko SSH -a. Koristim sljedeću naredbu za spajanje na svoj Pi umjesto da koristim Putty. "ssh [email protected]" ovo može da istekne, zato budite strpljivi i sačekajte da se Pi pokrene. Kada se od vas zatraži lozinka, unijet ćemo zadanu lozinku za "malina". Promijenite ovu lozinku nakon prijavljivanja kako biste spriječili svakoga ko ima zlu namjeru da pristupi vašem Raspberry Pi -u.
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 vašem 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 server i webserver- sudo apt install mariadb-server apache2
Kasnije u ovom vodiču koristit ću 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 pravilno 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 vaš MySQL poslužitelj, ovdje ćemo stvoriti korisnika po imenu db_admin sa odgovarajućom lozinkom, zadržite ova lozinka je negdje zabilježena za kasnije u uputama. DODJELITE SVE PRIVILEGIJE NA *. * NA "db_admin"@"%" IDENTIFIKIRANO "vašPasswordHERE" SA OPCIJOM ODOBRENJA;
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 povežite python pakete, sudo apt instalirajte 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
Ovdje ću objasniti kako možete sami postaviti pozadinu, prvo 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 ovoj postavci da smo sve naše datoteke prenijeli u direktorij dokumenata.
Neka vaš FTP program bude otvoren za sljedeći korak!
Sada ponovo 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 redove ispod DocumentRoot -a 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 nego što prebacimo naše datoteke, morat ćemo učiniti nešto prije nego što počnemo s prijenosom naših sučelja. Otvorite naredbeni redak sa SSH vezom koju ste prethodno uspostavili i upotrijebite donju naredbu za prebacivanje na root korisnika našeg RaspberryPi -a: "sudo su -"
Nakon toga možemo promijeniti lozinku našeg root korisnika sljedećom naredbom: "passwd" Ovo ć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 sa svojim 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, ne možete još 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
Otvorite svoj omiljeni program za upravljanje MySQL poslužiteljem 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 na uobičajen način, MySQL radnu površinu idite na File> Open SQL Script i odaberite dump baze podataka koju ste preuzeli. Zatim pritisnite CTRL + SHIFT + ENTER i SQL skripta bi se trebala pokrenuti i struktura za bazu podataka treba stvoriti.
Dodao sam akreditive koje sam koristio za svoj RaspberryPi kao donji primjer, 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
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 datoteka će se pobrinuti 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. Koristite sljedeću naredbu za kreiranje servisne datoteke: sudo nano /etc/systemd/system/dispenser.serviceOvo će stvoriti servisnu datoteku i kopirati zalijepiti donji kod u ovu datoteku.
[Jedinica] Opis = Dozator vode Nakon mysql.usluge
[Usluga] Tip = simpleRestart = alwaysRestartSec = 1Korisnik = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py
[Instaliraj] WantedBy = višekorisnički cilj
Izmijenite red gdje 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 primjer datoteke.
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ći dispenzer-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
Č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 i drugu debljinu. Moje kućište se može koristiti kao smjernica za dizajniranje 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 x 32 cm (donja ploča)- 2 ploče dimenzija 16 cm x 24 cm (prednja ploča gdje LCD ostaje 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
Došli ste do kraja i do sada ste, nadam se, uspjeli cijelu stvar pretvoriti u stvarnost. Ako ste samo prolaznik koji čita do kraja, dobrodošli, hvala 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 još mnogo 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 bi gurale podatke i promjene preko REST api -a glavnog uređaja. U kodu postoje i ostaci sistema API tokena jer je to trebalo biti implementirano, ali je kasnije prekinuto zbog vremenskih ograničenja.
Postavio sam svoj kôd na svoj Gitlab server i tamo možete pogledati kôd u cjelini:
Preporučuje se:
Mjerač temperature vode, vodljivosti i nivoa vode u bunaru u stvarnom vremenu: 6 koraka (sa slikama)
Mjerač temperature vode, vodljivosti i nivoa vode u bušotini u stvarnom vremenu: Ova uputstva opisuju kako izgraditi jeftin mjerač vode u stvarnom vremenu za praćenje temperature, električne provodljivosti (EC) i nivoa vode u iskopanim bunarima. Mjerač je dizajniran da visi u iskopanom bunaru, mjeri temperaturu vode, EC i
Beskontaktna kućna automatizacija s mobitelom na arduino-bluetooth-u: 5 koraka
Beskontaktna kućna automatizacija s mobitelom na Arduino-bluetooth-u, pozdravi u vrijeme pandemije covid-19, nužnost je izbjegavanja kontakta i održavanja socijalne distance, ali za uključivanje i isključivanje uređaja morate dodirnuti razvodne ploče, ali ne čekajte više da uvedete kontakt bez sistema za kontrolu
Otpad vode protiv vode: 4 koraka
Otpadnik vode: U našoj kući navodno se troši voda koja ostavlja slavinu da radi duže vrijeme. Ovaj otpad protiv vode je dizajniran da bude blagi podsjetnik na osobu koja troši vodu
Alarmni sistem za piće vode /Monitor unosa vode: 6 koraka
Alarmni sistem za piće vode /Monitor unosa vode: Trebali bismo svakodnevno piti dovoljnu količinu vode da bismo sami bili zdravi. Također, ima mnogo pacijenata kojima je propisano da piju određenu količinu vode svaki dan. Ali nažalost, skoro svaki dan smo propustili raspored. Pa dizajniram
Soda česma: 7 koraka
Soda Fountain: Ova instrukcija nastala je u skladu sa projektnim zahtjevima Makecourse -a na Univerzitetu Južne Floride (www.makecourse.com) "* Jeste li umorni od pravopisa pića na stolu? ovo je problem sa kojim se svi suočavaju. sa njim