Indholdsfortegnelse:

Kontaktløst vand springvand: 9 trin (med billeder)
Kontaktløst vand springvand: 9 trin (med billeder)

Video: Kontaktløst vand springvand: 9 trin (med billeder)

Video: Kontaktløst vand springvand: 9 trin (med billeder)
Video: Istanbul, Tyrkiet. Øst og vest. Stor frigivelse. 2024, Juli
Anonim
Kontaktløst vand springvand
Kontaktløst vand springvand

I slutningen af mit første år som MCT -studerende fik jeg til opgave at lave et projekt, der indeholdt alle de færdigheder, jeg havde hentet fra kurser i løbet af året.

Jeg ledte efter et projekt, der ville kontrollere alle de krav, mine lærere stillede, og samtidig være sjovt for mig at lave. Da jeg ledte efter et emne, kunne jeg ikke lade være med at føle mig inspireret af Covid-19 (Dette var lige før det gik til et verdensomspændende udbrud.) Jeg valgte en kontakt mindre vand springvand/dispenser, da det ville tilbyde en måde at drikkevand uden at røre ved nogle knapper, før der ville komme vand ud.

Dette projekt bruger en afstandssensor til at registrere, om en kop eller et glas er blevet placeret under vandudgangen, springvandet fortsætter derefter med at udlede vand i 60 sekunder (100 ml / minut). Dette er for at gøre det mere konsekvent, fordi det var en for vanskelig/langsom opgave at registrere, om glasset er blevet trukket væk, og derfor blev der sat en timer på plads. Efter at dit glas er blevet fyldt med 100 ml vand, kan du vente i 5 sekunder, og hvis glasset stadig er foran afstandssensoren, vil det fortsætte med at fylde en anden gang (det betyder, at der også er en timeout på 5 sekunder mellem påfyldning af to forskellige varer).

Forbrugsvarer

Komponenter

- 1x RaspberryPi (jeg brugte den 4. version, men ældre versioner kan også fungere)- 1x S8050 transistor eller 1x PN2222 transistor kan også fungere- 1x Fotoresistor- 1x HC-SR04 (ultralydsafstandssensor)- 1x RFID-RC522- 3x forskellige farver LED'er (blå, gul, rød)- 1x LCD1602- 1x Aktiv summer- 1x PCF8574- 1x MCP3008- 1x vandpumpe (en 12v peristaltisk pumpe blev brugt, link til denne vare)

- 1x DC-strømforsyning (12v, 600mAh)- 1x power brick med 3 spots- 3x breadboards (du kan sandsynligvis bruge mindre)- T-skomager til RaspberryPi GPIO pins- T-skomager kabel (til forbindelse mellem pi og skomager)

Materialer og værktøjer brugt

- Et bor med følgende bor:

- 4 mm (til forborning af huller til skruerne) - 15 mm (til at bore huller til afstandssensoren)

- Enhver skruetrækker- 30 skruer på 45 mm lange- 6 skruer på 20 mm- 2 hængsler til døren- En plade af MDF på omkring 130 cm x 80 cm- Et par filer

Trin 1: Samling af kredsløbet

Montering af kredsløbet
Montering af kredsløbet
Montering af kredsløbet
Montering af kredsløbet
Montering af kredsløbet
Montering af kredsløbet

Til kredsløbet har vi 2 sensorer, en afstandssensor og en fotoresistor. Afstandssensoren bruges til at registrere, om en kop er blevet placeret inden for vandfontænet, og eventuelt tilføjede jeg en fotoresistor, denne bruges til at registrere, om kabinettet er blevet åbnet af nogen, der ikke skulle åbne det. Derudover har vi en RFID -læser, der kan bruges til at godkende en mekaniker, der skal åbne kassen for at genopfylde vandreservoiret eller til et andet mekanisk problem.

For de aktive elementer har vi LCD1602, aktiv summer og en peristaltisk pumpe, LCD'en bruges til at vise status som hvis sagen er åben, eller pumpen kører, såvel som enhedens IP -adresse vil blive vist, summeren er bruges til at afgive en alarmerende lyd, når sagen er blevet åbnet, uden at nogen godkender den.

Jeg har tilføjet brødbrættet og skematiske visninger af kredsløbet nedenfor.

Trin 2: Opsætning af vores RaspberryPi

For at konfigurere vores RaspberryPi vil vi downloade billeddannelsessoftwaren fra Raspberry -webstedet, med dette kan du downloade den version af Raspbian, du ønsker, og billed dit SDCARD for dig. Når dette værktøj har udført sit arbejde, kan du åbne SDCARD i Windows Stifinder, og du vil kunne se bootpartitionen på din RaspberryPi. Her finder vi en fil kaldet cmdline.txt (åbn ikke denne fil i notesblok, åbn den i Notesblok ++ eller en anden IDE). Vi tilføjer ip = 169.254.10.1 til slutningen af denne fil for at sikre, at vi kan oprette forbindelse til vores enhed via ethernet (sørg for at du ikke tilføjer ENTERS i slutningen af din fil, ellers får du problemer).

Nu kan du sætte dit SDCARD i din RaspberryPi og starte det op, slutte Pi til din computer og bruge Putty til at oprette forbindelse til din Pi over SSH. Jeg bruger følgende kommando til at oprette forbindelse til min Pi i stedet for at bruge Putty. "ssh [email protected]" dette kan have en timeout, så vær tålmodig og vent på, at Pi starter. Når vi bliver bedt om en adgangskode, udfylder vi standardadgangskoden for "hindbær". Sørg for at ændre denne adgangskode efter at have logget ind for at forhindre, at alle med en ond hensigt får adgang til din Raspberry Pi.

Vi vil nu konfigurere vores Pi til at levere den nødvendige funktionalitet til vores kode. Brug "sudo raspi-config" til at åbne konfigurationsmenuen, og her vil vi gå til Interfacing Options.

Herunder vil vi slå følgende muligheder til:- SPI- I2C

Følg denne vejledning for at konfigurere en trådløs internetforbindelse på din Pi, efter at du har gjort dette, kan vi komme i gang med at installere vores nødvendige pakker.

Pakker: (kør kommandoerne i rækkefølgen, som de er angivet her)

Følgende for at få de nyeste opdateringer til vores Pi- sudo apt opdatering && apt upgrade -y

Installer vores MySQL-server og webserver- sudo apt install mariadb-server apache2

Jeg vil bruge MySQL Workbench til at konfigurere databasen senere i denne vejledning, hvis du ikke bruger dette og foretrækker phpmyadmin, kan du installere dette med følgende kommando, du er fri til at bruge enhver anden MySQL -klient så længe du er kan importere databasen korrekt.- sudo apt install phpmyadmin

Når du har gjort alt det ovenstående, skal vi oprette en bruger til vores vores database. Brug "sudo mysql -u root" til at logge ind på din MySQL -server, her vil vi oprette en bruger kaldet db_admin med sin respektive adgangskode, behold denne adgangskode noteret et sted til senere i instruktionerne. TILDELE ALLE PRIVILEGER TIL *. * TIL "db_admin"@"%" IDENTIFICERET VED "yourPasswordHere" MED GRANT MULIGHED;

Brug kommandoen "\ q" til at forlade MySQL -terminalen.

Python -pakker: Vi skal stadig installere nogle pythonpakker, før vi fortsætter, kør kommandoen herunder for at sikre, at alt er der for en fejlfri oplevelse.

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

Samt følgende MySQL forbinder python -pakker og installerer python3 -mysql.connector -y

Hvis alt gik rigtigt, kan du nu besøge din Pi i din webbrowser med følgende adresse

Trin 3: Opsætning af backend

Opsætning af backend
Opsætning af backend

Her vil jeg forklare, hvordan du selv kan konfigurere backend, først downloade rar -filen nedenunder, afvikle den til et midlertidigt bibliotek. Opret forbindelse til din RaspberryPi med FileZilla eller WinSCP med følgende legitimationsoplysninger:

IP: 169.254.10.1Bruger: piPassword: hindbær (hvis du har ændret adgangskoden, gør det også her)

Du kan derefter fortsætte med at overføre de filer, du har fjernet til en vilkårlig mappe, i pi -brugerens hjemmebibliotek. For enkelthedens skyld antager vi i dette setup, at vi har uploadet alle vores filer under dokumentmappen.

Hold dit FTP -program åbent til næste trin!

Åbn nu din kommandoprompt igen med din SSH -forbindelse, fordi vi bliver nødt til at foretage nogle ændringer af webserveren, så frontenden kan kommunikere med backend. Vi åbner standard Apache2 -konfigurationsfilen og ændrer den lidt: sudo nano /etc/apache2/sites-available/000-default.conf

Tilføj følgende linjer nedenfor DocumentRoot i den konfigurationsfil, vi lige har åbnet: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Du kan se et eksempel på det vedhæftede billede.

Trin 4: Opsætning af frontend

Inden vi overfører vores filer, skal vi gøre noget, før vi kan begynde at overføre vores frontend -filer. Åbn din kommandoprompt med den SSH -forbindelse, du tidligere har oprettet, og brug nedenstående kommando til at skifte til rodbrugeren af vores RaspberryPi: "sudo su -"

Herefter kan vi ændre adgangskoden til vores rodbruger med følgende kommando: "passwd" Dette vil bede dig om at indtaste en ny adgangskode, efter at du har gjort dette, kan du skifte tilbage til dit FTP -program og logge ind med dine root -legitimationsoplysninger:

IP: 169.254.10.1 Bruger: rootPassword:

Download rar -filen nedenunder og fjern den i en midlertidig mappe, du kan flytte disse filer til din RaspberryPi til følgende bibliotek/var/www/html/, efter at du har gjort det, kan du besøge frontend på http:/ /169.254.10.1, du kan ikke interagere endnu, fordi backend ikke kører endnu, jeg viser dig senere i denne vejledning, hvordan du gør dette.

Trin 5: Import af databasen til vores projekt

Import af databasen til vores projekt
Import af databasen til vores projekt
Import af databasen til vores projekt
Import af databasen til vores projekt

Åbn dit foretrukne MySQL -serverstyringsprogram, og opret forbindelse til din Raspberry Pi med de legitimationsoplysninger, vi oprettede i trin 2.

Download databasedumpen nedenunder og importer den som du normalt ville, MySQL -arbejdsbord, du ville gå til Filer> Åbn SQL -script og vælge den database -dump, du downloadede. Tryk derefter på CTRL + SKIFT + ENTER, og SQL -scriptet skulle køres og strukturen for databasen skal oprettes.

Jeg tilføjede de legitimationsoplysninger, jeg brugte til min RaspberryPi som et eksempel herunder samt flere billeder af databasestrukturen, du kan tage et kig på det og prøve at få en generel idé om, hvordan alt fungerer.

Trin 6: Start af vores projekt

Opstart af vores projekt
Opstart af vores projekt
Opstart af vores projekt
Opstart af vores projekt

Inden vi kan starte vores projekt, skal vi ændre databasens legitimationsoplysninger i filen config.py. Hvis du fulgte instruktionerne nøjagtigt som denne vejledning sagde, kan du finde disse under /home/pi/Documents/Backend/src/config.py her skal du ændre legitimationsoplysningerne for variablen db_config, så de matcher dem, vi har oprettet tidligere til vores database. Jeg har tilføjet et eksempel på, hvad du vil se i denne fil herunder.

Derefter tilføjer vi en.service -fil, denne fil vil sikre, at vores projekt starter, når RaspberryPi starter, sørg for at ændre biblioteket på passende vis, hvor du installerede backend -filerne. Brug følgende kommando til at oprette servicefilen: sudo nano /etc/systemd/system/dispenser.service Dette opretter en servicefil og kopierer nedenstående kode til denne fil.

[Enhed] Beskrivelse = VanddispenserAfter = mysql.service

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

[Installer] WantedBy = multi-user.target

Rediger linjen, hvor der står /home/pi/Documents/Backend/index.py til, hvor du installerede dine backend -filer, hvis du ikke gør dette korrekt, starter projektet ikke korrekt! Jeg tilføjer en eksempelfil herunder.

Når du har gjort det og er gået ud af teksteditoren, kan vi aktivere tjenesten med følgende kommandoer:- sudo systemctl daemon-reload- sudo systemctl aktiver dispenser- sudo systemctl start dispenser

Og som en ekstra kan vi køre: sudo systemctl status dispenserDette viser nogle oplysninger omkring vores service, hvis den er aktiv eller ej, …

Trin 7: Sagen

Sagen
Sagen
Sagen
Sagen
Sagen
Sagen
Sagen
Sagen

Tillykke, vi er næsten der, jeg tilføjer nogle billeder, der præcist viser de dimensioner, jeg brugte til mit projekt, jeg brugte MDF -plader på 18 mm tyk, du kan eventuelt bruge en anden tykkelse. Mit kabinet kan bruges som en retningslinje til at designe dit, eller du kan genskabe, hvad jeg har lavet. (Hvis du bruger en anden tykkelse af MDF vil mine tegninger ikke længere tillade dig at lave mit design, sørg for at tilpasse det!) Panelerne jeg lavede:- 2 paneler på 32 cm x 42 cm (sidepaneler)- 1 panel på 24 cm med 32 cm (bundplade)- 2 paneler på 16 cm x 24 cm (frontplade, hvor LCD forbliver og naboplade)- 1 panel på 28 cm x 24 cm (midterplade set forfra)- 1 panel på 30 cm x 24 cm (topplade)

Trin 8: Beundre det endelige produkt

Beundre det endelige produkt
Beundre det endelige produkt
Beundre det endelige produkt
Beundre det endelige produkt

Du har nået slutningen og nu forhåbentlig formået at gøre det hele til virkelighed. Hvis du bare er en forbipasserende, der læser igennem, er du også velkommen, jeg takker dig, fordi du læste indtil det sidste trin!

Jeg brugte meget blod, sved og tårer i dette projekt, så jeg ville sætte pris på det, hvis du efterlod en kommentar, enhver kritik mod at forbedre det er velkommen!

Trin 9: Problemerne

Jeg vil sætte projektet i sin nuværende tilstand som en fungerende prototype, der kan se mange flere forbedringer.

Backendens kodebase er opbygget på en sådan måde, at en master -slave -relation perfekt kan oprettes, hvor et springvand ville fungere som hovedfronten, og alle andre springvand ville skubbe data og ændringer over masterens REST -api. Der er også rester af et API -token -system i koden, da dette var beregnet til at blive implementeret, men blev afskåret senere på grund af tidsbegrænsninger.

Jeg har uploadet min kode til min Gitlab-server, og der kan du se hele koden:

Anbefalede: