Sadržaj:

Automatski dozator vode za praćenje potrošnje: 6 koraka
Automatski dozator vode za praćenje potrošnje: 6 koraka
Anonim
Automatski dozator vode za praćenje potrošnje
Automatski dozator vode za praćenje potrošnje
Automatski dozator vode za praćenje potrošnje
Automatski dozator vode za praćenje potrošnje

Zdravo!

Prije par mjeseci bio sam u svojoj sobi i razmišljao o tome kakav projekt želim napraviti za školski zadatak. Htela sam da napravim nešto što mi odgovara i što će mi koristiti u budućnosti. Odjednom je mama ušla u sobu i počela se žaliti da ne pije dovoljno vode. Odmah sam doživeo bogojavljenje. Došla mi je ideja da napravim automatski dozator vode (kao u kinu) koji svakodnevno prati vašu potrošnju vode.

Uz Raspberry Pi, nekoliko senzora, pumpu i malo znanja, pokušao sam ovo učiniti što boljim.

Na kraju svih koraka imat ćete radni dozator za vodu koji vam puni bocu za vodu i koji se povezuje i komunicira s vašim Raspberry Pi. Ne samo da ćete moći pratiti svoju potrošnju vode na osnovu postotka, već ćete imati i mogućnost da vidite temperaturu i nivo vode u posudi za vodu. Konačno, moći ćete provjeriti svoju statistiku. Ako vam ovo zvuči zanimljivo, svakako provjerite i probajte sami!

Spremište GitHub:

Supplies

Mikrokontroleri

Raspberry Pi 4

Senzori i moduli

Koristio sam 4 senzora:

2xHC-SR04Ultrasonični senzor

Ultrazvučni senzori mjere udaljenost pomoću ultrazvučnih valova. Senzorska glava emituje ultrazvučni talas i prima talas koji se reflektuje nazad od mete. Ultrazvučni senzori mjere udaljenost do cilja mjereći vrijeme između emisije i prijema. Koristio sam dvije od njih da provjerim postoji li boca u blizini i izmjerim udaljenost do vode u rezervoaru.

Tehnički list

1x senzor temperature DS18B20

DS18B20 je 1-žični programabilni temperaturni osjetnik koji se može programirati i integriran je. Široko se koristi za mjerenje temperature u teškim okruženjima, poput kemijskih otopina, rudnika ili tla, itd. Koristio sam ga za mjerenje temperature vode u spremniku za vodu.

Tehnički list

1x RFID modul RC522

RC522 je RFID modul od 13,56 MHz koji se temelji na kontroleru MFRC522 iz poluprovodnika NXP. Modul podržava I2C, SPI i UART i obično se isporučuje s RFID karticom i privjeskom za ključeve. Obično se koristi u sistemima pohađanja i drugim aplikacijama za identifikaciju osoba/objekata. U ovom projektu koristi se za sistem identifikacije/prijavljivanja.

Tehnički list

I 2 pokretača:

1x Peristaltička pumpa 12-24V

Koristio sam peristaltičku pumpu da dovedem vodu iz rezervoara do boce za vodu. Većina pumpi je bila prespora, pa sam se odlučio za 24V verziju koju napajam pomoću 24V adaptera za napajanje.

1x LCD ekran

LCD se koristi za prikaz IP adrese i važnih poruka. Displej sa tečnim kristalima (LCD) je ekran sa ravnim ekranom ili drugi elektronski modulirani optički uređaj koji koristi svojstva moduliranja svetlosti tečnih kristala u kombinaciji sa polarizatorima.

Tehnički list

Kućište

Kad smo već kod kućišta, uradila sam "uradi sam" sa zalihama iz kućnog skladišta (u mom slučaju Brico u Belgiji). Koristio sam šperploču koju sam izrezao na odgovarajuću veličinu. Govorit ću o tome kako sam iznio svoj slučaj u daljnjem koraku, ali evo stvari koje će vam trebati:

  • 3x daske od šperploče
  • 1x Mali lijevak
  • 1x rezervoar za vodu (možete izabrati koju količinu želite, ja sam uzeo 10L)
  • 1x posuda za kapanje

Sve materijale i cijene možete pronaći u priloženoj specifikaciji.

Korak 1: Povežite svu elektroniku

Spajanje sve elektronike
Spajanje sve elektronike
Spajanje sve elektronike
Spajanje sve elektronike

Sada kada smo saželi svu elektroniku, vrijeme je da ih povežemo. Napravio sam dva kola Fritzinga, jednu matičnu ploču i jednu shematsku, kako bih vam pokazao kako i gdje treba spojiti svu elektroniku. Link za preuzimanje Fritzinga možete pronaći ovdje: https://fritzing.org/download/. Kao što je već spomenuto, koristio sam Raspberry Pi i spojio RFID skener, dva ultrazvučna senzora, jedan temperaturni senzor, LCD i peristaltičku pumpu za vodu.

Priložio sam dva kola u PDF, ako ga želite bolje pogledati.

Korak 2: Postavljanje Raspberry Pi

Koristit ćemo naš Raspberry Pi za pokretanje i kontrolu svega: pozadine, sučelja i baze podataka.

Raspberry Pi se ne pokreće automatski. Morat ćemo proći neke korake da bismo ga počeli koristiti.

Korak 1: Raspbian

Ako koristite potpuno novi Raspberry Pi, trebat će vam raspbian. Link za preuzimanje i uputstvo možete pronaći ovdje.

Korak 2: Zapisivanje slike na SD

Sada kada imate Raspbian sliku, trebat će vam softver za pisanje slika (preporučujem win32diskimager) za pisanje datoteke slike na SD karticu. Kompletan vodič može se pronaći ovdje.

Korak 3: Prijavite se na Raspberry Pi

Otvorite "Powershell" i upišite "ssh [email protected]". Ako sve bude kako treba, od vas će tražiti lozinku (zadana lozinka je uvijek malina). Normalno, ovo bi vas trebalo prijaviti na Raspberry Pi. Sada ćemo morati unijeti neke promjene u naše postavke. Upišite sudo raspi-config u terminal i pritisnite enter. Idite na opcije lokalizacije> promijenite vremensku zonu i postavite je na svoju vremensku zonu. Također biste trebali promijeniti svoju Wi-Fi državu na svoju lokaciju. Na kraju, idite na opcije povezivanja i omogućite SPI, I2C i 1-žicu. Ovo će biti važno za ispravnu upotrebu senzora.

Korak 4: Postavljanje internetske veze

Koristit ćemo WiFi mrežu. Kućnu mrežu možete dodati putem:

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

Morat ćete ponovo pokrenuti Pi da biste uspostavili vezu. Da biste provjerili radi li, možete koristiti ifconfig da provjerite postoji li IP adresa.

Korak 5: Postavljanje web poslužitelja i baze podataka

Prvo, najbolje je ažurirati i nadograditi sistem sljedećim nizom naredbi:

  1. sudo apt dist-upgrade --auto-ukloni -y
  2. sudo apt upgrade
  3. sudo apt update
  4. sudo apt autoremove

Nakon što to učinimo, trebat će nam sljedeći paketi za naš web poslužitelj i bazu podataka:

Apache

sudo apt install apache2 -y

PHP

sudo apt install php

sudo apt install phpMyAdmin -y

Ne zaboravite postaviti sigurnu lozinku za MySQL, kada se od vas zatraži da postavite lozinku.

MariaDB

sudo apt install mariadb-server mariadb-client -y

sudo apt instalirajte php -mysql -y

sudo systemctl ponovo pokrenite apache2.service

Korak 6: Instaliranje Python biblioteka

Za pozadinu će nam trebati neke biblioteke za Python. Instalirat ćemo ih pomoću pip3, jer koristimo python3.

pip3 instalirajte mysql-connector-python

pip3 instalirajte flask-socketio

pip3 instalirajte flask-cors

pip3 install gevent

pip3 instalirajte gevent-websocket

sudo apt install python3 -mysql.connector -y

pip3 install mfrc522! (ovo će nam trebati za korištenje RFID skenera)

Korak 7: Priprema koda Visual Studio

Za pokretanje koda preporučujem korištenje Visual Studio Code za povezivanje vašeg Raspberry Pi na. Link za preuzimanje za instaliranje VSC -a možete pronaći ovdje.

Ako još nemate instaliran Remote Development pomoću SSH -a, korake za to možete pronaći ovdje.

Korak 3: Kreiranje baze podataka

Kreiranje baze podataka
Kreiranje baze podataka

Pohranit ćemo sve naše podatke senzora i korisničke podatke u bazu podataka.

Moja baza podataka se sastoji od 5 tabela:

Uređaj

Tablični uređaj ima DeviceID koji upućuje na sam uređaj. DeviceName daje naziv uređaja, u ovom slučaju ultrazvučni senzor, temperaturni senzor,… DeviceType daje vrstu uređaja (senzor ili aktuator).

istorija

Tablica Povijest sadrži svu povijest senzora, zajedno s datumom (HistoryDate) povijest je dodana i vrijednost trenutka u historiji. Takođe ima dva strana ključa:

  • DeviceID, za povezivanje određenog dnevnika s uređajem
  • UserID, za povezivanje određenog korisnika s dnevnikom (to je zato što koristimo RFID i želimo dodati dnevnik povijesti jednom određenom korisniku)

Korisnik

Tabela Korisnik se koristi za kreiranje sistema za prijavu korisnika pomoću RFID skenera. Sastoji se od nadimka, imena, prezimena, lozinke i RFID -a (ovo je RFID broj oznake). Svaki korisnik je povezan sa kontejnerom (rezervoar za vodu) i takođe nosi ID kontejnera kao strani ključ.

Kontejner

Stoni kontejner se sastoji od svih različitih kontejnera. Ima ID, ContainerLocation (ovo može biti preduzeće, dom ili bilo šta drugo). Na kraju, ima MaxLevel koji označava maksimalnu zapreminu koju kontejner ima.

Postavke

Postavke tablice imaju ID postavki i prate DailyGoal svakog korisnika + datum kada je DailyGoal dodao korisnik. Ovo objašnjava UserID vanjskog ključa.

Dump baze podataka može se pronaći u mom GitHub spremištu pod Database.

Korak 4: Postavljanje pozadine

Ne postoji projekat bez radnog okruženja.

Pozadina se sastoji od 4 različite stvari:

pomagači

Pomoćnici su sve klase koje se koriste za različite senzore i aktuatore. Postoji pomoćnik za senzor temperature (DS18B20), za ultrazvučne senzore (HCSR05) da mogu mjeriti udaljenost i da LCD može pisati poruke na ekran.

spremišta

U mapi spremišta pronaći ćete 2 Python datoteke:

  • Database.py koji je pomoćnik za uklanjanje redova iz vaše baze podataka. Olakšava izvođenje i čitanje baze podataka.
  • DataRepository.py koji sadrži sve SQL upite koji se koriste u glavnom kodu (app.py). Koriste se za dobivanje, ažuriranje ili brisanje podataka iz baze podataka.

app.py

Ovo je glavni pozadinski kôd projekta. On vrši podešavanje definirajući sve pinove i načine rada i sadrži kôd za rad pumpe, mjerenje temperature, korisnika i tako dalje. Sadrži i rute koje se koriste za preuzimanje podataka iz baze podataka i svih socketio.on's. Za svaku HTML stranicu postoji drugačiji socketio.on kako biste bili sigurni da svaka funkcija radi u točno vrijeme.

config.py

Ostala nam je jedna datoteka: config.py. Ovo je datoteka s opcijama konfiguracije za povezivanje s vašom bazom podataka. Ne zaboravite postaviti vjerodajnice za bazu podataka.

Pozadina se može pronaći u mom spremištu pod Backend.

Korak 5: Postavljanje sučelja

Postavljanje sučelja
Postavljanje sučelja
Postavljanje Frontenda
Postavljanje Frontenda

Za Frontend sam započeo s izradom dizajna kako bi moj web poslužitelj trebao izgledati u AdobeXD -u. Koristio sam boje u svom logotipu, a to su narančasta i 2 različite nijanse plave. Pokušao sam dizajn učiniti što jednostavnijim i stvorio sam kapljicu koja pokazuje postotak u kojoj ste mjeri postigli svoj dnevni cilj.

U mom spremištu GitHub -a, moj Frontend ćete pronaći pod Code> Frontend. Važno je da ovo zalijepite u svoju /var /html fasciklu Raspberry Pi da biste joj pristupili sa web servera.

Sastoji se od nekoliko HTML datoteka koje vode do različitih stranica. Naći ćete i moj screen.css sa svim CSS -ovima koji su vam potrebni kako bi izgledao kao moj projekt. Na kraju, pod skriptama ćete imati različite JavaScript datoteke. Ove skripte komuniciraju s mojom pozadinom radi prikaza podataka iz moje baze podataka ili pozadine.

Pozadina se može pronaći u mom spremištu pod Frontendom.

Korak 6: Izrada kućišta

Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta
Izrada kućišta

Ako govorimo o mom slučaju, postoje dva glavna dijela:

Vanjsko kućište

Napravio sam kućište od nule. Koristio sam daske od šperploče i rezao ih u odgovarajućim veličinama. Zašrafio sam sve daske i izbušio rupe za LCD, dugme, ultrazvučni senzor kako bih otkrio da li je prisutna boca sa vodom i lijevak za distribuciju vode. Svoje kućište podijelio sam na različite dijelove kako bi voda i elektronika bili odvojeni i upotrijebio sam nosač kablova za zaštitu kabela od curenja vode. U priloženom videu možete vidjeti većinu aspekata mog kućišta i kako sam ga napravio. Takođe sam 3D štampao dugme koje je zalijepljeno za normalno dugme. Konačno, poslužio sam posudu za kapanje da sakupim svu prolivenu vodu. Koristio sam i šarke da bih mogao otvoriti i zatvoriti bočnu ploču kako bih pogledao svoju elektroniku. Uvijek možete koristiti rabljeni dozator ili možete koristiti i druge materijale.

Za tačna mjerenja moje građe, priložio sam PDF sa svim veličinama ploča koje se koriste u kućištu.

Rezervoar za vodu

Rezervoar za vodu nije bio lak posao. Dobio sam rezervoar za vodu sa rupom na dnu, pa sam morao da ga zalijepim da spriječim curenje. Trebat će vam četiri rupe: jedna za osjetnik temperature, jedna za cijevi vaše pumpe. jedan za cijevi za ponovno punjenje spremnika i jedan za ultrazvučni senzor. Za ovaj posljednji, 3D sam mu odštampao futrolu, koju možete pronaći ovdje. Ovo daje senzoru veću zaštitu od vode. Zatim sam izbušio pravokutnik na vrhu rezervoara, kako bih postavio senzor.

Preporučuje se: