Indholdsfortegnelse:

Automatisk vanddispenser til sporing af forbrug: 6 trin
Automatisk vanddispenser til sporing af forbrug: 6 trin

Video: Automatisk vanddispenser til sporing af forbrug: 6 trin

Video: Automatisk vanddispenser til sporing af forbrug: 6 trin
Video: SCP-119 Tidsmikrobølgeovn | objektklasse euklid | apparat / tidsmæssig scp 2024, Juli
Anonim
Automatisk vanddispenser til sporing af forbrug
Automatisk vanddispenser til sporing af forbrug
Automatisk vanddispenser til sporing af forbrug
Automatisk vanddispenser til sporing af forbrug

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

Tilslutning af al elektronik
Tilslutning af al elektronik
Tilslutning af al elektronik
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:

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

Oprettelse af databasen
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

Opsætning af frontend
Opsætning af frontend
Opsætning af frontend
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

Oprettelse af kabinettet
Oprettelse af kabinettet
Oprettelse af kabinettet
Oprettelse af kabinettet
Oprettelse af kabinettet
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: