Innehållsförteckning:

Automatisk vattendispenser för att spåra förbrukning: 6 steg
Automatisk vattendispenser för att spåra förbrukning: 6 steg

Video: Automatisk vattendispenser för att spåra förbrukning: 6 steg

Video: Automatisk vattendispenser för att spåra förbrukning: 6 steg
Video: Bärbara automatiska mini vattendispensrar Vattenpump Dispenser USB Laddningsflaska Trådlös elektrisk 2024, Juli
Anonim
Automatisk vattendispenser för att spåra förbrukning
Automatisk vattendispenser för att spåra förbrukning
Automatisk vattendispenser för att spåra förbrukning
Automatisk vattendispenser för att spåra förbrukning

Hallå där!

För ett par månader sedan tänkte jag i mitt rum på vilken typ av projekt jag ville göra för ett skoluppdrag. Jag ville göra något som passade mig och som skulle gynna mig i framtiden. Plötsligt kom min mamma in i rummet och började klaga på att hon inte drack tillräckligt med vatten. Jag fick genast en uppenbarelse. Idén kom till mig att göra en automatisk vattendispenser (som i biografen) som spårar din vattenförbrukning dagligen.

Med en Raspberry Pi, några sensorer, en pump och lite kunskap försökte jag göra detta så bra som möjligt.

I slutet av alla steg kommer du att ha en fungerande vattendispenser som fyller din vattenflaska och som ansluter och interagerar med din Raspberry Pi. Inte bara kommer du att kunna spåra din vattenförbrukning baserat på en procentsats, men du har också möjlighet att se temperaturen och vattennivån i din vattenbehållare. Slutligen kan du kontrollera din statistik. Om detta låter intressant för dig, var noga med att kolla in det och prova det själv!

GitHub -förvaret:

Tillbehör

Mikrokontroller

Hallon Pi 4

Sensorer och moduler

Jag använde 4 sensorer:

2xHC-SR04 Ultraljudssensor

Ultraljudssensorer mäter avstånd med hjälp av ultraljudsvågor. Sensorhuvudet avger en ultraljudsvåg och tar emot vågen som reflekteras tillbaka från målet. Ultraljudssensorer mäter avståndet till målet genom att mäta tiden mellan emission och mottagning. Jag använde två av dem för att kontrollera om det finns en flaska i närheten och för att mäta avståndet till vattnet i tanken.

Datablad

1x DS18B20 temperatursensor

DS18B20 är en 1-tråds programmerbar temperatursensor från maximalt integrerad. Det används ofta för att mäta temperaturen i hårda miljöer som i kemiska lösningar, gruvor eller jord etc. Jag använde det för att mäta vattentankens vattentemperatur.

Datablad

1x RC522 RFID -modul

RC522 är en 13,56MHz RFID -modul som är baserad på MFRC522 -styrenheten från NXP -halvledare. Modulen kan stödja I2C, SPI och UART och levereras normalt med ett RFID -kort och nyckelring. Det används vanligtvis i närvarosystem och andra personer/objektidentifieringsapplikationer. I detta projekt används det för ett identifierings-/inloggningssystem.

Datablad

Och 2 ställdon:

1x peristaltisk pump 12-24V

Jag använde en peristaltisk pump för att få vattnet från tanken till en vattenflaska. De flesta pumpar var för långsamma, så jag valde en 24V -version som jag driver med en 24V -nätadapter.

1x LCD -skärm

LCD -skärmen används för att visa IP -adressen och viktiga meddelanden. En flytande kristallskärm (LCD) är en plattskärm eller annan elektroniskt modulerad optisk enhet som använder de ljusmodulerande egenskaperna hos flytande kristaller i kombination med polarisatorer.

Datablad

Hölje

På tal om höljet gjorde jag en DIY med tillbehör från en hemdepå (i mitt fall Brico i Belgien). Jag använde plywood som jag klippte till rätt storlek. Jag kommer att prata om hur jag gjorde mitt ärende i ett ytterligare steg, men här är de saker du behöver:

  • 3x plywoodplankor
  • 1x liten tratt
  • 1x Vattentank (du kan välja vilken mängd du vill ha, jag gick för 10L)
  • 1x droppbricka

Du hittar allt material och priser i den bifogade stycklistan.

Steg 1: Anslut all elektronik

Ansluter all elektronik
Ansluter all elektronik
Ansluter all elektronik
Ansluter all elektronik

Nu när vi har sammanfattat all elektronik är det dags att ansluta dem. Jag gjorde två Fritzing -kretsar, en brödbräda och en schematisk, för att visa dig hur och var all elektronik ska anslutas. Du hittar nedladdningslänken till Fritzing här: https://fritzing.org/download/. Som nämnts tidigare använde jag en Raspberry Pi och kopplade en RFID -skanner, två ultraljudssensorer, en temperatursensor, en LCD och en peristaltisk pump för vattnet.

Jag bifogade de två kretsarna i en PDF, om du vill titta närmare på den.

Steg 2: Konfigurera Raspberry Pi

Vi kommer att använda vår Raspberry Pi för att köra och styra allt: backend, frontend och databas.

En Raspberry Pi körs inte automatiskt. Vi måste gå igenom några steg för att börja använda den.

Steg 1: Raspbian

Om du använder en helt ny Raspberry Pi behöver du raspbian. Nedladdningslänken och självstudien hittar du här.

Steg 2: Skriva bilden till SD

Nu när du har din Raspbian -bild behöver du ett program för bildskrivning (jag rekommenderar win32diskimager) för att skriva bildfilen till SD -kortet. Hela handledningen hittar du här.

Steg 3: Logga in på Raspberry Pi

Öppna "Powershell" och skriv "ssh [email protected]". Om allt går rätt ber de dig om ett lösenord (standardlösenordet är alltid hallon). Normalt borde detta logga in dig på Raspberry Pi. Nu måste vi göra några ändringar i våra inställningar. Skriv sudo raspi-config i terminalen och tryck på enter. Navigera till lokaliseringsalternativ> ändra tidszon och ställ in den till din tidszon. Du bör också ändra ditt wi-fi-land till din egen plats. Slutligen, gå till gränssnittsalternativ och aktivera SPI, I2C och 1-tråd. Detta kommer att vara viktigt för att använda sensorerna korrekt.

Steg 4: Konfigurera internetanslutningen

Vi kommer att använda ett WiFi -nätverk. Du kan lägga till ditt hemnätverk genom:

wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Du måste starta om din Pi för att ansluta. För att kontrollera om det fungerade kan du använda ifconfig för att kontrollera om det finns en IP -adress.

Steg 5: Konfigurera webbservern och databasen

Först är det bäst att uppdatera och uppgradera systemet med följande sekvens av kommandon:

  1. sudo apt dist-upgrade --auto-remove -y
  2. sudo apt uppgradering
  3. sudo apt uppdatering
  4. sudo apt autoremove

När detta är gjort behöver vi följande paket för vår webbserver och databas:

Apache

sudo apt installera apache2 -y

PHP

sudo apt installera php

sudo apt installera phpMyAdmin -y

Glöm inte att ställa in ett säkert MySQL -lösenord när det ber om att ställa in ett lösenord.

MariaDB

sudo apt installera mariadb-server mariadb-klient -y

sudo apt installera php -mysql -y

sudo systemctl starta om apache2.service

Steg 6: Installera Python -bibliotek

För backend behöver vi några bibliotek för Python. Vi installerar dessa med pip3, eftersom vi använder python3.

pip3 installera mysql-connector-python

pip3 installera flask-socketio

pip3 installera kolvkors

pip3 installera gevent

pip3 installera gevent-websocket

sudo apt installera python3 -mysql.connector -y

pip3 installera mfrc522! (vi behöver detta för att använda RFID -skannern)

Steg 7: Förbereda Visual Studio Code

För att köra koden rekommenderar jag att du använder Visual Studio Code för att ansluta din Raspberry Pi till. Nedladdningslänken för att installera VSC finns här.

Om du inte har fjärrutveckling installerad med SSH än kan du hitta stegen för att göra detta här.

Steg 3: Skapa databasen

Skapa databasen
Skapa databasen

Vi lagrar alla våra sensordata och användardata i en databas.

Min databas består av 5 tabeller:

Enhet

Table Device har ett DeviceID, som refererar till själva enheten. Enhetsnamnet anger enhetens namn, i detta fall ultraljudssensor, temperaturgivare, … DeviceType anger enhetstyp (sensor eller ställdon).

Historia

Tabellhistorik innehåller all sensorhistorik, tillsammans med datum (HistoryDate) historiken har lagts till och ögonblickets värde i historiken. Den har också två utländska nycklar:

  • DeviceID, för att länka en specifik logg till en enhet
  • UserID, för att länka en specifik användare till en logg (detta beror på att vi använder ett RFID och vi vill lägga till historikloggen till en specifik användare)

Användare

Tabellanvändare används för att skapa ett användarinloggningssystem med RFID -skannern. Den består av ett smeknamn, förnamn, efternamn, lösenord och RFID (detta är RFID -numret för en tagg). Varje användare är länkad till en behållare (vattentank) och bär också ContainerID som en främmande nyckel.

Behållare

Bordsbehållaren består av alla de olika behållarna. Den har ett ID, en ContainerLocation (detta kan vara ett företag, hem eller något annat). Slutligen har den en MaxLevel som står för den maximala volymen behållaren har.

inställningar

Tabellinställningar har ett SettingsID och spårar DailyGoal för varje användare + datumet DailyGoal lades till av användaren. Detta förklarar User ID för Foreign Key.

En dumpning av databasen finns i mitt GitHub -arkiv under databas.

Steg 4: Konfigurera backend

Det finns inget projekt utan en fungerande backend.

Backend består av 4 olika saker:

hjälpare

Hjälparna är alla klasser som används för de olika sensorerna och ställdonen. Det finns en hjälpare för temperatursensorn (DS18B20), för ultraljudssensorerna (HCSR05) för att kunna mäta avståndet och för att LCD -skärmen ska kunna skriva meddelanden till skärmen.

förvar

I mappen repositories hittar du 2 Python -filer:

  • Database.py som är en hjälpare för att få rader ur din databas. Det gör det lättare att köra och läsa databasen.
  • DataRepository.py som innehåller alla SQL -frågor som används i huvudkoden (app.py). De används för att hämta, uppdatera eller ta bort data från databasen.

app.py

Detta är projektets huvudsakliga backend -kod. Det gör installationen genom att definiera alla stift och lägen och innehåller koden för att få pumpen att fungera, få temperaturen, få användaren och så vidare. Den innehåller också de rutter som används för att hämta data från databasen och alla socketio.ons. För varje HTML -sida finns en annan socketio.on för att se till att varje funktion fungerar vid rätt tidpunkt.

config.py

Vi har en fil kvar: config.py. Det här är filen med konfigurationsalternativen för att ansluta till din databas. Glöm inte att ange dina databasuppgifter.

Backend kan hittas i mitt förråd under Backend.

Steg 5: Konfigurera frontend

Konfigurera frontend
Konfigurera frontend
Konfigurera frontend
Konfigurera frontend

För Frontend började jag med att göra en design av hur min webbserver ska se ut i AdobeXD. Jag använde färgerna i min logotyp, som är orange och 2 olika nyanser av blått. Jag försökte hålla designen så enkel som möjligt och skapade en vattendroppe som visar procentandelen i vilken utsträckning du har uppnått ditt mål för dagen.

I mitt GitHub -arkiv hittar du mitt Frontend under Kod> Frontend. Det är viktigt att du klistrar in detta i din /var /html -mapp på din Raspberry Pi för att göra det tillgängligt från webbservern.

Den består av ett par HTML -filer, som leder till de olika sidorna. Du hittar också min screen.css med all CSS du behöver för att det ska se ut som mitt projekt. Slutligen har du olika JavaScript -filer under skript. Dessa skript kommunicerar med min backend för att visa data från min databas eller backend.

Backend finns i mitt förråd under Frontend.

Steg 6: Skapa höljet

Skapar höljet
Skapar höljet
Skapar höljet
Skapar höljet
Skapar höljet
Skapar höljet

Om vi pratar om mitt fall finns det två huvuddelar:

Utvändigt hölje

Jag byggde fodralet från grunden. Jag använde plywoodplankor och sågade dem i rätt storlek. Jag skruvade ihop alla plankorna och borrade hål för LCD -skärmen, knappen, ultraljudssensorn för att upptäcka om det finns en vattenflaska och tratten för att fördela vattnet. Jag delade in mitt fodral i olika sektioner för att hålla vattnet och elektroniken åtskilda och jag använde en kabelbricka för att skydda kablarna från vattenläckage. I den bifogade videon kan du se de flesta aspekterna av mitt hölje och hur jag gjorde det. Jag har även skrivit ut en knapp i 3D som är limmad på en vanlig knapp. Slutligen använde jag en droppbricka för att fånga upp allt spillt vatten. Jag använde också gångjärn för att kunna öppna och stänga en sidopanel för att titta på min elektronik. Du kan alltid använda en begagnad dispenser eller så kan du också använda annat material.

För de exakta måtten på min byggda bifogade jag en PDF -fil med alla storlekar på plattorna som används i fodralet.

Vattentank

Vattentanken var inte ett lätt jobb. Jag fick en vattentank med ett hål på botten, så jag var tvungen att tejpa den för att stoppa läckaget. Du behöver fyra hål: ett för temperaturgivaren, ett för pumpens slang. en för slangen för att fylla tanken och en för ultraljudssensorn. För den här sista, jag 3D -tryckt ett fodral för det, som kan hittas här. Detta ger sensorn mer skydd mot vatten. Jag borrade sedan en rektangel i toppen av tanken för att vila sensorn på.

Rekommenderad: