Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Tilslutning af al elektronik
- Trin 2: Opsætning af Raspberry Pi
- Trin 3: Oprettelse af databasen
- Trin 4: Opsætning af backend
- Trin 5: Opsætning af frontend
- Trin 6: Oprettelse af kabinettet
Video: Automatisk vanddispenser til sporing af forbrug: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Hej!
For et par måneder siden tænkte jeg på mit værelse om, hvilket projekt jeg ville lave til en skoleopgave. Jeg ville lave noget, der passede mig, og som ville gavne mig i fremtiden. Pludselig kom min mor ind i lokalet og begyndte at klage over ikke at have drukket nok vand. Jeg fik straks en epifani. Ideen kom til mig om at lave en automatisk vanddispenser (som i biografen), der sporer dit vandforbrug dagligt.
Med en Raspberry Pi, et par sensorer, en pumpe og lidt viden, forsøgte jeg at gøre dette så godt som muligt.
I slutningen af alle trin har du en fungerende vanddispenser, der fylder din vandflaske, og som forbinder og interagerer med din Raspberry Pi. Ikke alene vil du være i stand til at spore dit vandforbrug på basis af en procentdel, men du har også mulighed for at se temperaturen og vandstanden i din vandbeholder. Endelig kan du kontrollere din statistik. Hvis dette lyder interessant for dig, skal du tjekke det ud og prøve det selv!
GitHub -depotet:
Forbrugsvarer
Mikrokontrollere
Hindbær Pi 4
Sensorer og moduler
Jeg brugte 4 sensorer:
2xHC-SR04Ultrasonic sensor
Ultralydssensorer måler afstand ved hjælp af ultralydsbølger. Sensorhovedet udsender en ultralydsbølge og modtager den reflekterede bølge tilbage fra målet. Ultralydssensorer måler afstanden til målet ved at måle tiden mellem emission og modtagelse. Jeg brugte to af dem til at kontrollere, om der er en flaske i nærheden og til at måle afstanden til vandet i tanken.
Datablad
1x DS18B20 temperatursensor
DS18B20 er en 1-leder programmerbar temperatursensor fra maksimal integreret. Det bruges meget til at måle temperaturen i hårde miljøer som i kemiske opløsninger, miner eller jord osv. Jeg brugte det til at måle vandtankens vandtemperatur.
Datablad
1x RC522 RFID -modul
RC522 er et 13,56MHz RFID -modul, der er baseret på MFRC522 -controlleren fra NXP -halvledere. Modulet kan understøtte I2C, SPI og UART og leveres normalt med et RFID -kort og nøglefob. Det bruges almindeligt i tilstedeværelsessystemer og andre personer/objektidentifikationsapplikationer. I dette projekt bruges det til et identifikations-/login -system.
Datablad
Og 2 aktuatorer:
1x peristaltisk pumpe 12-24V
Jeg brugte en peristaltisk pumpe til at få vandet fra tanken til en vandflaske. De fleste pumper var for langsomme, så jeg gik efter en 24V -version, som jeg driver med en 24V -strømadapter.
1x LCD -skærm
LCD'et bruges til at vise IP -adressen og vigtige meddelelser. En flydende krystaldisplay (LCD) er en fladskærm eller anden elektronisk moduleret optisk enhed, der bruger lysmodulerende egenskaber for flydende krystaller kombineret med polarisatorer.
Datablad
Kabinet
Apropos kabinettet lavede jeg en DIY med forsyninger fra et hjemmedepot (i mit tilfælde Brico i Belgien). Jeg brugte krydsfiner, som jeg skar til den rigtige størrelse. Jeg vil tale om, hvordan jeg fremførte min sag i et yderligere trin, men her er de ting, du skal bruge:
- 3x krydsfiner planker
- 1x Lille tragt
- 1x Vandtank (du kan vælge hvilket beløb du vil have, jeg gik til 10L)
- 1x Drypbakke
Du kan finde alle materialer og priser i den vedlagte stykliste.
Trin 1: Tilslutning af al elektronik
Nu hvor vi har opsummeret al elektronikken, er det tid til at forbinde dem. Jeg lavede to Fritzing -kredsløb, et brødbræt og et skematisk, for at vise dig hvordan og hvor al elektronik skal tilsluttes. Du kan finde downloadlinket til Fritzing her: https://fritzing.org/download/. Som nævnt før brugte jeg en Raspberry Pi og tilsluttede en RFID -scanner, to ultralydssensorer, en temperatursensor, en LCD og en peristaltisk pumpe til vandet.
Jeg vedhæftede de to kredsløb i en PDF, hvis du vil se det nærmere.
Trin 2: Opsætning af Raspberry Pi
Vi vil bruge vores Raspberry Pi til at køre og kontrollere alt: backend, frontend og database.
En Raspberry Pi kører ikke automatisk. Vi bliver nødt til at gå igennem nogle trin for at begynde at bruge det.
Trin 1: Raspbian
Hvis du bruger en helt ny Raspberry Pi, skal du bruge raspbian. Downloadlinket og vejledningen findes her.
Trin 2: Skrivning af billedet til SD
Nu hvor du har dit Raspbian -billede, skal du bruge en billedskrivningssoftware (jeg anbefaler win32diskimager) for at skrive billedfilen til SD -kortet. Den fulde vejledning kan findes her.
Trin 3: Log ind på Raspberry Pi
Åbn "Powershell", og skriv "ssh [email protected]". Hvis alt går rigtigt, vil de bede dig om en adgangskode (standardadgangskode er altid hindbær). Normalt skulle dette logge dig på Raspberry Pi. Nu skal vi foretage nogle ændringer i vores indstillinger. Skriv sudo raspi-config i terminalen, og tryk på enter. Naviger til lokaliseringsindstillinger> skift tidszone, og indstil den til din tidszone. Du bør også ændre dit wi-fi-land til din egen placering. Gå endelig til grænsefladeindstillinger og aktiver SPI, I2C og 1-wire. Dette vil være vigtigt for at bruge sensorerne korrekt.
Trin 4: Opsætning af internetforbindelse
Vi bruger et WiFi -netværk. Du kan tilføje dit hjemmenetværk via:
wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Du skal genstarte din Pi for at oprette forbindelse. For at kontrollere, om det fungerede, kan du bruge ifconfig til at kontrollere, om der er en IP -adresse.
Trin 5: Opsætning af webserveren og databasen
Først er det bedst at opdatere og opgradere systemet med følgende kommandosekvens:
- sudo apt dist-upgrade --auto-remove -y
- sudo apt opgradering
- sudo apt opdatering
- sudo apt autoremove
Når dette er gjort, skal vi bruge følgende pakker til vores webserver og database:
Apache
sudo apt installere apache2 -y
PHP
sudo apt installer php
sudo apt installer phpMyAdmin -y
Glem ikke at angive en sikker MySQL -adgangskode, når den beder om at angive en adgangskode.
MariaDB
sudo apt installer mariadb-server mariadb-klient -y
sudo apt installer php -mysql -y
sudo systemctl genstart apache2.service
Trin 6: Installation af Python -biblioteker
Til backend har vi brug for nogle biblioteker til Python. Vi installerer disse ved hjælp af pip3, fordi vi bruger python3.
pip3 installer mysql-connector-python
pip3 installer kolbe-socketio
pip3 installer kolbe-kors
pip3 installer gevent
pip3 installer gevent-websocket
sudo apt installere python3 -mysql.connector -y
pip3 installer mfrc522! (vi skal bruge dette for at bruge RFID -scanneren)
Trin 7: Forberedelse af Visual Studio Code
For at køre koden anbefaler jeg at bruge Visual Studio Code til at forbinde din Raspberry Pi til. Downloadlinket til installation af VSC findes her.
Hvis du ikke har fjernudvikling installeret ved hjælp af SSH endnu, kan du finde trinene til at gøre dette her.
Trin 3: Oprettelse af databasen
Vi gemmer alle vores sensordata og brugerdata i en database.
Min database består af 5 tabeller:
Enhed
Table Device har et DeviceID, der refererer til selve enheden. Enhedsnavnet angiver enhedens navn, i dette tilfælde ultralydssensor, temperatursensor, … DeviceType angiver enhedstypen (sensor eller aktuator).
Historie
Tabelhistorik indeholder al sensorhistorik, sammen med dato (HistoryDate) blev historikken tilføjet og værdien af øjeblikket i historikken. Det har også to udenlandske nøgler:
- DeviceID, for at linke en bestemt log til en enhed
- UserID, for at linke en bestemt bruger til en log (det er fordi vi gør brug af et RFID, og vi vil føje historikloggen til en bestemt bruger)
Bruger
Tabelbruger bruges til at oprette et brugerloginsystem med RFID -scanneren. Det består af et kaldenavn, fornavn, efternavn, adgangskode og RFID (dette er RFID -nummeret på et mærke). Hver bruger er knyttet til en beholder (vandtank) og bærer også ContainerID som en fremmed nøgle.
Beholder
Bordbeholder består af alle de forskellige beholdere. Det har et ID, en ContainerLocation (dette kan være en virksomhed, et hjem eller andet). Endelig har den et MaxLevel, der står for den maksimale volumen, containeren har.
Indstillinger
Tabelindstillinger har et SettingsID og sporer hver brugers DailyGoal + datoen, som DailyGoal blev tilføjet af brugeren. Dette forklarer Foreign ID User ID.
Et dump af databasen kan findes i mit GitHub -lager under Database.
Trin 4: Opsætning af backend
Der er ikke et projekt uden en fungerende backend.
Backend består af 4 forskellige ting:
hjælpere
Hjælperne er alle de klasser, der bruges til de forskellige sensorer og aktuatorer. Der er en hjælper til temperatursensoren (DS18B20), til at ultralydssensorerne (HCSR05) kan måle afstanden og til at LCD'en kan skrive beskeder til skærmen.
depoter
I mappen repositories finder du 2 Python -filer:
- Database.py, som er en hjælper til at få rækker ud af din database. Det gør det lettere at eksekvere og læse databasen.
- DataRepository.py, som indeholder alle de SQL -forespørgsler, der bruges i hovedkoden (app.py). De bruges til at hente, opdatere eller slette data fra databasen.
app.py
Dette er projektets vigtigste backend -kode. Det gør opsætningen ved at definere alle stifter og tilstande og indeholder koden til at få pumpen til at fungere, få temperaturen, få brugeren og så videre. Det indeholder også de ruter, der bruges til at hente data fra databasen og alle socketio.on'erne. For hver HTML -side er en anden socketio.on for at sikre, at hver funktion fungerer på det korrekte tidspunkt.
config.py
Vi har en fil tilbage: config.py. Dette er filen med konfigurationsmulighederne for at oprette forbindelse til din database. Glem ikke at indstille din database -legitimationsoplysninger.
Backend kan findes i mit lager under Backend.
Trin 5: Opsætning af frontend
Til Frontend startede jeg med at lave et design af, hvordan min webserver skulle se ud i AdobeXD. Jeg gjorde brug af farverne i mit logo, som er orange og 2 forskellige nuancer af blå. Jeg forsøgte at holde designet så enkelt som muligt og skabte en vanddråbe, der viser procentdelen i hvilket omfang du har nået dit mål for dagen.
I mit GitHub -lager finder du mit Frontend under Kode> Frontend. Det er vigtigt, at du indsætter dette i din /var /html -mappe på din Raspberry Pi for at gøre det tilgængeligt fra webserveren.
Den består af et par HTML -filer, som fører til de forskellige sider. Du finder også min screen.css med al den CSS, du skal bruge for at få det til at ligne mit projekt. Endelig har du forskellige JavaScript -filer under scripts. Disse scripts kommunikerer med min backend for at vise data fra min database eller backend.
Backend kan findes i mit lager under Frontend.
Trin 6: Oprettelse af kabinettet
Hvis vi taler om min sag, er der to hoveddele:
Udvendigt hus
Jeg byggede sagen fra bunden. Jeg brugte krydsfinerplanker og savede dem i de korrekte størrelser. Jeg skruede alle plankerne sammen og borede huller til LCD'en, knappen, ultralydssensoren for at opdage, om der er en flaske til stede og tragten til at fordele vandet. Jeg opdelte min sag i forskellige sektioner for at holde vandet og elektronikken adskilt, og jeg brugte en kabelbakke til at beskytte kablerne mod vandlækage. I den vedhæftede video kan du se de fleste aspekter af mit kabinet og hvordan jeg lavede det. Jeg har også 3D trykt en knap, der er limet til en normal knap. Til sidst brugte jeg en drypbakke til at opsamle alt det spildte vand. Jeg brugte også hængsler til at kunne åbne og lukke et sidepanel for at se på min elektronik. Du kan altid bruge en brugt dispenser, eller du kan også bruge andre materialer.
For de nøjagtige målinger af min byggede vedhæftede jeg en PDF med alle størrelser på de plader, der blev brugt i kassen.
Vandtank
Vandtanken var ikke let. Jeg fik en vandtank med et hul i bunden, så jeg måtte tape den for at stoppe lækagen. Du skal bruge fire huller: et til temperatursensoren, et til slangen til din pumpe. en til slangen til genopfyldning af tanken og en til ultralydssensoren. Til denne sidste har jeg 3D printet en sag til den, som du kan finde her. Dette giver sensoren mere beskyttelse mod vand. Jeg borede derefter et rektangel i toppen af tanken for at hvile sensoren på.
Anbefalede:
Elektrisk forbrug og miljøovervågning via Sigfox: 8 trin
Elektrisk forbrug og miljøovervågning via Sigfox: Beskrivelse Dette projekt viser dig, hvordan du får et rums elektriske forbrug til en trefaset strømfordeling og derefter sender det til en server ved hjælp af Sigfox-netværk hvert 10. minut. Hvordan måler jeg effekten? Vi har tre nuværende klemmer fra en
Smart rygsæk med GPS -sporing og automatiske lys: 15 trin
Smart rygsæk med GPS -sporing og automatiske lys: I denne instruktive vil vi lave en smart rygsæk, der kan spore vores position, hastighed og har automatiserede lys, der kan holde os sikre om natten. Jeg bruger 2 sensorer til at registrere, om det er på dine skuldre for at sikre, at det ikke slukker, når det ikke skal
SPORING AF AUTOMATISK LYSKILDE MED ARDUINO UNO R3: 5 trin
AUTOMATISK LYSKILDE SPORING MED ARDUINO UNO R3: I denne lektion vil vi bruge en servomotor, en fotoresistor og en pull-down modstand til at samle et automatisk sporing af lyskildesystem
Fodpedal kontrolleret 5 gallon vanddispenser: 3 trin
Foot Pedal Controlled 5 Gallon Water Dispenser: I nogle lande som hvor jeg bor (Tyrkiet), er vi generede med håndpumperne til at levere vand ud af en beholder. Nogle håndpumper er besværlige, og små børn har et problem med at levere den nødvendige strøm. Så jeg tænkte på at bruge en fod
Programmer din pc til automatisk at slukke ved at tildele, hvilken tid du vil have den til at gøre det: 4 trin
Programmer din pc til automatisk at slukke ved at tildele, hvilken tid du vil have det til at gøre det: hej, det er endnu en instruktionsbog taget fra mit daglige liv … sidste gang skulle jeg downloade masser af software til min pc, og jeg måtte lade den downloade natten over, jeg ønskede ikke at holde min pc tændt hele natten efter afslutningen af downloads og på s