Innehållsförteckning:

Kontaktlös vattenfontän: 9 steg (med bilder)
Kontaktlös vattenfontän: 9 steg (med bilder)

Video: Kontaktlös vattenfontän: 9 steg (med bilder)

Video: Kontaktlös vattenfontän: 9 steg (med bilder)
Video: Istanbul, Türkei. Ost und West. Große Veröffentlichung. 2024, Juli
Anonim
Kontaktlös vattenfontän
Kontaktlös vattenfontän

Under slutet av mitt första år som MCT -student fick jag i uppdrag att göra ett projekt som innehöll alla de färdigheter jag hade fått från kurser under hela året.

Jag letade efter ett projekt som skulle kontrollera alla krav som ställts av mina lärare och samtidigt vara roligt för mig att göra. När jag letade efter ett ämne kunde jag inte låta bli att känna mig inspirerad av Covid-19 (Detta var precis innan det gick till ett världsomspännande utbrott.) Jag valde en kontaktfri vattenfontän/dispenser, som det skulle erbjuda för ett sätt att dricka vatten utan att röra några knappar innan vatten skulle komma ut.

Detta projekt använder en avståndssensor för att upptäcka om en kopp eller ett glas har placerats under vattenutgången, fontänen fortsätter sedan till utmatningsvatten i 60 sekunder (100 ml / minut). Detta för att göra det mer konsekvent eftersom upptäckt om glaset har dragits bort visade sig vara för svårt/långsamt för en uppgift, varför en timer sattes på plats. När ditt glas har fyllts med 100 ml vatten kan du vänta i 5 sekunder och om glaset fortfarande ligger framför avståndssensorn fortsätter det att fyllas en annan gång (det betyder att det också går en timeout på 5 sekunder mellan att fylla två olika objekt).

Tillbehör

Komponenter

- 1x RaspberryPi (jag använde den fjärde versionen men äldre versioner kan också fungera)- 1x S8050 transistor eller 1x PN2222 transistor kan fungera lika bra- 1x Fotoresistor- 1x HC-SR04 (ultraljudsavståndssensor)- 1x RFID-RC522- 3x olika färger LED (blå, gul, röd)- 1x LCD1602- 1x aktiv summer- 1x PCF8574- 1x MCP3008- 1x vattenpump (en 12v peristaltisk pump användes, länk till denna artikel)

- 1x DC-strömförsörjning (12v, 600mAh)- 1x power brick med 3 fläckar- 3x brödbrädor (du kan förmodligen använda mindre)- T-skomakare för RaspberryPi GPIO-stift- T-skomakarkabel (för anslutning mellan pi och skomakare)

Material och verktyg som används

- En borr med följande borr:

- 4 mm (för förborra hål för skruvarna) - 15 mm (för att borra hål för avståndssensorn)

- Alla skruvmejslar- 30 skruvar med 45 mm långa- 6 skruvar med 20 mm- 2 gångjärn för dörren- En platta av MDF på cirka 130 cm x 80 cm- Ett par filer

Steg 1: Montera kretsen

Montering av kretsen
Montering av kretsen
Montering av kretsen
Montering av kretsen
Montering av kretsen
Montering av kretsen

För kretsen har vi 2 sensorer, en avståndssensor och en fotoresistor. Avståndssensorn används för att upptäcka om en kopp har placerats inom räckhåll för vattenfontänen och valfritt lade jag till en fotoresistor, den här används för att upptäcka om höljet har öppnats av någon som inte ska öppna det. Dessutom har vi en RFID -läsare som kan användas för att autentisera en mekaniker som måste öppna höljet för att fylla på vattenbehållaren eller för andra mekaniska problem.

För de aktiva elementen har vi LCD1602, aktiv summer och en peristaltisk pump, LCD -skärmen används för att visa status som om höljet är öppet eller om pumpen är igång samt att enhetens IP -adress visas, summern är används för att göra ett alarmerande ljud när ärendet har öppnats utan att någon har godkänt det.

Jag har lagt till brödbrädan och schematiska vyer av kretsen nedan.

Steg 2: Konfigurera vår RaspberryPi

För att konfigurera vår RaspberryPi, kommer vi att ladda ner bildprogramvaran från Raspberry -webbplatsen, med detta kan du ladda ner den version av Raspbian du vill ha och bilda ditt SDCARD åt dig. När det här verktyget har gjort sitt arbete kan du öppna SDCARD i Utforskaren, du kommer att kunna se startpartitionen på din RaspberryPi. Här hittar vi en fil som heter cmdline.txt (öppna inte den här filen i anteckningsblock, öppna den i Anteckningar ++ eller någon annan IDE). Vi kommer att lägga till ip = 169.254.10.1 i slutet av den här filen för att se till att vi kan ansluta till vår enhet via ethernet (se till att du inte lägger till några ENTERS i slutet av filen, annars har du problem).

Nu kan du lägga ditt SDCARD i din RaspberryPi och starta upp det, anslut Pi till din dator och använd Putty för att ansluta till din Pi över SSH. Jag använder följande kommando för att ansluta till min Pi istället för att använda Putty. "ssh [email protected]" det här kan ta timeout, så ha tålamod och vänta tills Pi startar. När du uppmanas att ange ett lösenord fyller vi i standardlösenordet för "hallon". Var noga med att ändra det här lösenordet efter att du har loggat in för att förhindra att någon med en avsiktlig avsikt kommer åt din Raspberry Pi.

Vi kommer nu att konfigurera vår Pi för att tillhandahålla nödvändig funktionalitet för vår kod. Använd "sudo raspi-config" för att öppna konfigurationsmenyn och här går vi till gränssnittsalternativ.

Under här kommer vi att slå på följande alternativ:- SPI- I2C

Följ den här guiden för att konfigurera en trådlös internetanslutning på din Pi, efter att du har gjort detta kan vi installera våra paket.

Paket: (kör kommandona i den ordning som de anges här)

Följande för att få de senaste uppdateringarna för vår Pi -sudo apt uppdatering && apt upgrade -y

Installera vår MySQL-server och webserver- sudo apt install mariadb-server apache2

Jag kommer att använda MySQL Workbench för att konfigurera databasen senare i den här guiden. Om du inte använder detta och föredrar phpmyadmin kan du installera detta med följande kommando, du kan använda alla andra MySQL -klienter så länge du kan importera databasen korrekt.- sudo apt install phpmyadmin

När du har gjort allt ovan behöver vi skapa en användare för vår databas. Använd "sudo mysql -u root" för att logga in på din MySQL -server, här kommer vi att skapa en användare som heter db_admin med dess respektive lösenord, behåll detta lösenord antecknas någonstans för senare i instruktionerna. GRANTA ALLA PRIVILEGER PÅ *. * TILL "db_admin"@"%" IDENTIFIERAD MED "yourPasswordHere" MED GRANT -ALTERNATIV;

Använd kommandot "\ q" för att lämna MySQL -terminalen.

Python -paket: Vi behöver fortfarande installera några python -paket innan vi fortsätter, kör kommandot nedan för att se till att allt finns där för en felfri upplevelse.

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

Förutom följande MySQL -anslutning av pythonpaket kan du installera python3 -mysql.connector -y

Om allt gick rätt kan du nu besöka din Pi i din webbläsare med följande adress

Steg 3: Konfigurera backend

Konfigurera backend
Konfigurera backend

Här ska jag förklara hur du kan konfigurera backend själv, först ladda ner rar -filen underifrån, avlägsna den till någon tillfällig katalog. Anslut till din RaspberryPi med FileZilla eller WinSCP med följande referenser:

IP: 169.254.10.1 Användare: piPassword: hallon (om du ändrade lösenordet gör det här också)

Du kan sedan fortsätta att överföra filerna som du avmarkerade till vilken katalog du vill i pi -användarens hemkatalog. För enkelhets skull antar vi i den här inställningen att vi har laddat upp alla våra filer under dokumentkatalogen.

Håll ditt FTP -program öppet för nästa steg!

Öppna nu kommandotolken igen med din SSH -anslutning eftersom vi kommer att behöva göra några ändringar av webbservern så att frontend kan kommunicera med backend. Vi kommer att öppna standard Apache2 -konfigurationsfilen och ändra den något: sudo nano /etc/apache2/sites-available/000-default.conf

Lägg till följande rader nedan DocumentRoot i konfigurationsfilen som vi just öppnade: ProxyPass/api/https://127.0.0.1:5000/api/ProxyPassReverse/api/https://127.0.0.1:5000/api/

Du kan titta på bilden som bifogas för ett exempel.

Steg 4: Konfigurera frontend

Innan vi överför våra filer måste vi göra något innan vi kan börja överföra våra frontend -filer. Öppna kommandotolken med SSH -anslutningen du gjorde tidigare och använd kommandot nedan för att växla till rotanvändaren i vår RaspberryPi: "sudo su -"

Efter detta kan vi ändra lösenordet för vår rotanvändare med följande kommando: "passwd" Detta kommer att be dig att mata in ett nytt lösenord, efter att du har gjort detta kan du växla tillbaka till ditt FTP -program och logga in med dina rotuppgifter:

IP: 169.254.10.1 Användare: rootPassword:

Ladda ner rar -filen underifrån och avlägsna den i en tillfällig mapp, du kan flytta dessa filer till din RaspberryPi till följande katalog/var/www/html/, efter att du har gjort det kan du besöka frontend på http:/ /169.254.10.1, du kan inte interagera ännu eftersom backend inte körs ännu, jag visar dig senare i den här guiden hur du gör detta.

Steg 5: Importera databasen för vårt projekt

Importera databasen för vårt projekt
Importera databasen för vårt projekt
Importera databasen för vårt projekt
Importera databasen för vårt projekt

Öppna ditt favoritprogram för MySQL -serverhantering och anslut till din Raspberry Pi med de uppgifter som vi skapade i steg 2.

Ladda ner databasdumpen nedanifrån och importera den som du normalt skulle göra, MySQL -arbetsbänk skulle gå till Arkiv> Öppna SQL -skript och välj databasdumpen du laddade ner. Tryck sedan på CTRL + SKIFT + ENTER och SQL -skriptet ska köras och strukturen för databasen ska skapas.

Jag lade till de referenser som jag använde för min RaspberryPi som ett exempel nedan samt flera bilder av databasstrukturen, du kan ta en titt på den och försöka få en allmän uppfattning om hur allt fungerar.

Steg 6: Starta vårt projekt

Startar vårt projekt
Startar vårt projekt
Startar vårt projekt
Startar vårt projekt

Innan vi kan starta vårt projekt måste vi ändra databasuppgifterna i filen config.py, om du följde instruktionerna exakt som den här guiden sa kan du hitta dessa under /home/pi/Documents/Backend/src/config.py här måste du ändra autentiseringsuppgifterna för variabeln db_config för att matcha dem vi skapade tidigare för vår databas. Jag har lagt till ett exempel på vad du ser i den här filen nedan.

Efter det kommer vi att lägga till en.service -fil, den här filen kommer att se till att vårt projekt startar när RaspberryPi startar, se till att du ändrar katalogen på rätt sätt där du installerade backend -filerna. Använd följande kommando för att skapa servicefilen: sudo nano /etc/systemd/system/dispenser.service Detta skapar en servicefil och kopierar in nedanstående kod i den här filen.

[Enhet] Beskrivning = Water DispenserAfter = mysql.service

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

[Installera] WantedBy = multi-user.target

Ändra raden där det står /home/pi/Documents/Backend/index.py till där du installerade dina backend -filer, om du inte gör detta korrekt startas inte projektet korrekt! Jag lägger till en exempelfil nedan.

När du har gjort det och lämnat textredigeraren kan vi aktivera tjänsten med följande kommandon:- sudo systemctl daemon-reload- sudo systemctl aktivera dispenser- sudo systemctl start dispenser

Och som extra kan vi köra: sudo systemctl status dispenser Detta visar lite information om vår tjänst, om den är aktiv eller inte, …

Steg 7: Fallet

Fallet
Fallet
Fallet
Fallet
Fallet
Fallet
Fallet
Fallet

Grattis vi är nästan där, jag lägger till några bilder som exakt visar de mått jag använde för mitt projekt, jag använde MDF -plattor med 18 mm tjocklek, du kan välja en annan tjocklek. Mitt hölje kan användas som en riktlinje för att designa ditt eller så kan du återskapa det jag gjorde. (Om du använder en annan tjocklek av MDF kan mina ritningar inte längre göra min design, se till att anpassa den!) Panelerna jag gjorde:- 2 paneler på 32 cm x 42 cm (sidopaneler)- 1 panel på 24 cm med 32 cm (bottenplatta)- 2 paneler på 16 cm x 24 cm (frontplatta där LCD stannar och angränsande platta)- 1 panel på 28 cm x 24 cm (mittplatta sett framifrån)- 1 panel på 30 cm på 24 cm (topplatta)

Steg 8: Beundra den slutliga produkten

Beundra den slutliga produkten
Beundra den slutliga produkten
Beundra den slutliga produkten
Beundra den slutliga produkten

Du har nått slutet och har nu förhoppningsvis lyckats göra det hela till verklighet. Om du bara är en förbipasserande som läser igenom, är du också välkommen, jag tackar dig för att du läste till det sista steget!

Jag spenderade mycket blod, svett och tårar i detta projekt så jag skulle uppskatta det om du lämnade en kommentar, all kritik mot att förbättra det är välkommet!

Steg 9: Problemen

Jag skulle sätta projektet i sitt nuvarande tillstånd som en fungerande prototyp som kan se mycket fler förbättringar.

Backendens kodbas är strukturerad på ett sådant sätt att en master -slavrelation perfekt kan skapas där en fontän skulle fungera som huvudfronten och alla andra fontäner skulle driva data och förändringar över masterns REST -api. Det finns också rester av ett API -token -system i koden eftersom detta var tänkt att implementeras men klippas senare på grund av tidsbegränsningar.

Jag har laddat upp min kod till min Gitlab-server och där kan du titta på koden som helhet:

Rekommenderad: