Sisällysluettelo:

Kosketukseton suihkulähde: 9 vaihetta (kuvilla)
Kosketukseton suihkulähde: 9 vaihetta (kuvilla)

Video: Kosketukseton suihkulähde: 9 vaihetta (kuvilla)

Video: Kosketukseton suihkulähde: 9 vaihetta (kuvilla)
Video: Unveiling the secret cleaners who preserve the serenity of the 9/11 Memorial pools. #NYC #Waterfall 2024, Heinäkuu
Anonim
Kosketukseton suihkulähde
Kosketukseton suihkulähde

Ensimmäisen vuoden aikana MCT -opiskelijana sain tehtäväksi tehdä projektin, joka sisälsi kaikki vuoden aikana kursseilta hankkimani taidot.

Etsin projektia, joka tarkistaisi kaikki opettajieni asettamat vaatimukset ja olisi samalla hauska tehdä. Etsiessäni aihetta en voinut olla tuntematta Covid-19: n inspiroimaa (Tämä oli juuri ennen kuin se levisi maailmanlaajuiseen taudinpurkaukseen.) Valitsin kontaktivähemmän suihkulähteen/annostelijan, koska se tarjoisi keinon juomalla vettä koskettamatta joitain painikkeita ennen kuin vesi tulee ulos.

Tämä projekti käyttää etäisyysanturia havaitsemaan, onko kuppi tai lasi asetettu veden ulostulon alle, ja suihkulähde jatkaa sitten veden tuloa 60 sekuntia (100 ml / minuutti). Tämän tarkoituksena on tehdä siitä johdonmukaisempi, koska lasin irrottamisen havaitseminen osoittautui liian vaikeaksi/hitaaksi tehtäväksi, minkä vuoksi ajastin asetettiin paikalleen. Kun lasisi on täytetty 100 ml: lla vettä, voit odottaa 5 sekuntia ja jos lasi on edelleen etäisyysanturin edessä, se täyttää toisen ajan (tämä tarkoittaa myös, että kahden eri täytön välillä on 5 sekunnin aikakatkaisu) kohteita).

Tarvikkeet

Komponentit

- 1x RaspberryPi (käytin neljättä versiota, mutta myös vanhemmat versiot saattavat toimia)- 1x S8050-transistori tai 1x PN2222-transistori voivat toimia yhtä hyvin- 1x valon vastus- 1x HC-SR04 (ultraääni-etäisyysanturi)- 1x RFID-RC522- 3x erilainen värit LEDit (sininen, keltainen, punainen)- 1x LCD1602-1x aktiivinen summeri- 1x PCF8574- 1x MCP3008- 1x vesipumppu (käytetty 12v peristalttista pumppua, linkki tähän kohtaan)

1x DC-virtalähde (12v, 600mAh)

Käytetyt materiaalit ja työkalut

- Pora, jossa on seuraavat poranterät:

- 4 mm (ruuvien reikien esiporaukseen) - 15 mm (etäisyysanturin reikien poraamiseen)

- mikä tahansa ruuvimeisseli- 30 ruuvia 45 mm pitkät- 6 ruuvia 20 mm- 2 saranaa ovelle- MDF-levy noin 130 cm x 80 cm- pari tiedostoa

Vaihe 1: Piirin kokoaminen

Piirin kokoaminen
Piirin kokoaminen
Piirin kokoaminen
Piirin kokoaminen
Piirin kokoaminen
Piirin kokoaminen

Piiriä varten meillä on 2 anturia, etäisyysanturi ja valovastus. Etäisyysanturia käytetään havaitsemaan, onko kuppi asetettu suihkulähteen alueelle, ja lisäsin valinnaisesti vastus, tätä käytetään havaitsemaan, onko kotelo avattu kenenkään, jonka ei pitäisi avata sitä. Lisäksi meillä on RFID -lukija, jota voidaan käyttää autentikoimaan mekaanikko, jonka on avattava kotelo vesisäiliön täyttämiseksi tai jostain muusta mekaanisesta ongelmasta.

Aktiivisille elementeille meillä on LCD1602, aktiivinen summeri ja peristalttinen pumppu, nestekidenäytöllä näytetään tila, kuten jos kotelo on auki tai pumppu on käynnissä, sekä laitteen IP -osoite näytetään, summeri kuuluu käytetään hälyttävän äänen tuottamiseen, kun kotelo on avattu ilman kenenkään lupaa.

Olen lisännyt alla olevan piirilevyn ja kaavamaisen näkymän.

Vaihe 2: Asenna RaspberryPi

RaspberryPi: n asentamiseksi lataamme kuvantamisohjelmiston Raspberry -sivustolta, jonka avulla voit ladata haluamasi Raspbian -version ja kuvata SDCARD -korttisi sinulle. Kun tämä työkalu on tehnyt työnsä, voit avata SDCARD -tiedoston Windowsin Resurssienhallinnassa, jolloin näet RaspberryPi -laitteen käynnistysosion. Täältä löydät tiedoston nimeltä cmdline.txt (älä avaa tätä tiedostoa muistikirjassa, avaa se Notepad ++: ssa tai muussa IDE: ssä). Lisäämme ip = 169.254.10.1 tämän tiedoston loppuun varmistaaksemme, että voimme muodostaa yhteyden laitteeseemme ethernetin kautta (varmista, ettet lisää ENTERS -tiedostoja tiedoston loppuun, tai sinulla on ongelmia).

Nyt voit laittaa SDCARD -korttisi RaspberryPi -laitteeseesi ja käynnistää sen, liittää Pi tietokoneeseen ja muodostaa yhteyden Puttyn avulla Pi -laitteeseen SSH -yhteyden kautta. Käytän seuraavaa komentoa yhteyden muodostamiseen Pi -laitteeseeni Puttyn käyttämisen sijaan. "ssh [email protected]" saattaa kestää aikakatkaisun, joten ole kärsivällinen ja odota, että Pi käynnistyy. Kun meitä pyydetään antamaan salasana, täytämme "vadelma" oletussalasanan. Muista vaihtaa salasana sisäänkirjautumisen jälkeen, jotta kukaan, jolla on paha tarkoitus, ei pääse käyttämään Raspberry Pi -laitettasi.

Määritämme nyt Pi: n tarjoamaan tarvittavat toiminnot koodillemme. Käytä "sudo raspi-config" avataksesi asetusvalikon ja tässä menemme liitäntäasetuksiin.

Tässä vaihdamme seuraavat vaihtoehdot PÄÄLLE:- SPI-I2C

Asenna langaton Internet -yhteys Pi -laitteeseen noudattamalla tätä opasta, kun olet onnistuneesti tehnyt tämän, voimme asentaa tarvittavat paketit.

Paketit: (suorita komennot tässä järjestyksessä)

Seuraavassa saat uusimmat päivitykset Pi- sudo apt update && apt upgrade -y

Asenna MySQL-palvelimemme ja verkkopalvelin- sudo apt install mariadb-server apache2

Käytän MySQL Workbenchia tietokannan määrittämiseen myöhemmin tässä oppaassa. Jos et käytä tätä ja mieluummin phpmyadmin, voit asentaa tämän seuraavalla komennolla, voit käyttää mitä tahansa muuta MySQL -asiakasta yhtä kauan kuin pystyy tuomaan tietokannan oikein.- sudo apt install phpmyadmin

Kun olet tehnyt kaikki edellä mainitut asiat, meidän on luotava käyttäjä tietokantaamme. Käytä "sudo mysql -u root" kirjautuaksesi MySQL -palvelimellesi, tässä luomme käyttäjän nimeltä db_admin vastaavalla salasanalla. tämä salasana on merkitty jonnekin myöhemmissä ohjeissa. GRANT Kaikki etuoikeudet *. * TO "db_admin"@"%" IDENTIFIED "yourPassword Here" WITH GANT OPTION

Poistu MySQL -päätelaitteesta komennolla "\ q".

Python -paketit: Meidän on vielä asennettava joitain python -paketteja ennen kuin jatkat, suorita alla oleva komento varmistaaksesi, että kaikki on virheetöntä kokemusta varten.

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

Seuraavien MySQL connect python -pakettien lisäksi apt asentaa python3 -mysql.connector -y

Jos kaikki meni oikein, voit nyt vierailla Pi -laitteellasi verkkoselaimellasi seuraavan osoitteen avulla:

Vaihe 3: Taustaohjelman määrittäminen

Taustajärjestelmän asentaminen
Taustajärjestelmän asentaminen

Tässä aion selittää, kuinka voit asentaa taustaohjelman itse, lataa ensin rar -tiedosto alta ja poista se jollekin väliaikaiselle hakemistolle. Yhdistä RaspberryPi -laitteeseesi FileZilla- tai WinSCP -ohjelmalla seuraavilla kirjautumistiedoilla:

IP: 169.254.10.1 Käyttäjä: piPassword: vadelma (jos vaihdoit salasanan, tee se myös täällä)

Voit sitten siirtää purkamasi tiedostot mihin tahansa hakemistoon, jonka haluat pi -käyttäjän kotihakemistossa. Yksinkertaisuuden vuoksi oletamme tässä asetuksessa, että olemme ladanneet kaikki tiedostot asiakirjahakemistoon.

Pidä FTP -ohjelmasi auki seuraavaan vaiheeseen!

Avaa nyt komentokehote uudelleen SSH -yhteydelläsi, koska meidän on tehtävä joitain muutoksia verkkopalvelimeen, jotta käyttöliittymä voi kommunikoida taustaohjelman kanssa. nano /etc/apache2/sites-available/000-default.conf

Lisää seuraavat rivit DocumentRootin alle juuri avattuun määritystiedostoon: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Voit katsoa esimerkkiä liitteenä olevasta kuvasta.

Vaihe 4: Käyttöliittymän asentaminen

Ennen tiedostojen siirtämistä meidän on tehtävä jotain ennen kuin voimme aloittaa käyttöliittymäsi tiedostojen siirtämisen. Avaa komentokehote aiemmin muodostamallasi SSH -yhteydellä ja käytä alla olevaa komentoa siirtyäksesi RaspberryPi: n pääkäyttäjään: "sudo su -"

Tämän jälkeen voimme vaihtaa pääkäyttäjämme salasanan seuraavalla komennolla: "passwd" Tämä pyytää sinua syöttämään uuden salasanan. Kun olet tehnyt tämän, voit vaihtaa takaisin FTP -ohjelmaan ja kirjautua sisään pääkäyttäjän tunnuksillasi:

IP: 169.254.10.1 Käyttäjä: root Salasana:

Lataa rar -tiedosto alta ja poista se väliaikaisesta kansiosta, voit siirtää nämä tiedostot RaspberryPi -laitteeseesi seuraavaan hakemistoon/var/www/html/, kun olet tehnyt sen, voit käydä käyttöliittymässä osoitteessa http:/ /169.254.10.1, et voi vielä olla vuorovaikutuksessa, koska taustajärjestelmä ei ole vielä käynnissä. Näytän sinulle myöhemmin tässä oppaassa, kuinka tämä tehdään.

Vaihe 5: Tietokannan tuominen projektillemme

Tietokannan tuominen projektillemme
Tietokannan tuominen projektillemme
Tietokannan tuominen projektillemme
Tietokannan tuominen projektillemme

Avaa suosikkisi MySQL -palvelimenhallintaohjelma ja muodosta yhteys Raspberry Pi -laitteeseesi vaiheessa 2 luomiemme tunnistetietojen avulla.

Lataa tietokannan kaatopaikka alta ja tuo se tavalliseen tapaan, MySQL -työpöytä menisi kohtaan Tiedosto> Avaa SQL -komentosarja ja valitse lataamasi tietokannan dump. Paina sitten CTRL + VAIHTO + ENTER ja SQL -komentosarja suoritetaan ja rakenne tietokantaa varten.

Lisäsin alla olevaan esimerkkinä RaspberryPi -laitteeni käyttämät tunnistetiedot sekä useita kuvia tietokantarakenteesta. Voit katsoa sitä ja yrittää saada yleiskuvan siitä, miten kaikki toimii.

Vaihe 6: Projektimme käynnistäminen

Aloitamme projektimme
Aloitamme projektimme
Aloitamme projektimme
Aloitamme projektimme

Ennen kuin voimme aloittaa projektimme, meidän on muutettava config.py -tiedoston tietokannan kirjautumistiedot. Jos noudatit ohjeita täsmälleen tämän oppaan mukaisesti, löydät ne osoitteesta /home/pi/Documents/Backend/src/config.py täällä sinun on muutettava db_config -muuttujan tunnistetiedot vastaamaan niitä, jotka loimme aiemmin tietokantaamme varten. Olen lisännyt alla esimerkin siitä, mitä näet tässä tiedostossa.

Tämän jälkeen lisäämme.service -tiedoston, tämä tiedosto varmistaa, että projektimme käynnistyy, kun RaspberryPi käynnistyy, ja varmista, että muutat hakemiston asianmukaisesti siitä, mihin olet asentanut taustatiedostot. Luo palvelutiedosto seuraavan komennon avulla: sudo nano /etc/systemd/system/dispenser.service Tämä luo palvelutiedoston ja kopioi liitä alla oleva koodi tähän tiedostoon.

[Yksikkö] Kuvaus = Water DispenserAfter = mysql.service

[Palvelu] Tyyppi = simpleRestart = alwaysRestartSec = 1User = piExecStart =/usr/bin/python3 /home/pi/Documents/Backend/index.py

[Asenna] WantedBy = multi-user.target

Muokkaa riviä, jossa lukee /home/pi/Documents/Backend/index.py, mihin olet asentanut taustaohjelmatiedostot, jos et tee tätä oikein, projektia ei käynnistetä oikein! Lisään esimerkkitiedoston alla.

Kun olet tehnyt sen ja poistunut tekstieditorista, voimme ottaa palvelun käyttöön seuraavilla komennoilla:- sudo systemctl daemon-reload- sudo systemctl käyttöön annostelija- sudo systemctl käynnistä annostelija

Ja lisävarusteena voimme suorittaa: sudo systemctl -tila -annostelijaTämä näyttää joitain tietoja palvelustamme, onko se aktiivinen vai ei,…

Vaihe 7: Asia

Tapaus
Tapaus
Tapaus
Tapaus
Tapaus
Tapaus
Tapaus
Tapaus

Onnittelut, olemme melkein perillä, lisään kuvia, jotka osoittavat tarkasti projektissani käyttämäni mitat, käytin 18 mm paksuja MDF -levyjä, voit halutessasi käyttää eri paksuutta. Koteloa voidaan käyttää ohjeena suunnitella omasi tai voit luoda uudelleen tekemäni. (Jos käytät eri paksuista MDF-levyä, piirustukseni eivät enää salli sinun suunnitella, mukauta se!) Valmistamani paneelit:- 2 paneelia, joiden koko on 32 x 42 cm (sivupaneelit)- 1 paneeli, jonka koko on 24 cm 32 cm (pohjalevy)- 2 16 x 24 cm: n paneelia (etulevy, jossa nestekidenäyttö ja sen vieressä oleva levy)- 1 paneeli, jonka koko on 28 x 24 cm (keskilevy edestä katsottuna)- 1 paneeli, jonka koko on 30 x 24 cm (ylälevy)

Vaihe 8: Ihaile lopputuotetta

Ihaile lopputuotetta
Ihaile lopputuotetta
Ihaile lopputuotetta
Ihaile lopputuotetta

Olet saavuttanut lopun ja toivottavasti olet nyt onnistunut tekemään koko asiasta totta. Jos olet vain ohikulkija, joka lukee läpi, tervetuloa myös, kiitos, että luit viimeiseen vaiheeseen asti!

Vietin paljon verta, hikeä ja kyyneleitä tähän projektiin, joten olisin kiitollinen, jos jätät kommentin, kaikki kritiikki sen parantamiseksi on tervetullutta!

Vaihe 9: Ongelmat

Laittaisin projektin nykyiseen tilaansa toimivana prototyypinä, joka voi nähdä paljon enemmän parannuksia.

Taustaohjelman koodipohja on rakennettu siten, että isäntä -orja -suhde voidaan luoda täydellisesti, jossa yksi suihkulähde toimisi pääkäyttöliittymänä ja kaikki muut suihkulähteet siirtäisivät tietoja ja muutoksia isännän REST -apiin. Koodissa on myös API -tunnistejärjestelmän jäänteitä, koska se oli tarkoitus ottaa käyttöön, mutta leikata myöhemmin ajanrajoitusten vuoksi.

Olen ladannut koodini Gitlab-palvelimelleni ja siellä voit tarkastella koodia kokonaisuudessaan:

Suositeltava: