Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Koble til all elektronikk
- Trinn 2: Konfigurere Raspberry Pi
- Trinn 3: Opprette databasen
- Trinn 4: Konfigurere backend
- Trinn 5: Sette opp frontend
- Trinn 6: Opprette kabinettet
Video: Automatisk vanndispenser for sporing av forbruk: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Hei der!
For et par måneder siden tenkte jeg på rommet mitt og tenkte på hva slags prosjekt jeg ville lage for en skoleoppgave. Jeg ønsket å lage noe som passet meg og som ville komme meg til gode i fremtiden. Plutselig kom mamma inn i rommet og begynte å klage på at hun ikke drakk nok vann. Jeg fikk en åpenbaring umiddelbart. Ideen kom til meg om å lage en automatisk vanndispenser (som i kinoen) som sporer vannforbruket ditt daglig.
Med en Raspberry Pi, noen få sensorer, en pumpe og lite kunnskap, prøvde jeg å gjøre dette så godt som mulig.
På slutten av alle trinnene vil du ha en fungerende vanndispenser som fyller vannflasken din og som forbinder og samhandler med din Raspberry Pi. Ikke bare vil du kunne spore vannforbruket ditt på grunnlag av en prosentandel, men du har også muligheten til å se temperaturen og vannivået til vannbeholderen. Til slutt kan du sjekke statistikken din. Hvis dette høres interessant ut for deg, må du sjekke det ut og prøve det selv!
GitHub -depotet:
Rekvisita
Mikrokontrollere
Bringebær Pi 4
Sensorer og moduler
Jeg brukte 4 sensorer:
2xHC-SR04 Ultralydsensor
Ultralydsensorer måler avstand ved hjelp av ultralydbølger. Sensorhodet avgir en ultralydbølge og mottar bølgen reflektert tilbake fra målet. Ultralydsensorer måler avstanden til målet ved å måle tiden mellom utslipp og mottak. Jeg brukte to av dem for å sjekke om det er en flaske i nærheten og for å måle avstanden til vannet i tanken.
Dataark
1x DS18B20 temperatursensor
DS18B20 er en 1-leder programmerbar temperatursensor fra maksimal integrert. Det er mye brukt til å måle temperaturen i harde miljøer som i kjemiske løsninger, gruver eller jord osv. Jeg brukte den til å måle vanntemperaturen i vanntanken.
Dataark
1x RC522 RFID -modul
RC522 er en 13,56MHz RFID -modul som er basert på MFRC522 -kontrolleren fra NXP -halvledere. Modulen kan støtte I2C, SPI og UART og leveres vanligvis med et RFID -kort og nøkkelring. Det brukes ofte i tilstedeværelsessystemer og andre applikasjoner for identifikasjon av personer/objekter. I dette prosjektet brukes det til et identifikasjons-/påloggingssystem.
Dataark
Og 2 aktuatorer:
1x peristaltisk pumpe 12-24V
Jeg brukte en peristaltisk pumpe for å få vannet fra tanken til en vannflaske. De fleste pumper var for trege, så jeg valgte en 24V -versjon som jeg driver med en 24V strømadapter.
1x LCD -skjerm
LCD -skjermen brukes til å vise IP -adressen og viktige meldinger. En flytende krystallskjerm (LCD) er en flatskjerm eller annen elektronisk modulert optisk enhet som bruker lysmodulerende egenskaper til flytende krystaller kombinert med polarisatorer.
Dataark
Hylster
Apropos kabinettet, jeg gjorde en DIY med forsyninger fra et hjemmedepot (i mitt tilfelle Brico i Belgia). Jeg brukte kryssfiner som jeg kuttet til riktig størrelse. Jeg vil snakke om hvordan jeg gjorde saken min i et ytterligere trinn, men her er tingene du trenger:
- 3x kryssfiner planker
- 1x liten trakt
- 1x vanntank (du kan velge hvilket beløp du vil ha, jeg gikk for 10L)
- 1x Dryppbrett
Du finner alt av materialer og priser i vedlagte styklisten.
Trinn 1: Koble til all elektronikk
Nå som vi har oppsummert all elektronikken, er det på tide å koble dem til. Jeg laget to Fritzing -kretser, en brødbrett og en skjematisk, for å vise deg hvordan og hvor all elektronikk skal kobles til. Du finner nedlastingskoblingen til Fritzing her: https://fritzing.org/download/. Som nevnt tidligere brukte jeg en Raspberry Pi og koblet til en RFID -skanner, to ultralydsensorer, en temperatursensor, en LCD og en peristaltisk pumpe for vannet.
Jeg festet de to kretsene i en PDF, hvis du vil se nærmere på den.
Trinn 2: Konfigurere Raspberry Pi
Vi vil bruke Raspberry Pi til å kjøre og kontrollere alt: backend, frontend og database.
En Raspberry Pi kjører ikke automatisk. Vi må gå gjennom noen trinn for å begynne å bruke den.
Trinn 1: Raspbian
Hvis du bruker en helt ny Raspberry Pi, trenger du raspbian. Nedlastingskoblingen og opplæringen finner du her.
Trinn 2: Skrive bildet til SD
Nå som du har ditt Raspbian -bilde, trenger du en programvare for å skrive bilder (jeg anbefaler win32diskimager) for å skrive bildefilen til SD -kortet. Hele opplæringen finner du her.
Trinn 3: Logge på Raspberry Pi
Åpne "Powershell" og skriv "ssh [email protected]". Hvis alt går som det skal, vil de be deg om et passord (standardpassord er alltid bringebær). Normalt bør dette logge deg på Raspberry Pi. Nå må vi gjøre noen endringer i innstillingene våre. Skriv sudo raspi-config i terminalen og trykk enter. Naviger til lokaliseringsalternativer> endre tidssone og sett den til din tidssone. Du bør også bytte Wi-Fi-land til din egen posisjon. Til slutt går du til grensesnittalternativer og aktiverer SPI, I2C og 1-wire. Dette vil være viktig for å bruke sensorene riktig.
Trinn 4: Konfigurere Internett -tilkoblingen
Vi bruker et WiFi -nettverk. Du kan legge til hjemmenettverket ditt via:
wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Du må starte Pi på nytt for å koble til. For å sjekke om det fungerte, kan du bruke ifconfig for å sjekke om det er en IP -adresse.
Trinn 5: Sette opp webserveren og databasen
Først er det best å oppdatere og oppgradere systemet med følgende kommandosekvens:
- sudo apt dist-upgrade --auto-remove -y
- sudo apt oppgradering
- sudo apt oppdatering
- sudo apt autoremove
Når dette er gjort, trenger vi følgende pakker for vår webserver og database:
Apache
sudo apt installere apache2 -y
PHP
sudo apt installer php
sudo apt installer phpMyAdmin -y
Ikke glem å angi et sikkert MySQL -passord når det ber om å angi et passord.
MariaDB
sudo apt installer mariadb-server mariadb-klient -y
sudo apt installer php -mysql -y
sudo systemctl starter apache2.service på nytt
Trinn 6: Installere Python -biblioteker
For backend trenger vi noen biblioteker for Python. Vi installerer disse ved hjelp av pip3, fordi vi bruker python3.
pip3 installer mysql-connector-python
pip3 installere flask-socketio
pip3 installere kolbe-kors
pip3 installer gevent
pip3 installer gevent-websocket
sudo apt installer python3 -mysql.connector -y
pip3 installer mfrc522! (vi trenger dette for å bruke RFID -skanneren)
Trinn 7: Forbereder Visual Studio Code
For å kjøre koden anbefaler jeg å bruke Visual Studio Code for å koble Raspberry Pi til. Nedlastingskoblingen for å installere VSC finner du her.
Hvis du ikke har fjernutvikling installert med SSH ennå, kan du finne fremgangsmåten for å gjøre dette her.
Trinn 3: Opprette databasen
Vi lagrer alle våre sensordata og brukerdata i en database.
Min database består av 5 tabeller:
Enhet
Table Device har en DeviceID, som refererer til selve enheten. Enhetsnavnet gir navnet på enheten, i dette tilfellet ultralydssensor, temperatursensor, … DeviceType angir enhetstypen (sensor eller aktuator).
Historie
Tabellhistorikk inneholder all sensorhistorikk, sammen med dato (HistoryDate) ble historien lagt til og verdien av øyeblikket i historien. Den har også to utenlandske nøkler:
- DeviceID, for å koble en bestemt logg til en enhet
- UserID, for å koble en bestemt bruker til en logg (dette er fordi vi bruker en RFID, og vi ønsker å legge historikkloggen til en bestemt bruker)
Bruker
Tabellbruker brukes til å opprette et brukerpåloggingssystem med RFID -skanneren. Den består av et kallenavn, fornavn, etternavn, passord og RFID (dette er RFID -nummeret til en kode). Hver bruker er koblet til en beholder (vanntank) og har også ContainerID som en fremmed nøkkel.
Container
Bordbeholder består av alle de forskjellige beholderne. Den har en ID, en ContainerLocation (dette kan være en bedrift, et hjem eller noe annet). Til slutt har den et MaxLevel som står for det maksimale volumet beholderen har.
Innstillinger
Tabellinnstillinger har en SettingsID, og sporer DailyGoal for hver bruker + datoen DailyGoal ble lagt til av brukeren. Dette forklarer Foreign Key UserID.
En dump av databasen finner du i GitHub -depotet mitt under Database.
Trinn 4: Konfigurere backend
Det er ikke et prosjekt uten en fungerende backend.
Backend består av 4 forskjellige ting:
hjelpere
Hjelperne er alle klassene som brukes for de forskjellige sensorene og aktuatorene. Det er en hjelper for temperatursensoren (DS18B20), for at ultralydsensorene (HCSR05) kan måle avstanden og at LCD -en kan skrive meldinger til skjermen.
depoter
I arkivmappen finner du 2 Python -filer:
- Database.py som er en hjelper for å få rader ut av databasen din. Det gjør det lettere å kjøre og lese databasen.
- DataRepository.py som inneholder alle SQL -spørringene som blir brukt i hovedkoden (app.py). De brukes til å hente, oppdatere eller slette data fra databasen.
app.py
Dette er prosjektets viktigste backend -kode. Det gjør oppsettet ved å definere alle pinnene og modusene og inneholder koden for å få pumpen til å fungere, få temperaturen, få brukeren og så videre. Den inneholder også rutene som brukes til å hente data fra databasen og alle socketio.on -er. For hver HTML -side er en annen socketio.on for å sikre at hver funksjon fungerer til riktig tid.
config.py
Vi har en fil igjen: config.py. Dette er filen med konfigurasjonsalternativene for å koble til databasen din. Ikke glem å angi databasens legitimasjon.
Backend finner du i depotet mitt under Backend.
Trinn 5: Sette opp frontend
For Frontend begynte jeg med å lage et design av hvordan webserveren min skulle se ut i AdobeXD. Jeg brukte fargene i logoen min, som er oransje og 2 forskjellige blå nyanser. Jeg prøvde å holde designet så enkelt som mulig og laget en vanndråpe som viser prosentandelen i hvilken grad du har oppnådd dagens mål.
I mitt GitHub -depot finner du frontenden min under kode> frontend. Det er viktig at du limer dette inn i /var /html -mappen til Raspberry Pi for å gjøre det tilgjengelig fra webserveren.
Den består av et par HTML -filer, som fører til de forskjellige sidene. Du finner også skjermen min. Css med all CSS du trenger for å få det til å se ut som prosjektet mitt. Til slutt vil du ha forskjellige JavaScript -filer under skript. Disse skriptene kommuniserer med min backend for å vise data fra databasen eller backend.
Backend finner du i depotet mitt under Frontend.
Trinn 6: Opprette kabinettet
Hvis vi snakker om saken min, er det to hoveddeler:
Utvendig foringsrør
Jeg bygde saken fra bunnen av. Jeg brukte plater av kryssfiner og saget dem i riktige størrelser. Jeg skrudde sammen alle planker og boret hull for LCD -skjermen, knappen, ultralydsensoren for å oppdage om det er en flaske tilstede og trakten for å fordele vannet. Jeg delte saken inn i forskjellige seksjoner for å holde vannet og elektronikken atskilt, og jeg brukte en kabelbrett for å beskytte kablene mot vannlekkasje. I den vedlagte videoen kan du se de fleste aspektene av huset mitt og hvordan jeg gjorde det. Jeg har også trykket en knapp i 3D, som er limt til en vanlig knapp. Til slutt brukte jeg en dryppskål for å samle opp alt sølt vann. Jeg brukte også hengsler for å kunne åpne og lukke et sidepanel for å se på elektronikken min. Du kan alltid bruke en brukt dispenser, eller du kan også bruke andre materialer.
For de nøyaktige målingene av min bygde, la jeg ved en PDF med alle størrelsene på platene som ble brukt i saken.
Vanntank
Vanntanken var ikke en lett jobb. Jeg fikk en vanntank med et hull på bunnen, så jeg måtte tape den for å stoppe lekkasjen. Du trenger fire hull: ett for temperatursensoren, ett for pumpeslangen. en for slangen for å fylle tanken og en for ultralydssensoren. For denne siste trykte jeg 3D -etui for den, som du finner her. Dette gir sensoren mer beskyttelse mot vann. Jeg boret deretter et rektangel i toppen av tanken, for å hvile sensoren på.
Anbefalt:
Elektrisk forbruk og miljøovervåking via Sigfox: 8 trinn
Elektrisk forbruk og miljøovervåking via Sigfox: Beskrivelse Dette prosjektet viser deg hvordan du får strømforbruket til et rom på en trefaset strømfordeling og deretter sender det til en server ved hjelp av Sigfox-nettverk hvert 10. minutt. Hvordan måle kraften? Vi har tre nåværende klemmer fra en
Smart ryggsekk med GPS -sporing og automatiske lys: 15 trinn
Smart ryggsekk med GPS -sporing og automatiske lys: I denne instruksen lager vi en smart ryggsekk som kan spore posisjonen vår, hastigheten og har automatiserte lys som kan holde oss trygge om natten. Jeg bruker to sensorer til å oppdage om det er på skuldrene dine for å sikre at det ikke går av når det ikke trenger å
Kvinners sikkerhetsenhet med GPS -sporing og varsler ved bruk av Arduino: 6 trinn
Kvinners sikkerhetsenhet med GPS -sporing og varsler ved bruk av Arduino: Med all teknologien tilgjengelig for oss i nyere tid, er det ikke vanskelig å bygge en sikkerhetsenhet for kvinner som ikke bare vil generere en nødalarm, men også sende en melding til venner, familie , eller bekymret person. Her skal vi bygge et band
Automatisk sporing av lyskilder: 5 trinn
Automatisk lyskildesporing: I denne leksjonen vil vi bruke en servomotor, en fotoresistor og en nedtrekksmotstand for å montere et automatisk sporing av lyskildesystem
SPORING AV AUTOMATISK LYSKILDE MED ARDUINO UNO R3: 5 trinn
AUTOMATISK LYSKILDE SPORING MED ARDUINO UNO R3: I denne leksjonen vil vi bruke en servomotor, en fotoresistor og en nedtrekksmotstand for å montere et automatisk sporing av lyskildesystem