INHOUDSOPGAWE:

Kontaklose waterfontein: 9 stappe (met foto's)
Kontaklose waterfontein: 9 stappe (met foto's)

Video: Kontaklose waterfontein: 9 stappe (met foto's)

Video: Kontaklose waterfontein: 9 stappe (met foto's)
Video: Aquavolta Monmi-Tec HIM 3 ppm | kontaktlose H2-Wasser Infusions-Maschine 2024, Julie
Anonim
Kontaklose waterfontein
Kontaklose waterfontein

Aan die einde van my eerste jaar as 'n MCT -student was ek verplig om 'n projek te maak wat al die vaardighede bevat wat ek gedurende die jaar uit kursusse opgedoen het.

Ek was op soek na 'n projek wat al die vereistes van my onderwysers sou nagaan en terselfdertyd lekker sou wees om te maak. Toe ek na 'n onderwerp soek, kon ek nie anders as om my geïnspireer te voel deur Covid-19 nie (dit was net voor 'n wêreldwye uitbraak.) drinkwater sonder om aan 'n paar knoppies te raak voordat daar water uitkom.

Hierdie projek gebruik 'n afstandsensor om vas te stel of 'n koppie of glas onder die wateropbrengs geplaas is, en die fontein sal dan 60 sekondes (100 ml / minuut) na die water gaan. Dit is om dit meer konsekwent te maak, want dit was 'n te moeilike/stadige taak om te bepaal of die glas weggetrek is, en daarom is 'n timer opgestel. Nadat u glas met 100 ml water gevul is, kan u 5 sekondes wag, en as die glas nog voor die afstandsensor is, vul dit 'n ander keer (dit beteken dat daar ook 'n tydsduur van 5 sekondes is tussen die vul van twee verskillende items).

Voorrade

Komponente

- 1x RaspberryPi (ek het die 4de weergawe gebruik, maar ouer weergawes werk moontlik ook)- 1x S8050-transistor of 1x PN2222-transistor kan ook so goed werk- 1x Fotoresistor- 1x HC-SR04 (ultrasoniese afstandsensor)- 1x RFID-RC522- 3x anders kleure LED's (blou, geel, rooi)- 1x LCD1602- 1x Active Buzzer- 1x PCF8574- 1x MCP3008- 1x waterpomp ('n 12V peristaltiese pomp is gebruik, skakel na hierdie item)

- 1x DC-kragtoevoer (12v, 600mAh)- 1x kragsteen met 3 kolle- 3x broodborde (jy kan waarskynlik minder gebruik)- T-skoenmaker vir FramboosPi GPIO-penne- T-skoenlaankabel (vir verbinding tussen pi en skoenlapper)

Materiaal en gereedskap gebruik

- 'n Boor met die volgende boorpunte:

- 4 mm (om gate vir die skroewe voor te boor) - 15 mm (om gate vir die afstandsensor te boor)

- Enige skroewedraaier- 30 skroewe van 45 mm lank- 6 skroewe van 20 mm- 2 skarniere vir die deur- 'n Bord van MDF van ongeveer 130 cm by 80 cm- 'n Paar lêers

Stap 1: Monteer die stroombaan

Die samestelling van die kring
Die samestelling van die kring
Die samestelling van die kring
Die samestelling van die kring
Die samestelling van die kring
Die samestelling van die kring

Vir die kring het ons 2 sensors, 'n afstandsensor en 'n fotoresistor. Die afstandsensor word gebruik om vas te stel of 'n koppie binne die waterfontein geplaas is, en ek het ook 'n fotoresistor bygevoeg; hierdie word gebruik om te sien of die omhulsel oopgemaak is deur iemand wat dit nie moet oopmaak nie. Boonop het ons 'n RFID -leser, dit kan gebruik word om 'n werktuigkundige te verifieer wat die kas moet oopmaak om die waterreservoir te hervul of vir 'n ander meganiese probleem.

Vir die aktiewe elemente het ons die LCD1602, 'n aktiewe zoemer en 'n peristaltiese pomp, die LCD word gebruik om status te vertoon asof die omhulsel oop is of die pomp loop, sowel as die IP -adres van die toestel, word gebruik om 'n onrusbarende geluid te maak wanneer die saak oopgemaak is sonder dat iemand dit gemagtig het.

Ek het die broodbord en skematiese aansigte van die stroombaan hieronder bygevoeg.

Stap 2: Ons RaspberryPi opstel

Om ons RaspberryPi op te stel, sal ons die beeldprogrammatuur van die Raspberry -webwerf aflaai, waarmee u die gewenste weergawe van Raspbian kan aflaai en u SDCARD vir u kan voorstel. Nadat hierdie hulpmiddel sy werk gedoen het, kan u die SDCARD in Windows Explorer oopmaak, en u kan die opstartpartisie van u RaspberryPi sien. Hier vind ons 'n lêer met die naam cmdline.txt (moenie hierdie lêer in notaboek oopmaak nie, maak dit oop in Notepad ++ of enige ander IDE). Ons sal ip = 169.254.10.1 aan die einde van hierdie lêer byvoeg om seker te maak dat ons via ethernet aan ons toestel kan koppel (maak seker dat u geen ENTERS aan die einde van u lêer byvoeg nie, anders het u probleme).

Nou kan u u SDCARD in u RaspberryPi plaas en dit oplaai, die Pi aan u rekenaar koppel en Putty gebruik om aan te sluit op u Pi via SSH. Ek gebruik die volgende opdrag om aan te sluit op my Pi in plaas van Putty te gebruik. 'ssh [email protected]' Dit kan 'n tydsverloop hê, dus wees geduldig en wag totdat die Pi begin. Sodra u 'n wagwoord gevra het, vul ons die standaardwagwoord van "framboos" in. Maak seker dat u hierdie wagwoord verander nadat u aangemeld het om te verhoed dat iemand met 'n slegte opset toegang tot u Raspberry Pi verkry.

Ons sal ons Pi nou konfigureer om die nodige funksies vir ons kode te verskaf. Gebruik "sudo raspi-config" om die konfigurasiekieslys oop te maak en hier gaan ons na Interfacing Options.

Hieronder skakel ons die volgende opsies in:- SPI- I2C

Volg hierdie gids om 'n draadlose internetverbinding op u Pi op te stel, nadat u dit suksesvol gedoen het, kan ons die vereiste pakkette installeer.

Pakkette: (voer die opdragte in die volgorde uit soos dit hier aangedui word)

Die volgende om die nuutste opdaterings vir ons Pi- sudo apt update && apt upgrade -y te kry

Installeer ons MySQL-bediener en webserver- sudo apt install mariadb-server apache2

Ek sal MySQL Workbench gebruik om die databasis later in hierdie gids op te stel. As u dit nie gebruik nie en verkies om phpmyadmin te gebruik, kan u dit installeer met die volgende opdrag, u is vry om enige ander MySQL -kliënt te gebruik, solank u kan die databasis behoorlik invoer.- sudo apt install phpmyadmin

Nadat u al die bogenoemde gedoen het, moet ons 'n gebruiker skep vir ons databasis. Gebruik "sudo mysql -u root" om by u MySQL -bediener aan te meld; hier sal ons 'n gebruiker genaamd db_admin skep met die onderskeie wagwoord. hierdie wagwoord word iewers aangeteken vir later in die instruksies. TOEGEKEN ALLE VOORREGTE AAN *. * NA "db_admin"@"%" GEIDENTIFISEER DEUR "yourPasswordHere" MET TOELETINGSOPTIE;

Gebruik die opdrag "\ q" om die MySQL -terminale te verlaat.

Python -pakkette: ons moet nog 'n paar python -pakkette installeer voordat u verder gaan, voer die onderstaande opdrag uit om seker te maak dat alles daar is vir 'n foutlose ervaring.

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

Sowel as die volgende MySQL verbind python -pakkette, of installeer python3 -mysql.connector -y

As alles reg gegaan het, kan u u Pi nou in u webblaaier besoek met die volgende adres

Stap 3: Die opstel van die agterkant

Die opstel van die agterkant
Die opstel van die agterkant

Hier gaan ek verduidelik hoe u self die back -end kan opstel, laai eers die rar -lêer van onder af, verwyder dit in 'n tydelike gids. Koppel aan u RaspberryPi met FileZilla of WinSCP met die volgende geloofsbriewe:

IP: 169.254.10.1 Gebruiker: piWagwoord: framboos (as u die wagwoord verander het, doen dit ook hier)

U kan dan voortgaan met die oordrag van die lêers wat u ongemerk het, na enige gids wat u in die tuisgids van die pi -gebruiker wil hê. Vir die eenvoud sal ons in hierdie opstelling aanvaar dat ons al ons lêers onder die dokumentgids opgelaai het.

Hou u FTP -program oop vir die volgende stap!

Maak nou u opdragprompt weer oop met u SSH -verbinding, want ons sal 'n paar veranderinge aan die webserver moet aanbring sodat die frontend met die backend kan kommunikeer. Ons gaan die standaard Apache2 -konfigurasielêer oopmaak en dit effens verander: nano /etc/apache2/sites-available/000-default.conf

Voeg die volgende reëls onder DocumentRoot in die config -lêer wat ons pas oopgemaak het: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

U kan 'n voorbeeld van die aangehegte prentjie sien.

Stap 4: Die opstel van die frontend

Voordat ons ons lêers oordra, moet ons iets doen voordat ons kan begin met die oordrag van ons frontend -lêers. Maak u opdragprompt oop met die SSH -verbinding wat u voorheen gemaak het en gebruik die onderstaande opdrag om oor te skakel na die wortelgebruiker van ons RaspberryPi: "sudo su -"

Hierna kan ons die wagwoord van ons wortelgebruiker verander met die volgende opdrag: "passwd" Dit sal u vra om 'n nuwe wagwoord in te voer; nadat u dit gedoen het, kan u terugkeer na u FTP -program en aanmeld met u wortelbewyse:

IP: 169.254.10.1 Gebruiker: rootWagwoord:

Laai die rar -lêer van onder af en ontrafel dit in 'n tydelike gids; u kan hierdie lêers na u RaspberryPi na die volgende gids/var/www/html/skuif, nadat u dit gedoen het, kan u die frontend op http besoek:/ /169.254.10.1, u kan nog nie interaksie hê nie, want die backend loop nog nie. Ek sal u later in hierdie gids wys hoe u dit moet doen.

Stap 5: Die invoer van die databasis vir ons projek

Die invoer van die databasis vir ons projek
Die invoer van die databasis vir ons projek
Die invoer van die databasis vir ons projek
Die invoer van die databasis vir ons projek

Maak u gunsteling MySQL -bedienerbestuursprogram oop en maak verbinding met u Raspberry Pi met die geloofsbriewe wat ons in stap 2 geskep het.

Laai die databasis -dump van onder af en voer dit in soos gewoonlik, in MySQL -werkbank, gaan na File> Open SQL Script en kies die databasis wat u afgelaai het. want die databasis moet geskep word.

Ek het die geloofsbriewe wat ek vir my RaspberryPi gebruik het, bygevoeg as 'n voorbeeld hieronder, asook verskeie foto's van die databasisstruktuur; u kan daarna kyk en 'n algemene idee kry van hoe alles werk.

Stap 6: Begin ons projek

Ons projek begin
Ons projek begin
Ons projek begin
Ons projek begin

Voordat ons ons projek kan begin, moet ons die databasisbewyse in die config.py -lêer verander, as u die instruksies presies gevolg het soos in hierdie gids gesê is, kan u dit vind onder /home/pi/Documents/Backend/src/config.py hier moet u die geloofsbriewe van die veranderlike db_config verander sodat dit pas by die wat ons vroeër vir ons databasis geskep het. Ek het 'n voorbeeld bygevoeg van wat u in hierdie lêer hieronder sal sien.

Daarna sal ons 'n.service -lêer byvoeg, hierdie lêer sal seker maak dat ons projek begin wanneer die RaspberryPi begin, maak seker dat u die gids korrek verander van waar u die backend -lêers geïnstalleer het. Gebruik die volgende opdrag om die dienslêer te skep: sudo nano /etc/systemd/system/dispenser.service Dit skep 'n dienslêer en plak die onderstaande kode in hierdie lêer.

[Eenheid] Beskrywing = Water DispenserAfter = mysql.service

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

[Installeer] WantedBy = multi-user.target

Verander die reël waar dit staan /home/pi/Documents/Backend/index.py na waar u u backend -lêers geïnstalleer het; as u dit nie korrek doen nie, word die projek nie korrek begin nie! Ek sal 'n voorbeeldlêer hieronder byvoeg.

Nadat u dit gedoen het en die teksredigeerder verlaat het, kan ons die diens aktiveer met die volgende opdragte:- sudo systemctl daemon-herlaai- sudo systemctl aktiveer dispenser- sudo systemctl begin dispenser

En as 'n ekstra kan ons hardloop: sudo systemctl status dispenser Dit sal inligting oor ons diens toon, of dit aktief is of nie, …

Stap 7: Die saak

Die geval
Die geval
Die geval
Die geval
Die geval
Die geval
Die geval
Die geval

Geluk, ons is amper daar; ek sal 'n paar foto's byvoeg wat die afmetings wat ek vir my projek gebruik het, akkuraat kan aantoon. Ek het MDF -plate van 18 mm dik gebruik; u kan ook 'n ander dikte gebruik. My omhulsel kan as riglyn gebruik word om joune te ontwerp, of u kan dit wat ek gemaak het, herskep. (As u 'n ander dikte van MDF gebruik, kan u met my tekeninge nie meer my ontwerp maak nie; pas dit toe!) Die panele wat ek gemaak het:- 2 panele van 32 cm by 42 cm (sypanele)- 1 paneel van 24 cm by 32 cm (onderplaat)- 2 panele van 16 cm by 24 cm (voorplaat waar LCD bly en naburige plaat)- 1 paneel van 28 cm by 24 cm (middelste plaat van voor gesien)- 1 paneel van 30 cm by 24 cm (boonste plaat)

Stap 8: Bewonder die finale produk

Bewonder die finale produk
Bewonder die finale produk
Bewonder die finale produk
Bewonder die finale produk

U het die einde bereik en hopelik daarin geslaag om die hele werklikheid te maak. As u net 'n verbyganger is, is u ook welkom, ek dank u dat u gelees het tot die laaste stap!

Ek het baie bloed, sweet en trane aan hierdie projek bestee, so ek sal dit waardeer as u kommentaar lewer, enige kritiek op die verbetering daarvan is welkom!

Stap 9: Die probleme

Ek sou die projek in sy huidige toestand plaas as 'n werkende prototipe wat baie verbeterings kan sien.

Die kodebasis van die backend is so gestruktureer dat 'n meester -slawe -verhouding perfek gemaak kan word waar een fontein as die belangrikste frontend sou optree en alle ander fonteine data en veranderings oor die REST -api van die master sou plaas. Daar is ook oorblyfsels van 'n API -tokenstelsel in die kode, aangesien dit bedoel was om geïmplementeer te word, maar later weens tydsbeperkings gesny word.

Ek het my kode na my Gitlab-bediener opgelaai en daar kan u die hele kode bekyk:

Aanbeveel: