Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-23 14:37
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
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:
- sudo apt dist-upgrade --auto-ukloni -y
- sudo apt upgrade
- sudo apt update
- 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
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
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
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:
Automatski dozator za dezinfekciju ruku: 6 koraka
DIY automatski dozator za dezinfekciju ruku: U ovom projektu izgradit ćemo dozator za automatsko dezinfekciju ruku. Ovaj projekt će 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 sa Esp32: 9 koraka
Automatski dozator alkohola u gelu sa Esp32: U vodiču ćemo vidjeti kako napraviti kompletan prototip, kako sastaviti automatski dozator alkohola u obliku gela sa esp32, on će uključivati postupnu montažu, elektroničko kolo, a također i izvorni kod objašnjen sve korak po korak
Automatski dozator lijekova: 5 koraka
Automatski dozator za lijekove: Ovaj projekt je za upotrebu u medicini, gdje stariji pacijenti moraju imati pouzdan način za porcioniranje i izdavanje lijekova. Ovaj uređaj omogućava dijeljenje lijekova do 9 dana unaprijed i automatsko izdavanje po želji
Automatski dozator za dezinfekciju ruku: 3 koraka
Automatski dozator za dezinfekciju ruku: Ovaj automatski dozator za dezinfekciju ruku dizajniran je da bude relativno jeftina opcija koja se lako sastavlja. Većina potrebnih artikala može se kupiti od vaših lokalnih prodavača hardvera i elektronike. Postoji mogućnost 3D štampanja
Automatski sistem za praćenje riječne vode: 14 koraka
Automatizirani sistem za praćenje riječne vode: Ovaj se vodič koristi za dokumentiranje razvoja automatiziranog sistema za praćenje riječne vode. Praćeni parametri su nivo vode i temperatura vode. Cilj ovog projekta bio je razviti jeftin i nezavisan drvosječa koji će