Innholdsfortegnelse:

Automatisk vanndispenser for sporing av forbruk: 6 trinn
Automatisk vanndispenser for sporing av forbruk: 6 trinn

Video: Automatisk vanndispenser for sporing av forbruk: 6 trinn

Video: Automatisk vanndispenser for sporing av forbruk: 6 trinn
Video: Что будет если купить КИТАЙЦА? 23 СЮРПРИЗА в КАБИНЕ DONGFENG 520 2024, November
Anonim
Automatisk vanndispenser for å spore forbruk
Automatisk vanndispenser for å spore forbruk
Automatisk vanndispenser for å spore forbruk
Automatisk vanndispenser for å spore forbruk

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

Koble til all elektronikk
Koble til all elektronikk
Koble til all elektronikk
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:

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt oppgradering
  3. sudo apt oppdatering
  4. 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

Opprette databasen
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

Sette opp frontenden
Sette opp frontenden
Sette opp frontenden
Sette opp frontenden

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

Opprette kabinettet
Opprette kabinettet
Opprette kabinettet
Opprette kabinettet
Opprette kabinettet
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: