Sadržaj:
- Pribor
- Korak 1: Spajanje sve elektronike
- Korak 2: Postavljanje Raspberry Pi
- Korak 3: Stvaranje baze podataka
- Korak 4: Postavljanje pozadine
- Korak 5: Postavljanje sučelja
- Korak 6: Izrada kućišta
Video: Automatski dozator vode za praćenje potrošnje: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:33
Bok tamo!
Prije nekoliko mjeseci bio sam u svojoj sobi i razmišljao o tome kakav projekt želim napraviti za školski zadatak. Htio sam napraviti 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 imao 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 temelju postotka, već ćete također imati priliku vidjeti temperaturu i razinu vode u spremniku za vodu. Konačno, moći ćete provjeriti svoju statistiku. Ako vam ovo zvuči zanimljivo, svakako provjerite i probajte sami!
Spremište GitHub:
Pribor
Mikrokontroleri
Malina Pi 4
Senzori i moduli
Koristio sam 4 senzora:
2xHC-SR04Ultrazvučni senzor
Ultrazvučni senzori mjere udaljenost pomoću ultrazvučnih valova. Senzorska glava emitira ultrazvučni val i prima val reflektiran natrag 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 u blizini boca i izmjerim udaljenost do vode u spremniku.
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 poluvodiča 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 sustavima prisutnosti i drugim aplikacijama za identifikaciju osoba/predmeta. U ovom projektu koristi se za sustav identifikacije/prijave.
Tehnički list
I 2 pokretača:
1x Peristaltička pumpa 12-24V
Koristio sam peristaltičku pumpu da vodu iz spremnika dovedem u bocu s vodom. Većina crpki bile su presporo, pa sam se odlučio za 24V verziju koju napajam pomoću 24V adaptera za napajanje.
1x LCD zaslon
LCD se koristi za prikaz IP adrese i važnih poruka. Zaslon s tekućim kristalima (LCD) je zaslon ravnog ekrana ili drugi elektronički modulirani optički uređaj koji koristi svjetlo modulirajuća svojstva tekućih kristala u kombinaciji s polarizatorima.
Tehnički list
Kućište
Kad smo već kod kućišta, uradila sam 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 što će vam trebati:
- 3x daske od šperploče
- 1x Mali lijevak
- 1x spremnik vode (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: Spajanje sve elektronike
Sada kada smo saželi svu elektroniku, vrijeme je da ih povežemo. Napravio sam dva kruga Fritzinga, jednu ploču i jednu shemu, 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, upotrijebio 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 kruga 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 vodič mogu se 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 slikovne datoteke na SD karticu. Cijeli vodič može se pronaći ovdje.
Korak 3: Prijava na Raspberry Pi
Otvorite "Powershell" i upišite "ssh [email protected]". Ako sve bude kako treba, od vas će tražiti lozinku (zadana lozinka uvijek je 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 sučelja i omogućite SPI, I2C i 1-žicu. Za ispravnu uporabu senzora bit će važno.
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 ponovno pokrenuti Pi da biste uspostavili vezu. Da biste provjerili radi li, pomoću ifconfig provjerite postoji li IP adresa.
Korak 5: Postavljanje web poslužitelja i baze podataka
Prvo je najbolje ažurirati i nadograditi sustav sljedećim nizom naredbi:
- sudo apt dist-upgrade --auto-ukloni -y
- sudo apt nadogradnja
- sudo apt ažuriranje
- sudo apt autoremove
Nakon što to učinimo, trebat će nam sljedeći paketi za naš web poslužitelj i bazu podataka:
Apač
sudo apt install apache2 -y
PHP
sudo apt install php
sudo apt install phpMyAdmin -y
Ne zaboravite postaviti sigurnu lozinku za MySQL, kada od vas zatraži da postavite lozinku.
MariaDB
sudo apt install mariadb-server mariadb-client -y
sudo apt install php -mysql -y
sudo systemctl ponovno pokrenite apache2.service
Korak 6: Instaliranje knjižnica Python
Za pozadinu će nam trebati neke knjižnice za Python. Instalirat ćemo ih pomoću pip3, jer koristimo python3.
pip3 instalirajte mysql-konektor-python
pip3 instalirajte flask-socketio
pip3 instalirajte flask-cors
pip3 instalirajte gevent
pip3 instalirajte gevent-websocket
sudo apt install python3 -mysql.connector -y
pip3 instalirajte 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: Stvaranje baze podataka
Pohranit ćemo sve naše podatke senzora i korisničke podatke u bazu podataka.
Moja baza podataka sastoji se od 5 tablica:
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, osjetnik temperature,… DeviceType daje vrstu uređaja (senzor ili aktuator).
Povijest
Tablica Povijest sadrži svu povijest senzora, zajedno s datumom (HistoryDate) povijest je dodana i vrijednost trenutka u povijesti. Također ima dva strana ključa:
- DeviceID, za povezivanje određenog dnevnika s uređajem
- UserID, za povezivanje određenog korisnika s zapisnikom (to je zato što koristimo RFID i želimo dodati zapisnik povijesti jednom određenom korisniku)
Korisnik
Tablica Korisnik se koristi za stvaranje sustava za prijavu korisnika pomoću RFID skenera. Sastoji se od nadimka, imena, prezimena, lozinke i RFID -a (ovo je RFID broj oznake). Svaki je korisnik povezan s spremnikom (vodeni spremnik), a nosi i ID kontejnera kao strani ključ.
Kontejner
Stolni spremnik sastoji se od svih različitih kontejnera. Ima ID, ContainerLocation (ovo može biti poduzeće, dom ili bilo što drugo). Na kraju, ima MaxLevel koji označava maksimalni volumen koji spremnik 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 mojem GitHub spremištu pod Database.
Korak 4: Postavljanje pozadine
Nema projekta bez radnog pozadinskog prostora.
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 osjetnik temperature (DS18B20), za ultrazvučne senzore (HCSR05) da mogu mjeriti udaljenost i da LCD može pisati poruke na zaslon.
spremišta
U mapi spremišta pronaći ćete 2 Python datoteke:
- Database.py koji pomaže u uklanjanju redaka 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. Postavlja postavke definirajući sve pinove i načine rada i sadrži kôd za rad pumpe, dobivanje temperature, dobivanje korisnika itd. Također sadrži rute koje se koriste za dohvaćanje 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
Za Frontend sam započeo s izradom dizajna kako bi moj web poslužitelj trebao izgledati u AdobeXD -u. Iskoristio 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 prikazuje postotak u kojoj ste mjeri postigli svoj dnevni cilj.
U mojem spremištu GitHub ćete pronaći moj Frontend pod Code> Frontend. Važno je da ovo zalijepite u mapu /var /html svoje Raspberry Pi kako biste je mogli pristupiti s web poslužitelja.
Sastoji se od nekoliko HTML datoteka koje vode do različitih stranica. Naći ćete i moj screen.css sa svim CSS -ima 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 za prikaz 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
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 ispravnih veličina. Zašrafio sam sve daske i izbušio rupe za LCD, gumb, ultrazvučni senzor kako bih otkrio ima li prisutna boca vode i lijevak za raspodjelu vode. Svoje sam kućište podijelio na različite dijelove kako bi voda i elektronika bili odvojeni te sam koristio 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đer sam 3D ispisao gumb koji je zalijepljen na uobičajeni gumb. Konačno, poslužio sam posudu za kapanje da sakupim svu prolivenu vodu. Također sam koristio šarke kako 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 točne mjere moje građe, priložio sam PDF sa svim veličinama ploča koje se koriste u kućištu.
Spremnik za vodu
Spremnik vode nije bio lak posao. Dobio sam rezervoar za vodu s rupom na dnu, pa sam ga morao zalijepiti da bih zaustavio curenje. Trebat će vam četiri rupe: jedna za osjetnik temperature, jedna za cijevi vaše crpke. jedan za cijevi za ponovno punjenje spremnika i jedan za ultrazvučni senzor. Za ovaj zadnji, 3D sam mu ispisao kućište, koje se može pronaći ovdje. To daje senzoru veću zaštitu od vode. Zatim sam izbušio pravokutnik na vrhu spremnika, kako bih postavio senzor.
Preporučeni:
Automatski dozator za dezinfekciju ruku: 6 koraka
DIY automatski dozator za dezinfekciju ruku: U ovom projektu izgradit ćemo dozator za automatsko dezinfekciju ruku. Ovaj će projekt koristiti Arduino, ultrazvučni senzor, pumpu za vodu i dezinfekcijsko sredstvo za ruke. Ultrazvučni senzor koristi se za provjeru prisutnosti ruku ispod izlaza uređaja za dezinfekciju
Automatski dozator alkohola u gelu s Esp32: 9 koraka
Automatski dozator alkohola u gelu s Esp32: U vodiču ćemo vidjeti kako izraditi potpuni prototip, sastaviti automatski dozator alkohola u alkoholu s esp32, on će uključivati postupnu montažu, elektronički krug, a također i izvorni kod koji je objašnjen sve korak po korak
Automatski dozator lijekova: 5 koraka
Automatski dozator lijekova: Ovaj projekt namijenjen je upotrebi u medicini, gdje stariji pacijenti moraju imati pouzdan način za porcioniranje i izdavanje lijekova. Ovaj uređaj omogućuje dijeljenje lijekova do 9 dana unaprijed i automatsko izdavanje po želji
Automatski sustav za praćenje riječne vode: 14 koraka
Automatizirani sustav za praćenje riječne vode: Ovaj se vodič koristi za dokumentiranje razvoja automatiziranog sustava za nadzor riječne vode. Praćeni parametri su razina vode i temperatura vode. Cilj ovog projekta bio je razviti jeftin i neovisan drvosječu koja će
Dozator vode s 5 galona kontroliran nožnom papučicom: 3 koraka
Dozator za vodu s 5 galona kontroliran nožnom papučicom: U nekim zemljama poput mojega (Turska) imamo problema s ručnim pumpama za isporuku vode iz spremnika. Neke su ručne pumpe glomazne, a mala djeca imaju problem s osiguravanjem potrebne snage. Pa sam razmišljao o nozi